我正在开发基于MS Bot Framework的chatbot应用程序。 我需要实现聊天对话的长期历史记录的功能。
在阅读了大量手册之后,我发现了两种方法,我该怎么做呢。
使用描述here的方法。此方法使用DirectLine api-endpoint https://directline.botframework.com/v3/directline/conversations/{convId}/activities
。
实施自定义功能,其中包括:
变体№1看起来不错,但我对它有些担忧。 我找不到有关规范DirectLine缓存/缓冲区的详细信息。
答案 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的分支。根据您的具体目标,您可能会也可能无法重新定位代码片段。
您到底想要通过历史活动/对话完成什么?我可能还有其他一些信息。