You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bot Composer中Cancel All active dialog后无法启动新Dialog解决方法

Bot Composer执行Cancel All active dialog后无法启动新对话框解决方案

问题场景

使用Bot Composer开发机器人时,在特定业务节点执行Cancel All active dialog操作取消所有活动对话框后,后续配置的Begin new Dialog动作无法正常触发,相关操作配置截图如下:
Cancel All active dialog操作配置截图

根因说明

Cancel All active dialog动作会清空当前对话栈内的全部对话框实例,包括承载该Cancel动作本身的对话框上下文,同节点后续绑定的Begin new Dialog会因为所属执行上下文被销毁、动作执行流被强制中断,无法正常运行。

可落地解决方法

  • 调整动作挂载位置:将Cancel All active dialog和后续启动新对话框的逻辑,统一挂载到根对话的全局事件/动作触发节点下,不要放在子对话框的业务流程节点中,避免Cancel动作清空自身所在的执行上下文。
  • 解耦两个动作的执行链路:不要在Cancel动作所在节点直接串联Begin new Dialog,在Cancel动作执行完成后触发一个自定义事件,在自定义事件的响应逻辑中配置新对话框启动动作,通过事件触发绕开同节点动作被强制中断的问题。
  • 校验新对话框启动参数:如果要启动的对话框是此前被取消的业务对话框,不要复用旧的对话框实例ID,Begin new Dialog时传入全新的实例参数,避免因旧实例已被标记销毁导致启动失败。
  • 代码动作兜底:如果可视化配置调整后仍存在时序问题,可替换原生Cancel动作为自定义代码动作,在同一段代码逻辑中顺序执行清空对话栈、启动新对话框操作,参考代码如下:
// 放置于Bot Composer的代码动作节点中执行
await dc.cancelAllDialogs();
return await dc.beginDialog('替换为你要启动的目标对话框ID');

内容的提问来源于stack exchange,提问作者Sara Shreim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:32:22