Microsoft Bot Framework - 清除会话状态

时间:2017-10-27 21:08:09

标签: c# botframework

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

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

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

2 个答案:

答案 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方法并结束对话来解决这个问题。