2017-02-22 49 views
0

我正在使用微軟的bot框架來構建一個messenger bot。重新創建根對話框的會話

我上增加了菜單,我想處理的菜單是這樣的:

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中的所有內容都完成時,我想要「恢復」根對話框並從RootLuisDialog重新創建根對話框。

我試過context.Done和context.Reset,但它不起作用。

任何想法如何在MenuDialog完成時重置根對話框?

回答

1

在你的消息端點離開只是調用你的根對話框

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

在你RootLuisDialog,添加[RegexPattern("^item1_postback")]動作探測器後處理背上。

在這些行動中,通過調用

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

您MenuDialog後開始菜單子對話框已完成(這意味着在某處你應該叫done(some_result)你會回來的,你父對話框是RootLuisDialog和繼續處理新的用戶命令。