正如 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/