首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Microsoft框架中进行分支对话框

如何在Microsoft框架中进行分支对话框
EN

Stack Overflow用户
提问于 2016-08-11 02:32:45
回答 1查看 1.4K关注 0票数 1

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

例如,在第一条消息中,bot询问用户一个问题,并根据答案启动三个子对话框中的一个,这三个子对话框可以根据用户输入启动自己的子对话框。

所以我在找这样的东西:

代码语言:javascript
复制
if (userAnswer == "option 1") {
    LaunchSupportDialog();
}
else {
    LaunchNewOrderDialog();
}

Microsoft提供的示例要么是平面的(例如,可以处理三明治订单的机器人,不需要分支,然后依次执行),要么是由LUIS根据用户意图自动完成分支的例子。

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

文档声明:

通过IDialogStack.Call和IDialogStack.Done可以显式地管理活动对话框堆栈,显式地将对话框组合成更大的会话。还可以通过fluent链方法隐式地管理活动对话框堆栈。

但是,我没有找到任何示例,说明如何创建新的IDialogStack对象,如何显式调用.Call()或.Done(),或为此使用链式类方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-11 17:23:09

一种选择是使用为分支提供Switch结构的链。

代码语言:javascript
复制
IDialog<string> MyDialog =
    Chain
    .PostToChain()
    .Switch(
        new Case<string, IDialog<string>>(userAnswer => userAnswer == "option 1", (ctx, _) => Option1Dialog),
        Chain.Default<string, IDialog<string>>((ctx, _) => DefaultDialog))
    .Unwrap()
    .Select(dialogResult => $"The result is: {dialogResult}")
    .PostToUser();

此示例等待来自用户的消息,根据消息启动对话框(Option1DialogDefaultDialog,均为IDialog<string>类型),转换对话框结果并将其发回给用户。

有关更多细节,请参阅文档的部分(但不幸的是,它没有多少示例)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38886404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档