企业微信群机器人

通过企业微信群自定义机器人(Webhook)把告警推送到企业微信群,新人可按步骤直接完成配置。

概述

企业微信群聊机器人通知媒介,用于把夜莺产生的告警事件通过企业微信群自定义机器人(Webhook)推送到指定的企微群,消息形式为 Markdown 文本。

  • 适用场景:希望把告警发到企微群,团队在群里及时响应。
  • 你需要准备:一个企业微信群,以及对该群有"添加群机器人"权限。
  • 整个配置分三步:①在企微群里添加群机器人 → ②在夜莺新建企业微信通知媒介 → ③在通知规则里填入 Key

如果你希望通过企业微信的应用消息(比如发给个人单聊、按成员 userid @ 指定人)并支持发送图文卡片,请参考 企业微信应用 文档。本文只讲最常用、最简单的群机器人方式。

第一步:在企微群里添加群机器人

  1. 打开目标企微群,右上角 群设置 → 群机器人 → 添加机器人 → 新建机器人

  2. 输入机器人名称(例如 夜莺告警)和头像,点击"添加"。

  3. 添加完成后,弹出的机器人管理页中复制 Webhook 地址,形如:

    https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    

    其中 ?key= 后面那一串就是后面夜莺里要填的 Key(实际是一个 UUID),先保存好。

企业微信官方限制:单个机器人每分钟最多发送 20 条消息,超过会被限流。如果告警量非常大,建议拆分到多个群/多个机器人,或者在通知规则里开启告警收敛。

第二步:在夜莺新建企业微信通知媒介

  1. 登录夜莺 → 左侧菜单 通知 → 通知媒介

  2. 在左侧类型面板中点击 企业微信,进入新建页面(URL /notification-channels/add?ident=wecom)。

    通知媒介入口

  3. 填写基础信息并保存,绝大部分字段系统已经预置好,只需要改一下"名称":

    企业微信通知媒介表单

    区块 字段 是否需要改 说明
    基础配置 名称 需要 例如 企微群机器人,在通知规则里选媒介时看到的就是这个名字
    基础配置 启用 保持开启 关闭后该媒介不会被发送
    变量配置 联系方式 可不填 企微群机器人的 webhook 接口不支持通过 atMobiles 参数 @ 指定人,不用选
    变量配置 参数配置 保持默认,不要删 已预置 keybot_name 两个参数,真正的 Key 在第三步通知规则里填
    HTTP 配置 URL 保持默认 https://qyapi.weixin.qq.com/cgi-bin/webhook/send
    HTTP 配置 请求方法 POST 企微 Webhook 只接受 POST
    HTTP 配置 请求头 Content-Type: application/json 默认已填好
  4. 继续向下可以看到"请求参数"和"请求体",这两段是企微发送的核心逻辑,保持默认即可

    HTTP 配置和请求体

    • 请求参数 里预置了 key = {{$params.key}},表示真正的 Key 来自于通知规则里填的 key 参数;

    • 请求体 已预置成企微 Markdown 消息格式:

      {
        "msgtype": "markdown",
        "markdown": {
          "content": "{{$tpl.content}}"
        }
      }
      

      其中 {{$tpl.content}} 来自"消息模板"里名为 Wecom 的模板(系统自带,含告警级别、规则名、触发值、标签、时间等字段)。

  5. 点击左下角 保存,一条类型为"企业微信"的通知媒介就建好了。

说明:夜莺 v8 已经不再像旧版那样在媒介本身存 Key,同一个企微媒介可以被多个群/多个机器人复用,每个通知规则填自己的 key 就行。

第三步:在通知规则里填入 Key

企微机器人 Webhook 地址里 ?key= 后面的那段 UUID,在通知规则里填:

  1. 左侧菜单 通知 → 通知规则 → 新增(或编辑已有规则)。

  2. 在"通知配置"区域:

    • 通知媒介:选择你刚才创建的企业微信媒介;
    • 消息模板:选择 Wecom(系统自带,如果没有,请到"消息模板"里导入默认模板);
    • Key:粘贴第一步从企微拿到的 Key(只填 key= 后面那一串 UUID,不要带 URL);
    • Bot Name:可选,方便自己辨识,比如 夜莺监控
    • 适用级别 / 适用时段 / 适用标签:按需过滤要推送的事件。
  3. 保存后,点击"通知测试"即可发送一条测试消息,正常情况下企微群里会立刻收到一条 Markdown 告警。

一个企微媒介 + 多个机器人

如果不同业务线希望推送到不同的群,无需新建媒介,只要在"通知规则"里新增一条规则、填写不同的 key 即可。

进阶:发送告警截图

默认请求体只发送文本消息。若要把告警曲线截图一起推送到企微群,可以在默认请求体下方再追加一段图片消息。企微机器人支持 msgtype: image,但需要先在媒介的"高级设置"中把 App 相关凭据配置好,由夜莺在发送时自动上传图片并取回 media_id。详细步骤较多,新人不建议首次配置时启用,等熟悉了基础群机器人再参考企业微信 · 群机器人配置说明 自行扩展。

常见问题

Q1:提示 invalid webhook url(webhook 地址无效)?

A:通知规则里填的 Key 格式不对。应该只填 ?key= 后面那一串 UUID,不要带 https://...?key= 前缀

Q2:提示 "errcode":93000 / "errmsg":"invalid bot"(机器人无效)?

A:Key 错了或对应的机器人已被从群里移除。回到企微群 → 群设置 → 群机器人,重新打开该机器人并确认 Webhook 地址。

Q3:消息太多被限流(返回 "errcode":45009 / too many requests)?

A:企微官方限制单机器人 20 条/分钟。建议:

  • 开启告警收敛 / 告警聚合;
  • 按业务拆分到多个群;
  • 仅把一级/二级告警发到企微,三级告警改用邮件等异步渠道。

Q4:消息收到了但没有任何格式,显示一大段原始 JSON?

A:请求体里 msgtype 必须是 markdown,且 JSON 格式要合法。如果你改过请求体,先对照 企微 markdown 消息格式 校验,保存前使用 JSON 格式化工具确认没有语法错。

Q5:能否在请求体里直接填完整 URL?

A:可以。系统对 key 的取值做了兼容——如果填写的值以 http://https:// 开头,会当作完整 Webhook 地址直接发送;否则会拼成 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=<你填的值>

Q6:支持 @ 指定成员吗?

A:企业微信群机器人的 webhook 接口不支持像钉钉那样通过 atMobiles 参数 @ 手机号——只能在 markdown 内容中用 <@userid> 手工嵌入企业微信的成员 userid,使用相对复杂。如果确需 @ 指定人,推荐改用企业微信应用消息

参考资料

更新时间 2026-04-25

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云