我正在尝试将用户过去的对话插入/注入(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/