C# 如何在MicrosoftBot框架中创建分支对话框

C# 如何在MicrosoftBot框架中创建分支对话框,c#,botframework,C#,Botframework,我正在使用MS bot框架,我正在尝试构建一个能够处理可以分支的对话框的bot,而不仅仅是一个平面场景 例如,在第一条消息中,机器人向用户提问,并根据答案启动三个子对话框中的一个,而这三个子对话框又可以根据用户输入启动自己的子对话框 所以我在找这样的东西: if (userAnswer == "option 1") { LaunchSupportDialog(); } else { LaunchNewOrderDialog(); } 微软提供的例子要么是平面的(例如,一个机器人

我正在使用MS bot框架,我正在尝试构建一个能够处理可以分支的对话框的bot,而不仅仅是一个平面场景

例如,在第一条消息中,机器人向用户提问,并根据答案启动三个子对话框中的一个,而这三个子对话框又可以根据用户输入启动自己的子对话框

所以我在找这样的东西:

if (userAnswer == "option 1") {
    LaunchSupportDialog();
}
else {
    LaunchNewOrderDialog();
}
微软提供的例子要么是平面的(例如,一个机器人,可以处理三明治订单,没有分支,连续执行每个步骤),要么是由LUIS根据用户意图自动完成分支

我正在寻找一些不那么聪明的东西,所以看起来我只是缺少了一些能够做到这一点的方法或类

文件规定:

可以通过以下方式显式管理活动对话框堆栈: IDialogStack.Call和IDialogStack.Done,显式组合 将对话转换为更大的对话。也可以隐式地 通过fluent Chain方法管理活动对话框的堆栈


但是我没有找到任何关于如何创建新IDialogStack对象的示例,也没有找到如何显式调用.call()或.Done(),或者如何使用Chain类方法来实现这一点的示例

一种选择是使用提供分支的
开关的链

IDialog MyDialog=
链条
.PostToChain()
.开关(
新案例(userAnswer=>userAnswer==“选项1”,(ctx,)=>Option1Dialog),
Chain.Default((ctx,)=>DefaultDialog))
.Unwrap()
.Select(dialogResult=>$“结果为:{dialogResult}”)
.PostToUser();
此示例等待用户的消息,根据消息启动对话框(
Option1Dialog
DefaultDialog
,均为
IDialog
),转换对话框结果并将其发送回用户

请参阅部分文档以了解更多详细信息(遗憾的是,它没有太多示例)