2017-02-22 59 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和继续处理新的用户命令。