跳到主要内容

钉钉 / 飞书 / 企业微信

三大国内办公应用的机器人 Webhook 与卡片消息。

这页办完你会得到:告警发进你的钉钉群 / 飞书群 / 企业微信群,一个媒介被所有群共用, 每个群的 token 各自填在自己的通知规则里。

最快的路径:粘贴 Webhook 地址​

如果你只是想让某个群收到告警,不用先去建媒介。在告警规则的编辑页, 通知规则 这个下拉框里有 快捷创建:把机器人的完整 Webhook 地址粘进去就行。

它能自动识别钉钉、企业微信、飞书卡片、Lark 卡片和 FlashDuty, 从地址里取出 token,查重后复用已有的通知规则,或者替你把媒介和通知规则一起建好。

识别不出来(比如 Slack、自建 webhook)就走下面的手动流程。

1. 在 IM 里建群机器人​

平台路径拿到的地址
钉钉群设置 → 智能群助手 → 添加机器人 → 自定义https://oapi.dingtalk.com/robot/send?access_token=<token>
企业微信群设置 → 群机器人 → 添加机器人 → 新建机器人https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=<uuid>
飞书群设置 → 群机器人 → 添加机器人 → 自定义机器人https://open.feishu.cn/open-apis/bot/v2/hook/<uuid>
LarkGroup settings → Bots → Add Bot → Custom Bothttps://open.larksuite.com/open-apis/bot/v2/hook/<uuid>

只有 token 那一段是要填进夜莺的,不是整条 URL——媒介里已经写好了域名和路径, 把整条 URL 粘进去会拼出一个无效地址。

2. 媒介一般不用改​

告警通知 → 通知媒介。开源版内置了 Dingtalk、Wecom、Feishu Card 三个媒介, 直接用就行;Lark 卡片在左侧类型面板里有卡片,点一下建一个。

通知媒介通知媒介

媒介里已经预置好了 URL、请求方法、请求头和请求体。只有这几种情况需要动它:

  • 要走代理才能出网:填 HTTP 配置里的代理;
  • 想按业务线分开统计或限流:复制一份媒介,改个名字;
  • 想换消息形态(比如钉钉从 markdown 换成 ActionCard):改请求体。

3. 在通知规则里填 token​

告警通知 → 通知规则 → 新增,在通知配置里:

  1. 通知媒介 选 Dingtalk / Wecom / Feishu Card;
  2. 消息模板 会自动选中同类型的那一份(Dingtalk / Wecom / FeishuCard);
  3. 填媒介参数(见下表),Bot Name 只是备注,可以不填;
  4. 勾选适用级别,否则这条配置匹配不到任何事件;
  5. 点 通知测试 → 选「使用模拟事件」,确认群里真的收到消息。

三家的字段对照​

钉钉企业微信飞书卡片Lark 卡片
媒介参数名Access TokenKeyAccess TokenToken
填什么access_token= 后面那段key= 后面的 UUID/hook/ 后面的 UUID/hook/ 后面的 UUID
内置消息模板DingtalkWecomFeishuCardLarkCard
模板字段title + contentcontenttitle + contenttitle + content
消息形态markdownmarkdown交互式卡片,恢复变绿、告警变红同飞书
频率限制20 条 / 分钟20 条 / 分钟100 条 / 分钟,5 条 / 秒同飞书

企业微信的模板只有 content 一个字段,没有标题——所以级别和规则名要写进正文第一行, 内置模板就是这么做的。

安全设置:只支持关键词和 IP 白名单​

三家建机器人时都会让你选一种安全策略。夜莺支持的是:

  • 自定义关键词:机器人只转发包含关键词的消息。挑一个必然出现在消息里的词, 比如 Triggered 或者你的规则名前缀。钉钉最多 10 个关键词,飞书最多 3 个。
  • IP 白名单:填夜莺服务器的出口 IP。

加签 / 签名校验不支持。 媒介的请求体里没有签名字段,也没地方填密钥。 建机器人时选加签,消息会被平台以 sign not match 拒绝。

@ 到具体的人​

只有钉钉支持。内置的 Dingtalk 媒介请求体里已经有 {{batchContactsAts $sendtos}} 和 atMobiles,但默认取不到人—— $sendtos 是空的。要让它生效:

  1. 编辑 Dingtalk 媒介,把变量配置 → 联系方式设成 Phone;
  2. 通知规则里就会多出 接收人 / 接收团队,选上;
  3. 这些用户的手机号要填过,并且人得在群里。

企业微信群机器人不能按手机号 @(只能在 markdown 里写 <@userid>), 飞书卡片机器人同理。

常见报错​

报错原因
keywords not in content(钉钉)/ Key Words Not Found(飞书)消息里没有你设的关键词。换个必然出现的词,或者改用 IP 白名单
sign not match / sign match fail机器人选了加签,改成关键词或 IP 白名单
invalid webhook url(企业微信)把整条 URL 填进了 Key,只填 UUID
errcode 45009(企业微信)/ 钉钉限流超过 20 条/分钟。用屏蔽规则或多建几个群分流
status_code:200 但群里没消息机器人被移出群了,或者消息被关键词策略过滤

失败详情在事件详情的通知记录里,见重试与投递状态。

下一步​