Может 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 отправит запрос в ваше приложение, в котором будет указан идентификатор сессии. Это позволяет вашему приложению продолжать уже запущенный сеанс сервера.

Другие вопросы по тегам