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

MS Teams中Adaptive Cards Templating模板未正常渲染问题问询

MS Teams Adaptive Cards 模板变量未渲染问题解答

你对该功能的理解存在偏差,MS Teams客户端不支持自适应卡片模板的客户端侧变量展开,具体原因和解决方案如下:

  • 首先明确Adaptive Cards Templating的设计定位:模板语法、${}占位符和$data绑定逻辑,是为了方便开发者在服务端批量生成卡片而设计的工具能力,本身不属于Adaptive Cards的标准渲染规范要求,不是所有适配Adaptive Cards的客户端都支持模板解析。
  • Teams平台的实现限制:目前Teams的卡片渲染引擎仅能识别标准Adaptive Card结构,不会对负载中的模板占位符做任何解析替换操作,你直接发送带占位符的模板+数据源的组合负载,客户端会原样展示${form.name}这类占位符内容,和你遇到的异常表现一致。
    异常渲染效果图
  • 你提交的负载额外存在的小问题:JSON语法不规范,$data下的form对象末尾多了冗余逗号,虽然这不是导致渲染异常的核心原因,但也可能导致部分客户端解析失败。

正确实现方案

要实现变量填充的效果,你需要在服务端完成模板和数据的合并,再发送最终卡片给Teams,步骤如下:

  1. 拆分模板和数据源:将卡片模板(不含$data字段)和业务数据分开维护,示例如下:
    模板内容:
{
  "$schema" : "http://adaptivecards.io/schemas/adaptive-card.json",
  "version" : "1.3",
  "type" : "AdaptiveCard",
  "body" : [ {
    "type" : "Container",
    "style" : "emphasis",
    "items" : [ {
      "type" : "Input.Text",
      "value" : "${form.name}",
      "id" : "name",
      "label" : "Name"
    } ]
  } ]
}

数据源内容:

{
  "form" : {
    "name" : "geoff hurst"
  }
}
  1. 服务端预渲染:使用Adaptive Cards官方提供的各语言模板SDK,在服务端完成模板与数据的合并,生成最终无占位符的卡片负载,合并后的结果如下:
{
  "$schema" : "http://adaptivecards.io/schemas/adaptive-card.json",
  "version" : "1.3",
  "type" : "AdaptiveCard",
  "body" : [ {
    "type" : "Container",
    "style" : "emphasis",
    "items" : [ {
      "type" : "Input.Text",
      "value" : "geoff hurst",
      "id" : "name",
      "label" : "Name"
    } ]
  } ]
}
  1. 发送最终负载:将合并完成的无占位符的JSON发送给Teams,即可正常渲染出填充了值的输入框。

内容的提问来源于stack exchange,提问作者Rob Moffat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:48:00