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

如何通过Adaptive Card在MS Teams频道输出审批人登录用户名

实现方案

核心逻辑

Teams 端的 Adaptive Card 本身不会自动返回交互用户的身份信息,你需要搭配 Bot Framework 捕获用户点击提交动作的请求上下文,提取用户身份后更新原有卡片或推送新消息到频道即可实现需求。

具体实现步骤

  • 第一步:构造初始待审批 Adaptive Card

初始卡片预留审批人信息展示位,动作类型使用Action.Submit,无需手动传递用户参数,Teams 会在提交请求中自动携带交互用户上下文。
初始卡片示例:

{
  "type": "AdaptiveCard",
  "version": "1.4",
  "body": [
    {
      "type": "TextBlock",
      "text": "告警待审批",
      "size": "Large",
      "weight": "Bolder"
    },
    {
      "type": "TextBlock",
      "text": "告警内容:XXX服务触发异常阈值",
      "isSubtle": true
    },
    {
      "type": "TextBlock",
      "id": "approverInfo",
      "text": "当前状态:待审批",
      "color": "Attention"
    }
  ],
  "actions": [
    {
      "type": "Action.Submit",
      "title": "批准",
      "data": {
        "action": "approve_alert"
      }
    }
  ]
}
  • 第二步:捕获提交请求提取用户信息
    用户点击审批按钮后,你的服务端会收到 Bot Framework 推送的 invoke 请求,请求的from字段直接包含交互用户的基础信息:from.name为用户显示名,from.aadObjectId为用户的AAD唯一ID,如需获取登录用户名(UPN)可以调用Graph API通过AAD ID查询userPrincipalName字段。
    请求上下文示例:
{
  "from": {
    "id": "29:xxxxxxxxxxxx",
    "name": "张三",
    "aadObjectId": "xxxx-xxxx-xxxx-xxxx"
  }
}
  • 第三步:将审批人信息同步到频道
    可选择两种实现方式:
  1. 更新原有审批卡片:调用 Bot Framework 的updateActivity接口,替换原卡片中预留的approverInfo内容为审批人信息,同时隐藏审批按钮即可。
    更新后的展示字段示例:
{
  "type": "TextBlock",
  "id": "approverInfo",
  "text": "已由 *张三(zhangsan@contoso.com)* 批准",
  "color": "Good"
}
  1. 发送新消息到频道:直接调用sendActivity接口往当前频道推送一条新消息,内容包含审批人用户名即可。

注意事项

  • 如果需要调用 Graph API 查询用户 UPN,需要提前给 Bot 授予User.Read.All应用权限
  • 确保 Adaptive Card 版本不低于1.2,兼容 Teams 的卡片更新能力

内容的提问来源于stack exchange,提问作者hare krshn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:24:03