聊天对话的长期历史(简历对话)

时间:2018-05-15 16:42:09

标签: botframework direct-line-botframework

我正在开发基于MS Bot Framework的chatbot应用程序。 我需要实现聊天对话的长期历史记录的功能。

在阅读了大量手册之后,我发现了两种方法,我该怎么做呢。

  1. 使用描述here的方法。此方法使用DirectLine api-endpoint https://directline.botframework.com/v3/directline/conversations/{convId}/activities

  2. 实施自定义功能,其中包括:

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

    • DirectLine存储对话( conversationId )的内容(通过它发送的活动)多长时间?什么是到期时间 的conversationId?
    • 我可以期待,我可以随时获得特定对话的内容吗?

2 个答案:

答案 0 :(得分:2)

内存中的

是临时的,并且在您再次发布时将永远消失。最好使用数据库进行会话状态和用户会话。然后使用水印返回并继续对话。

MS的话:

  

内存数据存储仅用于测试。这种存储是易变的和临时的。每次重启机器人时都会清除数据。

MS docs有很多关于管理状态数据的信息,这当然可能会在某个时候到期,但Bot State Management会导致一天死亡Bot state Search

提供搜索链接,并提供所需的结果。

没见过mongo,但是他们有一个表存储解决方案和cosmos db解决方案,两者都是nosql

另外作为旁注,即使MS在你的频道上这样做,它仍然只是临时存储,特别是新的GDPR规则,而且MS也不喜欢保存会话数据

答案 1 :(得分:1)

  

DirectLine存储内容的时间(通过发送的活动)   谈话(conversationId)?什么是到期时间   的conversationId?

24小时后删除邮件

  

我可以期待,我可以获得任何具体对话的内容   时间?

不,如果您想要与用户进行对话的历史记录,则需要保存并根据用户ID进行检索。不久前我写了an example of storing conversation history,这是为了在网络聊天控件中显示聊天记录。如果使用网络聊天存储库which you can find being discussed here的分支。根据您的具体目标,您可能会也可能无法重新定位代码片段。

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