企微机器人发送卡片消息的模板参数怎么配置?

文章导读
配置企微机器人发送卡片消息,核心是在 Webhook 请求体中将 msgtype 设为 template_card,并按官方 schema 填充卡片结构,适用于需要按钮交互或结构化展示的场景。
📋 目录
  1. A 核心配置步骤
  2. B 验证方法
  3. C 常见错误排查
  4. D 参考来源
A A

配置企微机器人发送卡片消息,核心是在 Webhook 请求体中将 msgtype 设为 template_card,并按官方 schema 填充卡片结构,适用于需要按钮交互或结构化展示的场景。

先说结论:使用群机器人 Webhook 接口,消息类型指定为 template_card,参数需严格符合卡片模板 schema 定义。

  • 适合:需要用户在消息卡片上点击按钮、查看结构化信息的场景。
  • 先准备:已创建的群机器人 Webhook 地址,以及符合规范的 JSON payload。
  • 验收:发送后接口返回 errcode 为 0,且群内卡片渲染正常、按钮可点击。

核心配置步骤

1. 获取 Webhook 地址:在企微群聊中添加机器人,复制生成的 Webhook 链接,注意保留完整 URL。

2. 确定卡片类型:根据需求选择 card_type,不同类型支持的字段差异较大,切勿混用。

  • text_notice(文本通知):适合纯文本展示,必填 source、main_title、emphasis_content。
  • button_interaction(按钮交互):适合需要用户点击反馈的场景,需额外配置 action_menu 和 task_id。

3. 构造请求体:按照选定的卡片类型填充 template_card 对象。以下是一个基础的文本通知型卡片参数示例:

{
    "msgtype": "template_card",
    "template_card": {
        "card_type": "text_notice",
        "source": {
            "icon_url": "图片 URL",
            "desc": "数据来源"
        },
        "main_title": {
            "title": "标题",
            "desc": "摘要信息"
        },
        "emphasis_content": {
            "title": "重点内容",
            "desc": "重点描述"
        },
        "sub_title_text": "副标题",
        "jump_url": "点击卡片跳转链接",
        "task_id": "任务 ID"
    }
}

4. 发送请求:使用 curl 命令发起 HTTP POST 请求,需指定 Content-Type 为 application/json。

curl -X POST 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_WEBHOOK_KEY' \
-H 'Content-Type: application/json' \
-d '{"msgtype":"template_card","template_card":{"card_type":"text_notice","source":{"icon_url":"https://example.com/icon.png","desc":"测试"},"main_title":{"title":"测试标题","desc":"测试摘要"},"emphasis_content":{"title":"重点","desc":"内容"}}}'

5. 签名校验(可选但推荐):如果机器人开启了签名校验,需要在 URL 后拼接 timestamp 和 signature 参数,否则请求会被拒绝。

签名计算公式:signature = hex(hmac_sha1(secret, timestamp))

Python 实现示例:

import hmac
import hashlib
import time

def generate_signature(secret, timestamp):
    hmac_code = hmac.new(
        secret.encode(),
        timestamp.encode(),
        hashlib.sha1
    ).hexdigest()
    return hmac_code

# 使用示例
timestamp = str(int(time.time()))
signature = generate_signature("YOUR_SECRET", timestamp)
webhook_url = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY×tamp={timestamp}&signature={signature}"

验证方法

1. 检查接口响应:发送请求后,立即检查 HTTP 响应体。若返回 {"errcode":0,"errmsg":"ok"} 表示接口接收成功。

企微机器人发送卡片消息的模板参数怎么配置?

2. 观察群消息:进入企微群聊,确认卡片消息是否正常渲染,图片是否加载,文字是否截断。

3. 测试交互:如果配置了按钮或跳转链接,实际点击测试,确认是否能正确跳转 URL 或触发回调事件。

4. 查看日志:如果是自建应用接收回调,检查服务器日志是否收到企微推送的 event 事件。

常见错误排查

1. 特殊字符转义:JSON 中的双引号、换行符必须正确转义,否则会导致解析失败。

2. 内容长度限制:标题、描述等内容字段有长度限制,超出部分可能被截断或导致发送报错,具体限制需参考官方文档最新说明。

3. 图片链接要求:source 中的 icon_url 必须是可公开访问的 HTTPS 链接,内网地址或 HTTP 链接可能无法加载。

4. 签名校验遗漏:若后台开启了签名校验,忘记计算 signature 会导致请求被拦截,表现为接口返回权限错误。

5. 卡片类型混用:不同 card_type 支持的字段差异较大,不要将按钮交互型的参数填到文本通知型中。

参考来源

1. 企业微信官方文档 - 群机器人文档,页面标题:发送消息 - 模板卡片消息,URL:https://work.weixin.qq.com/api/doc/90000/90136/91770