2017-02-22 7 views
0

私はメッセンジャーボットを構築するためのマイクロソフトボットフレームワークを使用しています。ルートダイアログのセッションを再作成

私はメニューを追加し、私はメニューをこのように処理したい:

if (activity.Text == "item1_postback" || activity.Text == "item2_postback") 
{ 
    await Conversation.SendAsync(activity,() => new MenuDialog()); 

} 
else 
{ 
    await Conversation.SendAsync(activity,() => new RootLuisDialog()); 
} 

item1_postbackとitem2_postbackは、メニューからボタンです。

Inside MenuDialog私は機能を持っています。 すべてがMenuDialog内で終了したら、私はrootダイアログを "復元"し、RootLuisDialogからrootダイアログを再作成したいと思う。

私はcontext.Doneとcontext.Resetを試しましたが、動作しません。

MenuDialogの終了時にルートダイアログをリセットする方法はありますか?あなたのメッセージ・エンドポイントで

答えて

1

は処理用ポストバック用[RegexPattern("^item1_postback")]アクション検出器を追加し、あなたのRootLuisDialogで

await Conversation.SendAsync(activity,() => new RootLuisDialog());

ルートダイアログを呼び出しておきます。

これらのアクションで

が、それはあなたがあなたに戻ってRootLuisDialogと親ダイアログでしょうdone(some_result)を呼び出す必要がどこかを意味します(あなたのMenuDialog後

context.Call(new MenuDialog(), (context, result) => { /*Do something. at this point your are back to the parent dialog.*/});

を呼び出すことで、メニューの子ダイアログを起動し終えました新しいユーザーコマンドの処理を続行します。

関連する問題