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

MS Teams机器人:自适应卡片用户提及功能无法正常工作

MS Teams机器人:自适应卡片用户提及功能无法正常工作

嘿,我之前也踩过这个坑!Teams里的自适应卡片提及可不是直接输入@用户名就能生效的,得按照Teams的特定规则来配置,我给你一步步说清楚怎么解决:

问题根源

你当前的卡片模板只是用了占位符展示内容,但Teams无法识别这种普通文本里的“提及”——它需要明确的实体定义和特定格式标记,才能把文本关联到具体用户。

解决方案步骤

1. 修改自适应卡片模板,添加Teams扩展属性

在你的卡片JSON里,新增msteams属性用来存放提及的用户实体信息,同时在需要提及用户的文本位置,用<at>用户名</at>的格式标记:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.6",
  "msteams": {
    "entities": "${mentionEntities}"
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "On-call users for: ${shiftDate}",
      "weight": "Bolder",
      "size": "Large",
      "wrap": true
    },
    {
      "type": "TextBlock",
      "text": "Schedule: ${scheduleName}",
      "weight": "Bolder",
      "size": "Medium",
      "wrap": true
    },
    {
      "type": "FactSet",
      "facts": "${data}"
    }
  ]
}

2. 填充提及实体和内容

当机器人准备发送卡片时,需要把两个占位符替换成真实数据:

  • ${mentionEntities}:替换为一个数组,每个元素对应一个要提及的用户,结构如下:
    [
      {
        "type": "mention",
        "text": "<at>张三</at>",
        "mentioned": {
          "id": "用户的AAD对象ID",
          "name": "张三"
        }
      }
    ]
    
  • ${data}:替换为FactSet的事实数组,其中需要提及用户的value字段要包含<at>用户名</at>,比如:
    [
      {
        "title": "主值班人:",
        "value": "<at>张三</at>"
      },
      {
        "title": "备值班人:",
        "value": "<at>李四</at>"
      }
    ]
    

3. 关键注意事项

  • 必须用正确的用户ID:mentioned.id必须是用户的AAD对象ID(可以通过机器人上下文turnContext.Activity.From.Id获取),不能用用户名或其他ID,否则Teams无法定位到用户。
  • 格式要严格匹配:<at>标签里的文本必须和mentioned.name完全一致,否则提及可能不生效。
  • 确保JSON语法正确:填充后的卡片JSON不能有语法错误(比如遗漏逗号、引号不匹配),否则卡片会无法正常渲染。

填充后的完整示例

这里给你一个填充好真实数据的卡片示例,你可以参考:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.6",
  "msteams": {
    "entities": [
      {
        "type": "mention",
        "text": "<at>张三</at>",
        "mentioned": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "name": "张三"
        }
      },
      {
        "type": "mention",
        "text": "<at>李四</at>",
        "mentioned": {
          "id": "987e6543-e21b-43c2-d123-987654321000",
          "name": "李四"
        }
      }
    ]
  },
  "body": [
    {
      "type": "TextBlock",
      "text": "On-call users for: 2024-05-20",
      "weight": "Bolder",
      "size": "Large",
      "wrap": true
    },
    {
      "type": "TextBlock",
      "text": "Schedule: 周末值班",
      "weight": "Bolder",
      "size": "Medium",
      "wrap": true
    },
    {
      "type": "FactSet",
      "facts": [
        {
          "title": "主值班人:",
          "value": "<at>张三</at>"
        },
        {
          "title": "备值班人:",
          "value": "<at>李四</at>"
        }
      ]
    }
  ]
}

按照这个方式配置后,你发送的自适应卡片里的用户提及应该就能正常触发Teams的@提醒了!

备注:内容来源于stack exchange,提问作者Tirumalesh Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:14:32