我怎样才能坚持不同的节点对话数据?

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

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

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

如果bot分布在多个计算节点上,则瀑布的每一步都可以由不同的节点处理,因此将bot数据存储在适当的数据包中很重要

所以,基本上,如果我有两个节点,那么为什么我应该使用dialogData,因为我不能保证它将保存在节点上? 看来,如果你有多个节点,你应该只使用userData。

我已经要求文档团队删除句子的最后部分:“因此将bot数据存储在适当的数据包中是很重要的”。 这是误导。 Bot生成器是宁静的和无状态的。 dialogData,privateConversationData,conversationData和userData中的每一个都存储在State Service中:所以任何“计算节点”都能够从这些对象中检索数据。

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

这个博客文章也可能有帮助: 在Node.js中使用BotBuilder-Azure保存状态数据