Microsoft Bot Framework – 清除会话状态

我正在使用Microsoft的Bot Framework制作机器人,我注意到当我进行更改并部署到Microsoft Teams时,它使用相同的会话状态,我必须编写“/ deleteprofile”来清除状态。

我想在我的代码中清除状态,但不知道这样做的好方法。 我不确定哪个文件和用什么代码来清除会话状态。

作为参考,我目前正在使用C#。

有不同的方法来实现这一点取决于你想从哪里做到这一点。

一种方法是简单地调用context.EndConversation("Conversation Ended"); 从对话框。

另一个是有点复杂,但它会完成同样的事情是一个实现,你可以调整,以满足您的需求:

 public static async Task AbortConversation(Activity message) { using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var token = new CancellationToken(); var botData = scope.Resolve(); await botData.LoadAsync(token); var stack = scope.Resolve(); stack.Reset(); // botData.UserData.Clear(); //<-- could clear userdata as well botData.ConversationData.Clear(); botData.PrivateConversationData.Clear(); await botData.FlushAsync(token); var botToUser = scope.Resolve(); await botToUser.PostAsync(message.CreateReply("Conversation aborted.")); } } 

我通过重写DefaultWaitNextMessageAsync方法并结束对话来解决这个问题。