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

col*_*col 5 botframework direct-line-botframework

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

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

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

  2. 实现自定义功能,它将:

    • 处理所有对话活动
    • 将它们保存到存储(MongoDB),
    • 提供请求特定对话活动的可能性
    • 等等等等

变体№1看起来不错,但我有一些担忧.我找不到有关规范DirectLine缓存/缓冲区的详细信息.

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

dav*_*der 2

内存中是临时的,当您再次发布时将永远消失。最好使用数据库来存储对话状态和用户会话。然后使用水印返回并继续对话。

MS的话:

内存数据存储仅用于测试。该存储是易失性且临时的。每次机器人重新启动时,数据都会被清除。

MS 文档有很多有关管理状态数据的信息,这当然可能会在某个时候过期,但机器人状态管理 万一有一天会死亡 机器人状态搜索

提供搜索链接以及所需的结果。

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

另外,作为旁注,即使 MS 在该通道上为您执行此操作,它仍然只是临时存储,特别是在新的 GDPR 规则下,而且 MS 只是不喜欢保存对话数据