在会话期间是否存在将根对话框更改为不同对话框的方法:
Conversation.SendAsync((IMessageActivity)context.Activity,()=> new RootDialogA())
我们有应用程序从一个rootdialog开始,在某些时候我们想要运行另一个根对话框:
Conversation.SendAsync((IMessageActivity)context.Activity,()=> new RootDialogB())
答案 0 :(得分:2)
是的。使用context.Call()
或context.Forward()
,您可以在对话框之间切换。请查看this sample project
一般来说,人们所做的是有一个根对话框,根据对话的上下文路由到另一个对话框。以下是我认为根对话框使用context.Call()
方法路由到另一个对话框的示例中的示例:
private async Task SendWelcomeMessageAsync(IDialogContext context)
{
await context.PostAsync("Hi, I'm the Basic Multi Dialog bot. Let's get started.");
context.Call(new NameDialog(), this.NameDialogResumeAfter);
}
您必须在已调用对话框完成后触发的方法之后提供简历。在示例中,它看起来像这样:
private async Task NameDialogResumeAfter(IDialogContext context, IAwaitable<string> result)
{
try
{
this.name = await result;
context.Call(new AgeDialog(this.name), this.AgeDialogResumeAfter);
}
catch (TooManyAttemptsException)
{
await context.PostAsync("I'm sorry, I'm having issues understanding you. Let's try again.");
await this.SendWelcomeMessageAsync(context);
}
}