Teams Bot Adaptive Card的action.Submit在Bot Emulator正常但Teams返回undefined
Teams Bot 自适应卡片 Submit 动作跨端异常解决方案
该问题的核心原因为 Teams 平台与 Bot Emulator 对 Adaptive Card 提交动作的载荷解析规则存在差异,和 Adaptive Card 版本无直接关联,可按以下步骤排查修复:
- 强制添加 Teams 专属的
msteams载荷节点
Bot Emulator 无特殊字段要求,但 Teams 要求 Submit 动作的自定义参数必须包裹在msteams节点下才会被正常透传,标准结构示例如下:{ "type": "Action.Submit", "title": "提交", "data": { "msteams": { "type": "messageBack", "text": "submit_trigger" }, // 自定义业务参数区 "order_id": "123456", "op_type": "confirm" } } - 调整后端取值逻辑
Teams 端的提交载荷会统一挂载在activity.value字段下,不要按照 Bot Emulator 的习惯从activity.text中取值,优先判断activity.value是否存在再做解析。 - 检查输入控件配置
若卡片中使用了 Input.Text、Input.ChoiceSet 等输入类控件,必须为每个控件配置唯一的id属性,未设置 id 的控件值不会被带入提交载荷。 - 校验应用权限配置
确认 Teams 应用 manifest 中已为 Bot 开启sendMessage、receiveMessage基础权限,权限缺失会直接拦截提交动作的载荷传递。
排查过程中可在后端打印完整的 activity 对象,确认载荷的完整返回结构,快速定位取值路径问题。
内容的提问来源于stack exchange,提问作者T-Rex
相关产品推荐
相关产品推荐

