如何在聊天机器人中管理上下文/状态?

时间:2017-07-20 18:01:22

标签: redis bots botframework telegram-bot facebook-messenger-bot

我正在使用Python,芹菜和MS bot框架开发聊天机器人。我想添加如下的小对话框:

  

用户:您好

     

用户:订购我的薯条。

     

Bot:好的。地址?

     

用户:xyz,state,82288

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

在这里,如何在用户提供地址后暂时存储 fries 来访问它?

此外,我认为如果用户在2-3分钟内没有回复,我的用例应该可以忘记订单是什么。所以,我也可以对存储的变量进行超时。

我想过使用redis。我想在redis db中存储类似下面的内容:

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

基本上是key = conversationId和value ='order,address'的键值对。

那么,这看起来不错吗?

1 个答案:

答案 0 :(得分:3)

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

机器人可以管理3种类型的状态数据,开箱即用:

  1. 特定频道(UserData)上的用户的状态数据
  2. 特定频道上对话的状态数据(ConversationData)
  3. 特定会话(PrivateConversationData)上下文中用户的状态数据