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

使用MS Bot Framework V4时如何从虚拟助理取消Skill的Dialog

环境版本说明

我们使用的bot-framework版本为4.x,相关依赖包版本如下:

{
  "botbuilder": "4.11.0",
  "botbuilder-ai": "4.11.0",
  "botbuilder-applicationinsights": "4.11.0",
  "botbuilder-azure": "4.11.0",
  "botbuilder-dialogs": "4.11.0",
  "botbuilder-lg": "4.11.0",
  "botbuilder-testing": "4.11.0",
  "botframework-config": "4.11.0",
  "botframework-connector": "4.11.0"
}
需求场景

启动虚拟助理(Virtual Assistant)中的Dialog时,需要取消所有正在运行的Skill侧Dialog(如有)。例如:LiveChat属于虚拟助理功能,CreateIncidentDialog属于Skill侧功能,当用户正处于CreateIncidentDialog交互流程中发起LiveChat请求时,需要取消当前CreateIncidentDialog并启动LiveChat。

现有实现方案
  • 虚拟助理侧MainDialog.ts:识别到Escalate意图时,若当前运行的是Skill侧Dialog,就构造type为ActivityTypes.Event、name为"liveChat"的activity,通过beginDialog发送给Skill;否则直接执行cancelAllDialogs。
  • Skill侧MainDialog.ts:在onContinueDialog方法中监听EVENT类型的activity,若name为"liveChat",则执行innerDc.cancelAllDialogs(true)后返回endDialog。
遇到的问题

上述代码无法正确取消Skill的Dialog,取消Skill Dialog后尝试启动新Dialog时,会再次发送activity.type为EVENT的请求到Skill侧MainDialog的routeStep方法,进入无event name的未处理分支。

复现步骤
  • 启动Skill中的Dialog
  • 结束Skill中的Dialog并启动虚拟助理中的Dialog
  • 启动新Dialog即可复现该问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:27:01