Bot Framework Composer Adaptive Card Cancel按钮跳转dialog方法
Bot Framework Composer 中 Adaptive Card 取消按钮跳转Dialog实现方案
问题原因
默认Adaptive Card的Action.Submit类型按钮触发时,会统一将当前卡片表单的所有字段打包回传给对话流,Composer默认会将所有同类型回传判定为表单提交输入,因此Submit和Cancel按钮如果没有做区分标识,会触发完全一致的后续逻辑。
实现步骤
给两个按钮配置差异化标识字段
编辑Adaptive Card的JSON结构,在两个按钮的data属性中增加专属判断字段,不要留空data配置,示例配置如下:"actions": [ { "type": "Action.Submit", "title": "Submit", "data": { "action": "submit" } }, { "type": "Action.Submit", "title": "Cancel", "data": { "action": "cancel" } } ]不要给Cancel按钮配置
Action.ImBack类型,该类型会在聊天窗口生成一条公开的用户消息,交互体验差。在卡片回传接收节点后增加分支判断
找到你发送Adaptive Card、等待用户输入的节点(通常是「文本输入」「表单输入」类的询问节点),在其后新增条件分支判断:- 提交逻辑分支:判断条件写
=turn.activity.value.action == "submit",分支内保留你原有的表单信息提取、校验、存储、后续业务流程逻辑 - 取消跳转分支:判断条件写
=turn.activity.value.action == "cancel",分支内跳过所有表单信息提取、校验环节,直接新增「启动新对话框(Begin a new dialog)」或「替换当前对话框(Replace dialog)」动作,选择你需要跳转的目标Dialog即可,该分支不会触发表单必填项校验,符合取消操作的交互预期。
- 提交逻辑分支:判断条件写
内容的提问来源于stack exchange,提问作者Sara Shreim
相关产品推荐
相关产品推荐

