Может Hubot Slack сессии магазина бота
Я пытаюсь реализовать простой вялый бот. Итак, я настроил hubot
который будет принимать входные данные от slack
и передать его в мое веб-приложение (django app
) и он примет любой ответ от django-app
и ответит на провисание.
В этом процессе я пытаюсь сохранить сессию в django
с помощью request.session
но это не отражено в slack
, Если я получаю доступ к django-url
в браузере он может хранить сеансы и получать правильный ответ с сеансом.
Так проблема заключается в slack
или мой подход и есть ли способ хранить сеансы в hubot при запросе django-app
??
1 ответ
Я не могу говорить о конкретных технологиях, которые вы используете (hubot, django), но я все время использую сеансы сервера с моими приложениями Slack и могу дать вам общий ответ о том, как это работает. Обратите внимание, что мои приложения Slack созданы на PHP, но я думаю, можно с уверенностью предположить, что принципы одинаковы.
Slack не поддерживает сессии
В общем, Slack не поддерживает сессии или контекст. Вместо этого все основано на запросах. Поэтому, если вы хотите, чтобы сеансы содержали функциональный контекст между запросами, вам нужно организовать это самостоятельно в своем приложении Slack.
Проблема использования серверных сессий с запросами к серверу
Одна из проблем заключается в том, что большинство серверных сеансов предназначены для работы с клиентом, использующим браузер. Например, сеанс PHP-сервера будет хранить cookie в браузере, чтобы сервер знал, какие запросы принадлежат одному и тому же сеансу. Это, очевидно, не работает со Slack, поскольку все запросы Slack поступают с сервера, а браузер не задействован.
Подход к использованию серверных сессий со Slack
Но вы можете использовать серверную сессию со Slack с этими двумя приемами:
Установите идентификатор сессии вручную
Обычно идентификатор сеанса выбирается сервером автоматически, но вы также можете установить его вручную. Это позволяет указать серверу продолжить существующий сеанс, который был запущен с предыдущим запросом.
Включить идентификатор сессии в элемент управления Slack
Функциональный сеанс пользователя связан с помощью элементов управления Slack, которые он использует. (например, интерактивная кнопка). В эти элементы управления можно включать пользовательские данные (подробности см. В этом ответе), и это позволяет вам включать в него идентификатор текущей сессии.
Полный подход
Вы включаете идентификатор вашей текущей сессии в элементы управления Slack, которые вы создаете с помощью своего приложения (например, интерактивная кнопка). Как только пользователь нажмет кнопку, Slack отправит запрос в ваше приложение, в котором будет указан идентификатор сессии. Это позволяет вашему приложению продолжать уже запущенный сеанс сервера.