Django Hubot Slack机器人能否存储会话

Django Hubot Slack机器人能否存储会话,django,slack-api,hubot,Django,Slack Api,Hubot,我正在尝试实现简单的slackbot。因此,我已经配置了hubot,它将从slack获取输入并将其传递给我的webapp(django-app),它将接收来自django-app的任何响应,并回复slack 在此过程中,我尝试使用request.session将会话存储在django中,但这并没有反映在slack中。如果我在浏览器中访问django url,它就能够存储会话并获得会话的正确响应 那么,问题是在于slack还是我的方法,当请求django应用程序时,有没有办法在hubot中存储会话

我正在尝试实现简单的slackbot。因此,我已经配置了
hubot
,它将从
slack
获取输入并将其传递给我的webapp(
django-app
),它将接收来自
django-app
的任何响应,并回复slack

在此过程中,我尝试使用
request.session
将会话存储在
django
中,但这并没有反映在
slack
中。如果我在浏览器中访问
django url
,它就能够存储会话并获得会话的正确响应


那么,问题是在于
slack
还是我的方法,当请求
django应用程序时,有没有办法在hubot中存储会话?

我不能谈论您使用的特定技术(hubot,django),但我一直在使用服务器会话和我的slack应用程序,并且可以给您一个关于它如何工作的一般答案。请注意,我的Slack应用程序是用PHP构建的,但我认为可以安全地假设这些原则是相同的

Slack不支持会话

通常,Slack不支持会话或上下文。相反,一切都是基于请求的。所以,如果你想让会话在请求之间保持一个功能上下文,你需要自己在Slack应用程序中组织它

在服务器请求中使用服务器会话的挑战

一个挑战是,大多数服务器会话设计为与使用浏览器的客户端一起工作。e、 PHP服务器会话将在浏览器中存储cookie,以便服务器知道哪些请求属于同一会话。这显然不适用于Slack,因为所有Slack请求都来自服务器,并且不涉及浏览器

使用具有空闲时间的服务器会话的方法

但您可以通过以下两个技巧使用服务器会话:

手动设置会话ID

通常,会话ID由服务器自动选择,但也可以手动设置。这允许您告诉服务器继续使用以前的请求启动的现有会话

在松弛控制中包括会话ID

用户的功能会话由其使用的松弛控件连接在一起。(例如,交互式按钮)。可以在这些控件中包含自定义数据(有关详细信息,请参阅),并允许您在其中包含当前会话ID

完全接近

将当前会话的ID包括在Slack控件中,该控件由应用程序创建(例如,交互式按钮)。一旦用户单击按钮,Slack将向您的应用程序发送请求,其中将包括会话ID。这将允许您的应用程序继续已启动的服务器会话