首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft Bot框架中的多个瀑布会话

Microsoft Bot框架中的多个瀑布会话
EN

Stack Overflow用户
提问于 2020-06-08 17:19:50
回答 2查看 876关注 0票数 2

在Microsoft框架中有可能进行多个瀑布式对话吗?

我有一个根对话框(来自ComponentDialog (WaterfallDialog)),它接受用户的初始输入。我想使用这个对话来启动外部服务的登录进程。一旦登录成功,我想启动一个基于用户初始输入的特定瀑布对话。

例如,用户说

Flow1 -->启动根对话(用于登录过程)->开始Flow1(瀑布)对话框 Flow2 -->启动根对话(用于登录过程)->开始Flow2(瀑布)对话框

我试过这样做,但是当我从根对话中调用BeginDialogAsync时,它就挂起了

代码语言:javascript
复制
return await stepContext.BeginDialogAsync("flow1", null, cancellationToken);

请让我知道我在这里错过了什么,谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-06-15 19:05:42

是的,在bot框架中进行多个瀑布对话是非常可能的。在bot框架瀑布对话中有一个v4的概念,其中瀑布接受一系列将按顺序执行的函数。会话的每一步都被实现为一个异步函数,该函数采用瀑布步长上下文( step )参数。每个瀑布步骤都可以询问用户的问题,用户的响应将传递到瀑布的下一个步骤。您还拥有组件对话,它允许您重用对话框集。

参考多转提示符示例,它使用一个瀑布对话框、几个提示和一个组件对话框来创建一个简单的交互,向用户提出一系列问题和bot认证示例。

希望这能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2021-05-27 11:29:16

我知道这篇文章有点老了,但是我没有看到任何其他完整的答案,所以我就这么做了。

在阅读原始问题时,我可以看到您可能希望如何将其实现为从主对话框中启动的单独对话框,在这种情况下,您需要创建单独的ComponentDialogs来实现自己的WaterfallDialog来解决问题。

但是,如果您询问是否可以在单个WaterfallDialogs中拥有多个ComponentDialog,当然可以。为此,必须为每个WaterfallDialog分配一个Id属性值,方法如下:

代码语言:javascript
复制
var flow1steps= new WaterfallStep[] { step1, step2, step3 };
var flow2steps = new WaterfallStep[] { step1, step2, step3 };
var flow1Dialog= new WaterfallDialog(nameof(WaterfallDialog), flow1steps) { Id = "flow1" };
var flow2Dialog = new WaterfallDialog(nameof(WaterfallDialog), flow2steps) { Id = "flow2" };

在这个场景中,如果您想从"flow1Dialog“开始,可以将构造函数中的InitialDialogId设置为"flow1Dialog”,如下所示:

代码语言:javascript
复制
InitialDialogId = "flow1Dialog";

然后,当您准备将对话框重定向到"flow2“时,可以使用flow2 2 dialog的WaterfallDialog.Id。例如,要从根对话框或flow2Dialog中的任何其他步骤重定向到flow1Dialog,请执行以下操作:

代码语言:javascript
复制
return await stepContext.BeginDialogAsync("flow2");

BeingDialogAsync()与ReplaceDialogAsync()

您可以使用BeginDialogAsync(),但是除非需要控制才能最终返回到原始对话框,否则可能会导致对话框堆栈混乱,而这是您不想要的。使用ReplaceDialogAsync()将堆栈上的当前对话框替换为新的对话框,这可以使管理循环和重定向变得更容易,因为堆栈中没有杂乱的旧对话框,您不想在某个时候处理这些对话框。

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

https://stackoverflow.com/questions/62267723

复制
相关文章

相似问题

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