Microsoft Bot Framework - 清除会话状态

Sha*_*ang 7 c# botframework

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

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

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

D4R*_*IDE 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."));
    }
}
Run Code Online (Sandbox Code Playgroud)