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

Bot Framework Composer中Adaptive Card的Cancel按钮如何跳转其他对话框

实现Adaptive Card Cancel按钮跳转到指定Dialog的方案

你当前两个按钮都是Action.Submit类型,所以默认会触发相同的提交处理逻辑,要实现Cancel按钮的独立跳转逻辑,按以下两步修改即可:

第一步:修改Adaptive Card配置,给按钮添加动作标识

给两个Submit按钮新增data字段,用来标记当前操作的类型,方便后续处理逻辑分流,修改后的配置代码如下:

{
    "type": "ActionSet",
    "actions": [
        {
            "type": "Action.Submit",
            "title": "Submit",
            "style": "positive",
            "data": {
                "actionType": "submitForm"
            }
        },
        {
            "type": "Action.Submit",
            "title": "Cancel",
            "associatedInputs": "none",
            "id": "cancel",
            "style": "destructive",
            "data": {
                "actionType": "cancelForm"
            }
        }
    ]
}

你原有配置里的associatedInputs: "none"已经保证了点击Cancel按钮不会携带表单内填写的内容提交,新增的data字段仅用作动作类型识别。

第二步:修改提交事件的处理逻辑,按动作类型分流

在你处理Adaptive Card提交请求的代码中,先读取提交携带的actionType参数,判断操作类型后执行对应逻辑:

  • 当actionType为submitForm时,走原有获取表单信息、处理提交的逻辑
  • 当actionType为cancelForm时,直接调用你所用框架的dialog跳转方法,重定向到目标dialog即可

以下是Bot Framework场景的示例代码,其他框架调整对应跳转方法即可:

// 读取Adaptive Card提交的数据
var submitData = turnContext.Activity.Value as JObject;
var actionType = submitData["actionType"]?.ToString();

if (actionType == "submitForm")
{
    // 原有处理表单提交的逻辑,读取表单字段、执行业务操作
}
else if (actionType == "cancelForm")
{
    // 直接跳转到你指定的dialog即可
    await dialogContext.BeginDialogAsync(nameof(你要跳转的Dialog名称), cancellationToken: cancellationToken);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:48:02