如何访问Microsoft Bot Framework上的用户数据?

时间:2017-06-01 13:27:47

标签: javascript botframework

如果我正确userDataprivateConversationData等存储在某个远程数据库中。如何访问此数据库(例如在测试过程中清除它)?

2 个答案:

答案 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存储。