node.js - 如何在不同 Node 之间持久保存对话数据?

标签 node.js botframework

正如 Microsoft Bot Framework 文档中所述,它们具有不同类型的数据。其中之一是dialogData、privateConversationData、conversationData 和userData。

默认情况下,似乎 userData 已经/应该准备好处理跨 Node 的持久性,但是dialogData 应该用于临时数据。

正如这里所说:https://learn.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-dialog-waterfall

If the bot is distributed across multiple compute nodes, each step of the waterfall could be processed by a different node, therefore it's important to store bot data in the appropriate data bag

所以,基本上,如果我有两个 Node ,我应该如何/为什么使用dialogData,因为我不能保证它会跨 Node 保存?看来如果你有多个 Node ,你应该只使用 userData。

最佳答案

我已要求文档团队删除这句话的最后部分:“因此,将机器人数据存储在适当的数据包中非常重要”。这是误导性的。 Bot Builder 是安静且无状态的。每个dialogData、privateConversationData、conversationData 和userData 都存储在状态服务中:因此任何“计算 Node ”都能够从任何这些对象中检索数据。

请注意:默认的连接器状态服务仅用于原型(prototype)设计,不应与生产机器人一起使用。请使用Azure Extensions或实现自定义状态客户端。

这篇博文可能也会有帮助:Saving State data with BotBuilder-Azure in Node.js

关于node.js - 如何在不同 Node 之间持久保存对话数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46923122/

相关文章:

azure - 服务错误 机器人应该使用自己的存储

javascript - 如何使用node.js和gm检查损坏的jpg图像?

botframework - MS bot 使用 postman 进行本地测试

c# - 我们如何将用户和机器人消息记录到微软机器人框架中的cosmos db

mysql - 为什么即使我在 POSTMAN 中插入数据,我的数据库仍显示未定义?

c# - 让机器人每天在特定时间发送消息

.net - [MsTeams][BotFrameworkV4][自适应卡 ] 团队中可滚动自适应卡

node.js - 检查数组以及是否每 2 个元素缺少一个值

javascript - Mongoose getter正在获取未定义的参数

node.js - 如何在同一结果中显示两个单独的子文档?