Неверная метка времени запроса в slackeventsapi.server.SlackEventAdapterException.Python

Программы на Python
Ответить
Anonymous
 Неверная метка времени запроса в slackeventsapi.server.SlackEventAdapterException.

Сообщение Anonymous »

Я пытаюсь создать своего первого Slack-бота, который использует Flask в качестве сервера для генерации ответов на сообщения в канале бота. Вкратце, мои действия были такими:
  • создать приложение Slack, создать подписки на события (упоминания, сообщения и т. д.), получить все необходимые ключи
  • создать подписку на события с помощью инструмента ngrok, который туннелирует ответы из моего локально работающего приложения Flask на общедоступный URL-адрес
  • кодировать логику бота и помещать ее в приложение Flask< /li>
Все было хорошо с ngrok, но когда я попробовал рабочий сервер, я не смог проверить URL-адрес запроса, получив сообщение. Ваш URL-адрес не ответил значением параметра вызова. После некоторого чтения я подумал, что, возможно, я необходимо реализовать специальный метод, который будет возвращать этот параметр. На этот раз я сократил логику до очень простой реализации, но все равно получаю еще одну ошибку: slackeventsapi.server.SlackEventAdapterException: неверная временная метка запроса. Вот моя реализация:

Код: Выделить всё

import os
from flask import Flask, request
from slackeventsapi import SlackEventAdapter
app = Flask(__name__)
slack_bot_user_id = os.getenv('SLACK_BOT_USER_ID')
slack_events_adapter = SlackEventAdapter(os.getenv('SLACK_SIGNING_SECRET'), '/slack/events', app)

@app.route('/slack/events', methods=['POST'])
def get_events():
# print(request)
return request.json['challenge']

@slack_events_adapter.on('message')
def handle_message(event_data):
print(event_data)

if __name__ == '__main__':
app.run(port=8000, host='0.0.0.0')
Я думаю, что следую чему-то похожему на рекомендации из репозитория пакетов Python slackeventsapi, и, насколько я понимаю, это следующее:
< ul>
в строке 6 я определяю адаптер, который соединяет серверное приложение Flask с приложением Slack
[*]в строках 9–13 я определяю функцию, которая будет возвращать " вызов» по ​​запросу событий API
[*](строки 15–17 — это заполнители для фактической реализации логики; будут заполнены после успешной проверки приложения).

Я пытаюсь протестировать приложение с помощью команды

Код: Выделить всё

curl -X POST -d '{"challenge": "empty"}' -H "Content-Type: application/json" 127.0.0.1:8000/slack/events
и получите обратную трассировку ошибок, которая никогда не попадет внутрь функции get_events:

Код: Выделить всё

Traceback (most recent call last):
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/slackeventsapi/server.py", line 94, in event
self.emitter.emit('error', slack_exception)
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/pyee/base.py", line 211, in emit
self._emit_handle_potential_error(event, args[0] if args else None)
File "/Users/rsuleimanov/Documents/llm_deeds/langchainenv/lib/python3.9/site-packages/pyee/base.py", line 169, in _emit_handle_potential_error
raise error
slackeventsapi.server.SlackEventAdapterException: Invalid request timestamp
Чего мне не хватает и как может выглядеть решение?
UPD: я мог бы сделать обходной путь, передавая заголовок, например -H "X- Slack-Request-Timestamp: 1717762997", но затем натыкаюсь на ошибку. Неверная подпись запроса (которая следует этой логике), которую, я думаю, я могу решить, но все же я уверен, что это не так, как должно быть. быть обработано. Возникает главный вопрос: как пройти проверку Slack Events?

Подробнее здесь: https://stackoverflow.com/questions/785 ... rexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»