如果我正确userData
,privateConversationData
等存储在某个远程数据库中。如何访问此数据库(例如在测试过程中清除它)?
答案 0 :(得分:1)
由于没有指定,我将假设您正在使用C#。
如果您能够使用IDialogContext对象,您可以使用它来访问这些商店。
//Access private conversation data
context.PrivateConversationData
//Access user data
context.UserData
//Access conversation data
context.ConversationData
在此之后,您可以使用几种方法。最重要的是TryGetValue(..)
,SetValue(..)
和RemoveValue(..)
。
答案 1 :(得分:1)
对于基本实现,无法访问“所有用户状态数据库”,您只能按用户执行操作(如/deleteprofile
)。
documentation添加了一个名为How do I version the bot data stored through the State API?
的章节:
State Service允许您通过对话框保持进度 在对话中,以便用户可以返回与对话 僵尸几天后不会失去他们的位置。 但如果你改变你的 bot的代码,通过State API存储的bot数据属性包 不会自动清除。你将不得不决定机器人 应根据您的新代码是否兼容来清除数据 使用旧版本的数据。你可以在几个完成此任务 方法:
- 在开发机器人期间,如果要手动重置对话的对话框和状态,可以使用/ deleteprofile 命令(带有前导空格,因此它不被解释 清除状态。
- 在机器人的生产使用期间,您可以对机器人数据进行版本控制,以便在碰撞版本时清除相关数据。这个 可以使用现有的中间件或在C#中在Node中完成 使用IPostToBot实现。
如果对话框堆栈无法正确反序列化(由于 序列化格式更改或因为代码也发生了更改 很多),会话状态将被重置。
另请参阅BotBuilder Github上关于存储的topic。 而这question也是关于州的安全性
由于Microsoft提供的BotBuilder-Azure
扩展名,您可以将自己的Azure存储用于您的机器人。
可以在github上使用here而且:
使bot开发人员能够将僵尸程序与特定Azure集成 组件。
Azure表存储:允许僵尸程序开发人员将僵尸程序状态存储在他们自己的Azure存储帐户中。
DocumentDB:允许僵尸开发者在DocumentDB中存储僵尸状态
因此,一旦设置完毕,您就可以使用javascript获取数据,因为它是您自己的Azure存储。