Microsoft Teams可操作卡片HttpPost返回状态与操作记录实现咨询
Microsoft Teams 告警卡片实现最优方案
1. 发送带Approve/Deny按钮的告警卡片
你当前使用的MessageCard格式可直接满足该需求,通过Teams频道的Incoming Webhook接口发送该卡片payload即可完成推送。
2. 双按钮配置HttpPost动作
现有payload中Deny按钮当前使用的是OpenUri类型,直接调整为HttpPost类型即可,和Approve按钮配置逻辑保持一致,target字段填写对应后端接收地址即可,修正后的完整payload参考:
{ "@type":"MessageCard", "@context":"http://schema.org/extensions", "themeColor":"0076D7", "text":"### Build [($BUILD_NUMBER)]($CONSOLE_LINK) of [($BUILD_LINK)]($BUILD_URL) failed on [($BM_NAME)]($JENKINS_URL)", "potentialAction":[ { "@type":"HttpPost", "name":"Approve", "body": "verification.approve", "target":"<你的批准操作后端接收地址>" }, { "@type": "HttpPost", "name": "Deny", "body": "verification.deny", "target":"<你的拒绝操作后端接收地址>" } ] }
3. 点击按钮后返回操作提示
Teams客户端原生支持识别HttpPost请求的响应信息:
- 后端处理请求完成返回200状态码时,在响应头中添加
CARD-ACTION-STATUS字段,字段值设置为你需要展示的提示内容(如“Approved”),客户端就会自动弹出该提示 - 若需要所有频道成员可见操作结果,可在200响应体中返回更新后的完整MessageCard结构,同时添加响应头
CARD-UPDATE-IN-BODY: true,频道内的原有卡片会自动替换为你返回的新卡片内容
4. 携带操作人身份信息
Teams触发HttpPost请求时,会自动在请求头中附带JWT格式的授权令牌,后端解析该令牌即可获取操作人的Azure AD身份信息,包含姓名、邮箱、用户ID等字段:
- 拿到身份信息后可直接拼接在
CARD-ACTION-STATUS的提示内容中,比如返回“已由张三(zhangsan@company.com)批准” - 若同步更新原卡片,可将操作人信息写入卡片文本,所有频道成员无需额外操作即可直接看到操作记录
内容的提问来源于stack exchange,提问作者hare krshn
相关产品推荐
相关产品推荐

