我正在使用Microsoft的Bot Framework制作机器人,我注意到当我进行更改并部署到Microsoft Teams时,它使用相同的会话状态,我必须编写" / deleteprofile"清除状态。
我想清除代码中的状态,但不知道这样做的好方法。我不确定哪个文件和用什么代码来清除对话状态。
供参考,我目前正在使用C#。
答案 0 :(得分:6)
根据您想要执行此操作的位置,有不同的方法可以实现此目的。
一种方法是从对话框中简单地调用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<IBotData>();
await botData.LoadAsync(token);
var stack = scope.Resolve<IDialogStack>();
stack.Reset();
// botData.UserData.Clear(); //<-- could clear userdata as well
botData.ConversationData.Clear();
botData.PrivateConversationData.Clear();
await botData.FlushAsync(token);
var botToUser = scope.Resolve<IBotToUser>();
await botToUser.PostAsync(message.CreateReply("Conversation aborted."));
}
}
答案 1 :(得分:0)
我通过覆盖DefaultWaitNextMessageAsync方法并结束对话来解决这个问题。