2017-10-27 15 views
4

私はMicrosoftのBot Frameworkを使ってボットを作っています。私は、変更してMicrosoft Teamsに配布するときに同じ会話状態を使用していることに気付きました。 "/ deleteprofile "状態をクリアする。Microsoft Bot Framework - クリア会話状態

私のコード内で状態をクリアしたいのですが、これを行う良い方法はわかりません。私は会話の状態をクリアするためにどのファイルとどのコードを使うべきかわかりません。

参考までに、私は現在C#を使用しています。

答えて

4

これを行う方法は、これをどこから行うかによって異なります。

一方的な方法は、ダイアログから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.")); 
    } 
} 
0

私はDefaultWaitNextMessageAsyncメソッドをオーバーライドして、会話を終了することでこれを解決しました。

関連する問題