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
相关产品推荐
相关产品推荐

