0

我正在开发一个使用Python,芹菜和MS bot框架的聊天机器人。我想补充的小对话框,如下所示:如何在聊天机器人中管理上下文/状态?

用户:您好

网友:给我来薯条。

机器人:好的。地址?

用户:xyz,state,82288

Bot:明白了。我会为你点炸薯条。

在这里,我怎么能暂时存储薯条之后用户才能访问它给我的地址吗?

此外,我觉得应该可以接受我的用例,如果用户在2-3分钟内没有响应,忘记命令是什么。所以,我也可以有一个超时的存储变量。

我想过使用redis。我想存储的东西就像是Redis的分贝以下内容:

{ 
'conversationId':['orderitem':'fries','address':'state, pincode'] 
} 

基本上是一个键,值对键=的conversationId和值=“的顺序地址”。

那么,这看起来不错吗?

+1

它使用Redis的一个不错的选择,但更好的做法,心里有这些中的用户状态数据:1.使用JSON形成ats保存数据。 2.你也应该有redis数据超时。因此,每当redis超时时,将用户数据保存在文件中是很好的做法。然后,只要用户再次返回,您就可以检索自己的状态。这样,你永远不会放松用户的状态。 – tashakori

回答

3

您应该考虑使用Bot State REST API来管理bot中的状态。

机器人程序可以管理3种类型的状态数据,外的现成:

  1. 用于在特定信道的用户(的UserData)
  2. 用于在通话状态数据状态数据特定通道(ConversationData)
  3. 特定会话(PrivateConversationData)上下文
+0

我已经通过了。第一段本身以下面的注释结尾: **重要**: 'Bot State服务仅用于原型设计,不适用于生产环境中的机器人使用。出于性能和安全原因,您应该实施自己的管理生产环境中的状态数据的机制。' –

+0

在这里您可以看到一些自定义实现:https://github.com/Microsoft/BotBuilder-Azure/tree/master/CSharp /Library/Microsoft.Bot.Builder.Azure –