Возможно ли по-прежнему отвечать непосредственно на HTTP-сообщение о событии slack сообщением для отправки?

#python #slack-api

#python #slack-api

Вопрос:

Я знаю, что когда происходит событие slack, оно приходит к вам как сообщение HTTP (https://api.slack.com/events-api ). Есть ли способ указать сообщение для отправки внутри тела ответа? Я следил за этим (https://medium.com/@vinodhinic/lessons-i-learnt-while-building-slack-apps-3ecc6c929180 ) и надеясь, что смогу сделать то же самое.

Ответ №1:

Нет. В документации не указано, что вы можете, и если бы вы могли, в документации это было бы четко указано. Некоторые другие API для обмена сообщениями (например, Twilio).

Даже если бы вы могли, есть очень веская причина, по которой вы не должны этого делать, это указано в документации Slack:

Ваше приложение должно ответить на запрос события HTTP 2xx в течение трех секунд. Если этого не произойдет, мы будем считать попытку доставки события неудачной. После сбоя мы повторим попытку три раза, отступая экспоненциально.

Поддерживайте вероятность успешного ответа не менее 5% событий за 60 минут, чтобы предотвратить автоматическое отключение.

Отвечайте на события с помощью HTTP 200 OK, как только сможете. Избегайте фактической обработки и реагирования на события в рамках одного процесса. Внедрите очередь для обработки входящих событий после их получения.

Если ваш код выполняет работу (т. Е. Ищет данные в базе данных, выполняет какие-либо вычисления или выполняет сетевой запрос), чтобы подготовить ответ для отправки обратно, вы рискуете, что эта работа займет слишком много времени (блокировка) и не отправит обратно 200 OK вовремя,это означает, что ваш клиент ведет себя не в соответствии со спецификацией в документации. Как рекомендует документация, обрабатывайте поступающие события webhook, помещая их в очередь, а затем отправляйте ответы на основе того, что находится в очереди.