【问题标题】:How to Store Conversation reference(dictionary) into Azure DB Storage如何将对话参考(字典)存储到 Azure DB 存储中
【发布时间】:2020-04-08 01:19:04
【问题描述】:

我正在使用 nodejs 中的 Bot framework v4 开发一个机器人。 我希望将每个用户的对话参考存储到 azure db 中。 对话参考采用嵌套字典格式。 {'convid':{"a":'value","b":"value"}}

我希望将此字典存储在 Azure DB 中(哪个 Db 合适?免费版本?付费?)以便我以后可以检索此 DB 并向所有存储了 conv ref 的用户发送主动消息。

我只想知道如何使用节点 js 将字典存储到任何 azure DB 中? 并稍后检索它?任何帮助将不胜感激。

【问题讨论】:

    标签: node.js botframework microsoft-teams


    【解决方案1】:

    在(私人)对话期间保存对话参考可以使用以下 sn-p 来实现。

    conversationReference = TurnContext.getConversationReference(context.activity);
    

    您最终可以使用 Cosmos Javascript SDK 将此 JSON 直接保存到 CosmosDB。

    const databaseDefinition = { id: "sample database" };
    const collectionDefinition = { id: "sample collection" };
    
    const { database } = await client.databases.create(databaseDefinition);
    const { container } = await database.containers.create(collectionDefinition); 
    
    const { resource } = await container.items.create(conversationReference); 
    

    【讨论】:

    • 同样在上述逻辑中,它会继续追加资源吗?因为越来越多的用户没有与机器人聊天......稍后我需要检索资源并检查是否存在特定的对话 ID在数据库中直接使用 if 条件。即 if(resource('convid') exists) 而不是循环存储在资源中的所有 convid 并比较该 covid 存在与否。
    • 另外,Mick 给出的代码是 cosmo 数据库的 SQL API,我相信它在 JSON 上运行得非常好。我的 azure 帐户已经有一个 cosmo db ,其中正在使用 Mongo API。在其上添加 SQL API 会产生额外费用吗?
    • 如果您知道如何使用 Mongo,也可以使用 Mongo SDK 写入现有的 Mongo API 容器!顺便说一句,现在CosmosDB also offers a free tier
    • 感谢您的建议.. 再问一个问题。我在代码中使用了 Object.values(conversationReferences) 的 const conversationReference 来检索所有与机器人进行过迭代的用户,以便向他们发送主动消息。我注意到,无论何时重新启动服务器,都没有用户被保存.这意味着对话引用会从内存中删除。在生产中,由于不会有任何服务器刷新,这种逻辑是否可行?
    • @sree 在内存中保存会话引用在生产环境中是一种不好的做法。如果您需要横向扩展(多台服务器)怎么办?在生产中,服务器也可以重新启动以进行更新和配置更改。您的应用程序状态是您需要保存在数据库中的东西。
    【解决方案2】:

    @Sree - 您可以使用Graph API's 拉出所有对话,请查看文档。如果您只需要在字典中存储数据,您可以探索Cosmos db。 请查看Pricing

    【讨论】:

    • 我可以使用 Blob 存储来保存字典吗??
    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多