C# MS BOT更改根目录对话框

C# MS BOT更改根目录对话框,c#,botframework,C#,Botframework,是在对话期间将根对话框更改为其他对话框的方法: SendAsync((IMessageActivity)context.Activity,()=>新建 RootDialogA()) 我们有一个应用程序,它从一个根对话框开始,在某个点上我们希望运行另一个根对话框: SendAsync((IMessageActivity)context.Activity,()=>新建 RootDialogB() 有。使用context.Call()或context.Forward()可以在对话框之间切换。请看一看

是在对话期间将根对话框更改为其他对话框的方法:

SendAsync((IMessageActivity)context.Activity,()=>新建 RootDialogA())

我们有一个应用程序,它从一个根对话框开始,在某个点上我们希望运行另一个根对话框:

SendAsync((IMessageActivity)context.Activity,()=>新建 RootDialogB()


有。使用
context.Call()
context.Forward()
可以在对话框之间切换。请看一看

通常,人们所做的是有一个根对话框,根据对话的上下文路由到另一个对话框。下面是一个示例,我认为根对话框使用
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);
}
您必须提供一个resume after方法,该方法在调用的对话框完成时触发。在示例中,它如下所示:

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);
    }
}
专用异步任务名称DialogResumeAfter(IDialogContext上下文,IAwaitable结果)
{
尝试
{
this.name=等待结果;
调用(newagedialog(this.name),this.AgeDialogResumeAfter);
}
捕获(ToomanyTestSexception)
{
wait context.PostAsync(“很抱歉,我在理解您时遇到问题。让我们再试一次。”);
等待此消息。SendWelcomeMessageAsync(上下文);
}
}