c# - 是否可以将用户过去的对话历史插入/注入(inject)到聊天窗口对话框中?

标签 c# botframework

我正在尝试将用户过去的对话插入/注入(inject)到机器人框架聊天窗口中。我们目前正在使用 bot v3 和 v4 框架,在 LuisDialog 中,IDialogContext 类型上下文。ConversationData 是存储对话数据的地方,我们从那里捕获它并将其保存到存储中。然后我们可以取回它,但是 context.ConversationData 属性是只读的。 那么有什么方法可以将用户过去的对话历史记录插入到 Microsoft Bot Framework 对话框中,或者它是否被设计禁止?如果可以在 Microsoft Bot Framework v3 或 v4 中完成,请告诉我。 谢谢!

我试图替换 context.conversationData 对象,但由于它是只读的,所以没有成功。我还看到 ConversationData 中有一个方法是:context.ConversationData.SetValue(string key,T value) 但不确定它是否用于完成我正在尝试的操作。

最佳答案

重要的是要注意对话历史与 context.ConversationData 不同。 ConversatonData 是一个指向由 conversation.id 限定的数据的指针,默认情况下包含对话堆栈(在 Bot Builder dotnet v3 中,每个整个对话都以二进制方式序列化/反序列化为 ConversationData 或从 ConversationData 进行序列化/反序列化)。您还可以使用此属性来存储/检索与对话相关的自定义数据。在Bot Builder V3中,保存对话历史的接口(interface)实际上是IActivityLogger,而在Bot Builder V4中,这个接口(interface)是ITranscriptLogger。可以找到更多信息here

一旦正确存储了对话历史记录,下一步就是将该历史记录发送到对话中。 V3 和 V4 sdk 都实现了 SendConversationHistoryAsync 端点:V3 , V4我们目前没有演示如何执行此操作的示例:但我们正在努力。

关于c# - 是否可以将用户过去的对话历史插入/注入(inject)到聊天窗口对话框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56858802/

相关文章:

c# - 无法测试的 Braintree API : Should I alter the source code or individually wrap every class?

C# winform 从 DataTable 中设置组合框项的值和名称

javascript - 机器人框架 : How to stop a ChoicePrompt from RePrompting

c# - 微软的 botframework 是免费的吗?

c# - 抽象工厂设计模式

c# - 如何在 ASP.NET Core Web API 项目中允许使用 IP 地址进行 CORS?

c# - 通过在MVVM中更改的属性来更改另一个类的属性?

azure - Bot Framework Emulator - 连接时间比平时更长

c# - 机器人框架 v4 : ReplaceDialogAsync A dialog with an id of 'X' wasn't found

botframework - 将刷新 token 存储在 cookie 中