【发布时间】:2018-05-27 07:13:24
【问题描述】:
我正在使用 Node.JS 中的 MS Bot 框架开发一个机器人。我正在阅读有关保存/检索与机器人的用户对话状态的各种方法的文档。
据我了解,对于每个机器人,每个用户都是不同的对话。例如我有 2 个机器人,BOT-A 和 BOT-B。拥有 Skype ID abc.skype 的用户可以访问这些机器人。将使用每个机器人的不同对话 ID 和用户 ID 来识别此用户。 IE。对于 BOT-A,用户的对话 ID 将为“ABC”,而对于 BOT-B,对话 ID 将为“XYZ”。会话对象中的 userID 字段将保存可以识别用户的数据,例如用户在频道中公开可见的名称。
根据文档 (saving-state)
userData 为用户在所有对话中全局存储信息。
- 这里的全局是什么意思?
- 所有对话中的含义是什么?
conversationData 为单个对话全局存储信息。此数据对对话中的每个人都是可见的,因此在将数据存储到此属性时要小心谨慎。它默认启用,您可以使用机器人的 persistConversationData 设置禁用它。
- 单次对话是什么意思?
- 每个人都可以看到哪些数据?数据如何可见 每个人,当由机器人决定时,发送什么响应 回复或每个用户的消息?每个人都是谁?
privateConversationData 为单个对话全局存储信息,但它是特定于当前用户的私有数据。此数据跨越所有对话,因此对于存储您希望在对话结束时清理的临时状态很有用。
dialogData 保留单个对话实例的信息。这对于在对话中的瀑布步骤之间存储临时信息至关重要。
保存状态的实际存储机制/位置是什么?我的意思是,如果我在session.userData 中保存一些数据并在一周后为同一个用户访问它,我怎么会得到相同的数据。数据实际保存在哪里?
如果我将 persistUserData 和 persistConversationData 设置为 false 会发生什么?这是否意味着 userData 和 conversationData 不会被持久化。如果是,那么它本质上意味着我无法保存数据。不是吗?或者这意味着什么不同?
任何人都可以分享任何有多个用户在同一个覆盖范围内的例子吗? 或者一个演示这些不同数据保存方法的功能(优点和缺点)的示例。
我参考的资源:
https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-state
【问题讨论】:
标签: node.js botframework