Teams中Adaptive Card的Action.Execute无法返回输入字段数据
问题
我正在开发Microsoft Teams机器人,尝试获取用户输入,但无法获取Adaptive Card输入字段中填写的数据。
我使用的Adaptive Card模板如下:
{ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.5", "body": [ { "type": "TextBlock", "size": "medium", "weight": "bolder", "text": "${Title}", "horizontalAlignment": "center", "wrap": true, "style": "heading" }, { "type": "Input.Text", "id": "user", "label": "Username", "isRequired": true, "errorMessage": "Username is required" } ], "actions": [ { "type": "Action.Execute", "title": "Send", "verb": "test", "data": {} } ] }
卡片在Teams中正常显示,输入数据并点击Send按钮后,端点收到的请求body如下:
{ "name": "adaptiveCard/action", "type": "invoke", "timestamp": "2023-06-02T09:59:04.892Z", //other data that's not relevant "value": { "action": { "type": "Action.Execute", "title": "Send", "data": {}, "verb": "test" }, "trigger": "manual" } }
根据Action.Execute文档说明,它应收集输入字段数据并合并后发送给机器人,但返回的响应中缺失输入数据,即使在浏览器端查看请求也未发现该数据,请问我哪里操作有误?
解决方案
- 调整Adaptive Card版本:Teams对不同版本的Adaptive Card兼容性有差异,你当前用的1.5版本可能存在适配问题,尝试将版本降为1.4再测试,部分场景下低版本能正常触发输入数据收集逻辑。
- 确认卡片渲染完整性:你用了
${Title}模板变量,要确保最终发送到Teams的卡片是完整的JSON结构,没有模板语法残留。如果渲染过程中破坏了输入字段的id属性或结构,Teams会无法识别输入项。 - 简化Action.Execute配置:先移除
isRequired和errorMessage属性测试,排除必填校验逻辑的干扰;另外注意,Teams收集的输入数据会放在value根节点下,而非action.data里,确认你的接收逻辑没有找错位置。 - 测试不同Teams客户端:桌面端、网页端、移动端的Teams对Adaptive Card支持有差异,优先在网页端测试,排查是否是客户端兼容性问题。
- 检查端点接收逻辑:直接打印完整的请求body,确认是否真的没有输入数据传递过来,避免端点过滤掉相关字段。
内容的提问来源于stack exchange,提问作者NotFound
相关产品推荐
相关产品推荐

