【问题标题】:Waterfall Dialog keeps calling itself - how can I stop it?瀑布对话框不断调用自己 - 我该如何阻止它?
【发布时间】:2021-12-20 15:59:03
【问题描述】:

我正在使用机器人框架编写器构建一个聊天机器人,并使用自定义操作对其进行扩展。这些自定义操作主要是瀑布对话框,直到现在它们工作得非常好。现在我遇到的问题是,即使我调用 stepContext.EndDialogAsync() 或 stepContext.CancelAllDialogs(),这些对话框之一也不会结束。查看调用堆栈和 stepContext.Parent 我无法找出问题所在。我什至尝试了 stepContext.Parent.EndDialogAsync() ,但它仍然跳回第一个瀑布步骤。我想跳回作曲家生成的自适应对话,所以我不能使用 BeginDialogAsync()。

有没有办法从字面上“杀死”对话框?或者有谁知道如何处理这个问题?如果需要,我可以提供一些代码。

提前致谢!

【问题讨论】:

  • 感谢您的提问。如果您可以提供代码 sn-p 或存储库来重现此问题,是否有可能?
  • 代码堆栈等问题需要更清晰
  • 感谢您的留言。请查看此对话框,它是我在问题中所说的:github.com/itsme-bigv/PassBot1/blob/unstoppableDialog/… 我相信问题的根源在第 167 行和第 200 行之间。我注意到,在第 183 行的 ConfirmPrompt 之后调用了 BotController但实际上并没有做任何事情。
  • 测试机器人;重现问题的流程是什么? (如何在 Composer 机器人中访问 BehaviorEditingComponent?)
  • @DanaV 您可以通过以下方式重现流程: 1. 启动机器人并使用模拟器连接到它 2. 问候后选择“从头开始创建新模型”并将模型命名为“测试” (区分大小写;为测试创建必要的资源) 3. 选择“编辑现有模型” 4. 选择“编辑主题行为” 5. 选择“fullSub” 6. 选择随机状态 7. 给状态一个随机描述 8. 选择是,如果要求使其开始状态 9. 如果询问您是否要告诉主题接下来要做什么,请选择否 --> 对话框再次以 (5) 开始,尽管它应该结束

标签: botframework chatbot bot-framework-composer


【解决方案1】:

试试这个,在 NextSteps Composer 对话框中,将“始终提示”设置为 true:

这将使 stepContext.EndDialogAsync 按预期从最后一个瀑布步骤开始工作。

return await stepContext.EndDialogAsync(cancellationToken: cancellationToken);

【讨论】:

  • 非常感谢 Ram,这行得通!新年快乐
  • 很高兴它成功了?新年快乐
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
相关资源
最近更新 更多