Botframework 聊天会话的长期历史记录(恢复会话)

Botframework 聊天会话的长期历史记录(恢复会话),botframework,direct-line-botframework,Botframework,Direct Line Botframework,我正在开发基于MS Bot框架的聊天机器人应用程序。 我还需要实现聊天会话的长期历史记录功能 在阅读了大量的手册之后,我发现了两种方法可以做到这一点 使用前面描述的方法。此方法使用DirectLineAPI端点https://directline.botframework.com/v3/directline/conversations/{convId}/activities 实现自定义功能,这将: 处理所有对话活动 将它们保存到存储(MongoDB) 提供为特定对话请求活动的可能性 等等等等

我正在开发基于MS Bot框架的聊天机器人应用程序。 我还需要实现聊天会话的长期历史记录功能

在阅读了大量的手册之后,我发现了两种方法可以做到这一点

  • 使用前面描述的方法。此方法使用DirectLineAPI端点
    https://directline.botframework.com/v3/directline/conversations/{convId}/activities

  • 实现自定义功能,这将:

    • 处理所有对话活动
    • 将它们保存到存储(MongoDB)
    • 提供为特定对话请求活动的可能性
    • 等等等等
  • 变体№1看起来不错,但我有些担心。 我没有找到有关DirectLine缓存/缓冲区规范的详细信息

    • DirectLine存储会话(conversationId)的内容(通过它发送的活动)的时间有多长?什么是有效期 会话ID
    • 我能期望在任何时候都能获得特定对话的内容吗

    内存中的是temp,当您再次发布时,它将始终消失。最好使用数据库进行会话状态和用户会话。然后使用水印返回并继续对话

    李女士的话:

    内存中的数据存储仅用于测试。此存储是不稳定的和临时的。每次重新启动bot时,都会清除数据

    MS docs有很多关于管理州数据的信息,当然这可能会在某个时候过期,但万一有一天过期

    提供包含所需结果的搜索链接

    没有看到mongo解决方案,但他们有一个表存储解决方案和cosmos db解决方案,都是nosql

    另外,作为旁注,即使微软在那里为你做这件事,它仍然只是临时存储,特别是在新的GDPR规则下,而且微软只是不喜欢保存对话数据

    DirectLine存储内容(通过发送的活动)的时间 对话(会话ID)的名称?什么是有效期 会话ID

    邮件在24小时后被删除

    我能期望在任何时候都能获得特定对话的内容吗 时间

    不,如果您想要与用户进行对话的历史记录,则需要根据用户Id保存和检索对话历史记录。前一段时间,我写这篇文章是为了在webchat控件中显示聊天历史记录。If使用webchat存储库的分支。您可能会也可能无法重新调整代码片段的用途,这取决于您正试图实现的目标


    通过历史活动/对话,你到底想要完成什么?我可能还有一些其他信息要告诉你。

    DirectLine将会话(conversationId)的内容(通过它发送的活动)存储多长时间?
    你想知道DirectLine将会话数据存储在临时缓存中多长时间吗?是,确切地说)ThanksI还没有找到解释Direct Line服务临时缓存的官方文档或博客,但在这篇文章中,willportnoy说:DirectLine使用与其他渠道相同的web service bot端点。有一种中间的“直达”服务。它在云中存储一段短时间的会话数据(以支持排队)(用于容错)。我认为“短时间”不到一天,但可能会随着时间的推移而改变。谢谢你的回答,但我并不是问应用程序使用的数据存储。我询问了内部DirectLine缓冲区/缓存中的数据过期时间。DirectLine将所有发送的活动存储在其自己的存储器中。这与你的应用程序端的机器人存储无关。我确实回答了这个问题,而且当你的机器人重新启动时,它会被重建。不要介意中间件。法律将在一周内出台,规定微软不可能长期保存所有数据,答案是拥有自己的数据存储,如果你想要保留,即使你不喜欢这个答案,微软也不会为你管理所有这些。谢谢,在24小时后删除
    消息之前,我误解了您的意思-这在Directline API文档中有说明吗?我正在找,但找不到。如果它不在里面,它应该在里面。这是我在队里时的官方政策。现在有可能已经改变了。邮件并不总是在24小时内被删除,但它们只能保证在24小时内被删除。