MS BOT更改根对话框

时间:2017-10-19 15:19:00

标签: c# botframework

在会话期间是否存在将根对话框更改为不同对话框的方法:

  

Conversation.SendAsync((IMessageActivity)context.Activity,()=> new   RootDialogA())

我们有应用程序从一个rootdialog开始,在某些时候我们想要运行另一个根对话框:

  

Conversation.SendAsync((IMessageActivity)context.Activity,()=> new   RootDialogB())

1 个答案:

答案 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);
    }
}