是否可以将用户过去的对话历史记录插入/插入到聊天窗口对话框中?

时间:2019-07-02 19:18:29

标签: c# botframework

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

我尝试替换context.conversationData对象,但是由于它是只读的,因此无法正常工作。我还看到ConversationData中有一个方法是:context.ConversationData.SetValue(string key,T value),但不确定是否打算将其用于完成我正在尝试的工作。

1 个答案:

答案 0 :(得分:1)

请务必注意,会话历史记录不同于[HttpGet] public string Get(PostMapDB list) { IEnumerable<PostMapDB> dataOfPosts = list.getAllPosts().OrderBy(x => x.Date); var data = JsonConvert.SerializeObject(dataOfPosts, new JsonSerializerSettings() { ContractResolver = new DefaultContractResolver() { IgnoreSerializableAttribute = false } }); return data; } context.ConversationData是指向由session.id定义范围的数据的指针,并且默认情况下包含对话框堆栈(在Bot Builder dotnet v3中,每个整个对话框都与ConversationData进行二进制序列化/反序列化)。您还可以使用此属性来存储/检索与对话有关的自定义数据。在Bot Builder V3中,用于存储对话历史记录的界面实际上是ConversatonData,而在Bot Builder V4中,该界面是IActivityLogger。可以找到更多信息here

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