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

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

我正在使用 Python、celery 和 MS 机器人框架开发聊天机器人。我想添加如下小对话框:

User: Hi

User: Order me fries.

Bot: ok. address?

User: xyz, state, 82288

Bot: Got it. I will order fries for you.

这里,如何在用户给我地址后临时存储fries来访问它?

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

我想到了用redis。我正在考虑在 redis 数据库中存储如下内容:

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

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

那么,这看起来是个不错的选择吗?

最佳答案

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

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

  1. 特定 channel 上用户的状态数据 (UserData)
  2. 声明特定 channel 上对话的数据 (ConversationData)
  3. 在特定对话的上下文中为用户声明数据 (PrivateConversationData)

关于redis - 如何在聊天机器人中管理上下文/状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45222073/

相关文章:

node.js - Redis 在一个命令中获取 TTL 和键的值 - nodejs redis

asp.net-core - 使用 Bot 框架在 Microsoft Teams 上发送主动消息

botframework - 部署自定义网络聊天机器人框架

database - 改善快速增长的数据库中的查询时间?

Redis 慢日志显示问题?

redis - 使用通配符查找键

xcode - 机器人创建失败,错误为 : An SSL error has occurred and a secure connection to the server cannot be made

c# - Azure Bot Framework FormFlow 复杂表单

python - 显示 json python discord bot

javascript - 单击菜单项机器人框架向机器人发送消息