Adaptive Card模板传变量POST至Teams无消息及foreach报错的解决咨询
问题解决:Adaptive Card发送Teams无消息+Foreach空数组错误
1. 修复Foreach空数组错误
错误提示@triggerOutputs()?['body']?['attachments']为Null,核心原因是绑定的遍历源不存在或不是有效数组:
- 若仅发送单张卡片:直接移除
Send_each_adaptive_card的foreach循环,无需遍历操作。 - 若需批量发送多张卡片:确保遍历源是有效数组,比如替换为
@body()['attachments'](若请求体包含该数组),或工作流中预先定义的数组变量。
2. 正确的Adaptive Card变量传递与POST请求格式
Teams的Incoming Webhook要求请求体必须包含attachments数组,Adaptive Card需嵌套在该数组内,同时要完成变量替换,以下是两种可行方案:
方案一:先渲染模板再组装请求体
- 添加Compose动作,输入Adaptive Card模板,用工作流表达式替换变量(将原模板的
${description}替换为实际变量来源):{ "type": "AdaptiveCard", "body": [ { "type": "TextBlock", "text": "@{triggerBody()['description']}", "wrap": true } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.5" } - 在发送Teams请求的动作中,构造符合要求的请求体:
{ "attachments": [ { "contentType": "application/vnd.microsoft.card.adaptive", "content": @{outputs('Compose')} } ] }
方案二:直接内联构造完整请求体
无需单独模板,直接在请求体中完成变量替换和格式组装:
{ "attachments": [ { "contentType": "application/vnd.microsoft.card.adaptive", "content": { "type": "AdaptiveCard", "body": [ { "type": "TextBlock", "text": "@{triggerBody()['description']}", "wrap": true } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.5" } } ] }
3. 关键注意事项
- 必须确保请求头设置
Content-Type: application/json,否则Teams无法正确解析请求体。 - 测试时可先用Postman手动发送构造好的完整请求(替换变量为实际值),确认能收到消息后再迁移到工作流中。
内容的提问来源于stack exchange,提问作者Emme
相关产品推荐
相关产品推荐

