企业微信
企业微信群机器人是最简单的通道。没有额外签名 —— webhook URL 里的 bot key 就是凭据。
| 模式 | 状态 |
|---|---|
| Notification | 支持。群机器人文本推送。 |
| IM bridge | 不支持(企微机器人不承载入站对话)。 |
载荷
企微群机器人接受和钉钉一样的扁平文本:
{
"msgtype": "text",
"text": {"content": "[CRITICAL] node-01 swap_high\nswap_in_pages > 1000 for 5m\nsource: alert\ndedupe: alert:swap_high:device=7"}
}body 由飞书 / 钉钉共用的 formatText helper 构造。Sender 是 NewWeComSender。
无签名
webhook URL 形如:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=<bot-uuid>key= query 参数是 bot 标识和凭据。谁拿到 URL 谁就能往群里发。没有独立 secret、没有 HMAC、没有时间戳。sender 忽略 Secret 字段里任何输入 —— 和 Slack 一样的构造时丢弃策略。
URL 当密码看
泄露 URL 等同于泄露 bot 的发帖权限。轮换方式是在企微群里把 bot 删了再加(key 会变)。
配置
- 在桌面端企微群 → 群机器人 → 添加机器人 → 添加 → 新建。给名字和头像。
- 企微会显示 Webhook 地址。整条复制 —— 包括
?key=…query。 - 在 Ongrid:Settings → Channels → New → Provider =
wecom→ Endpoint = 第 2 步那个 URL。Secret 留空。 - 点 Test。bot 会往群里发
[INFO] Ongrid test。
小坑
一个 bot 只对应一个群
每个企微群机器人作用域是 一个群。要发到两个群就建两个 bot 两个 Ongrid 通道。(钉钉和飞书也是这样;告警流水线关心的抽象是通道,不是聊天平台。)
载荷里没有 mentioned_list
sender 只发纯文本。@特定成员(mentioned_list / mentioned_mobile_list)还没做 —— 今天要用的话改用通用 webhook。
消息频率上限
企微群机器人每分钟上限 20 条。爆量后返 errcode: 45009("api freq out of limit")。告警流水线的按规则降噪通常足够,但 100 台主机集群的一条吵闹关键规则可能撑爆它。必要时用多个 bot 按团队路由。
主要是国内场景
qyapi.weixin.qq.com 是面向国内部署的。海外团队更适合 Slack / Telegram / Larksuite。WeCom for International(腾讯海外产品)是另一套 API 面,今天没接。
与其他国内 IM 对比
| 方面 | 企业微信 | 飞书 | 钉钉 |
|---|---|---|---|
| 鉴权 | 仅 URL key= | body 里的 sign | URL query 的 sign |
| 签名算法 | 无 | HMAC-SHA256 | HMAC-SHA256 |
| 配置步骤 | 2 步(加 bot、粘贴) | 4 步(签名 + secret) | 4 步(签名 + secret) |
| IM bridge 支持 | 否 | 是(长连接) | 仅 schema |
第一次配通道就从企微开始
最容易配,最难配错。如果告警没到,99% 是 bot 从群里被删了,或者主机访问不到 qyapi.weixin.qq.com。