You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy填充AdaptiveCard动态数据在Teams中失效问题求助

解决Teams中Adaptive Card动态数据绑定失效的问题

核心原因分析

你遇到的问题本质是Groovy字符串插值与Adaptive Card绑定语法冲突,以及数据注入方式不符合Teams的渲染要求:

  1. Groovy会自动解析字符串中的${xxx}作为变量插值,导致最终生成的卡片JSON里,text: "${name}"被替换成了Groovy环境中name变量的值(若未定义则为空),而非保留Adaptive Card需要的绑定表达式。
  2. 若未将requests数组正确嵌入到卡片的$data字段中,Teams无法识别并遍历数据源进行渲染。

解决方案

1. 转义Adaptive Card绑定表达式

在Groovy字符串中,将${name}转义为\${name},避免Groovy解析该表达式,确保最终JSON中保留原始绑定语法:

def requests = [
    ["name":"Aspentech ProMV","status":"Rejected"],
    ["name":"Testing","status":"Approved"]
]

// 使用转义后的绑定表达式,并通过JsonBuilder生成标准JSON格式的数据源
def cardJson = """
{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "Container",
            "\$data": ${new groovy.json.JsonBuilder(requests).toString()},
            "items": [
                {
                    "type": "ColumnSet",
                    "columns": [
                        {
                            "type": "Column",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "\${name}",
                                    "wrap": true,
                                    "size": "Large",
                                    "fontType": "Default"
                                }
                            ]
                        }
                    ]
                },
                {
                    "type": "ActionSet",
                    "actionsOrientation": "horizontal",
                    "actions": [
                        {
                            "type": "Action.Submit",
                            "title": "Quick Approve"
                        }
                    ]
                }
            ]
        }
    ],
    "\$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4"
}
"""

2. 确保数据源正确嵌入卡片JSON

使用groovy.json.JsonBuilder将requests数组转换为标准JSON字符串,直接插入到Container的$data字段中,而非依赖外部数据源传递。这样Teams收到的卡片JSON包含完整的数据源和绑定表达式,能够正常渲染动态内容。

3. 验证最终生成的JSON

发送卡片前,打印生成的cardJson内容,确认:

  • $data字段是完整的数组JSON(如[{"name":"Aspentech ProMV","status":"Rejected"},{"name":"Testing","status":"Approved"}])
  • text字段的值是${name}而非空或其他值

内容的提问来源于stack exchange,提问作者Ray Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:32:06