不写代码,把业务系统的通知接到 IM

1. webhook-server 使用指南

项目地址:https://github.com/wildfirechat/webhook-server

很多业务系统本来就有 Webhook / 回调 / 通知功能:

  • 腾讯云监控可以配置“告警回调”;
  • GitLab 可以配置项目 Webhook;
  • Grafana 可以配置 Contact point;
  • Alertmanager 可以配置 receiver;
  • 自建系统大多也能在“通知设置”里填一个 HTTP 地址。

你不需要开发对接,也不需要调 SDK。只要把业务系统里现成的 Webhook 地址,填成本服务的回调地址, 消息就会按你配置的目标发送到 IM。

整个过程只有三步:

  1. 在管理后台建一个 Webhook,选好“发给谁”;
  2. 把生成的回调地址填到业务系统的 Webhook 配置里;
  3. 触发一次,确认 IM 收到消息。

2. 开始前,先确认三件事

  1. 服务已经启动:浏览器能打开管理后台,并有一个管理账号;
  2. IM 能发消息:管理后台【设置】里 IM 状态为“可用”,且有一个可用的发送者账号;
  3. 业务系统能访问这个地址:公网系统需要公网 HTTPS 地址;内网系统走内网地址即可。

管理后台的登录口令和回调密钥是两回事:

  • 登录口令:只给你自己登录后台用;
  • 回调密钥:每个 Webhook 一把,交给业务系统用,只能触发这一条配置。

3. 第一步:在后台建一个 Webhook

登录管理后台,进入【Webhook 配置】→【+ 新建 Webhook】。

3.1. 1. 填名称

例如“腾讯云告警-服务器”“GitLab 提交通知”,方便自己区分。

3.2. 2. 选发送者

发送者是消息在 IM 里显示的账号。

  • 留空:使用默认发送者(im.admin-id);
  • 点【选择发送者】:弹窗里可以按账号名、昵称、用户 ID、手机号搜索。

建议用专门的机器人/业务账号,不要用某个真人的账号代发。

3.3. 3. 选目标(消息发给谁)

点【+ 添加】,选择:

  • 用户(搜索选择):按账号名 / 昵称搜索;
  • 群(搜索选择):按群名搜索;
  • 用户 / 群(手动输入):知道 ID 时直接填。

可以加多个目标,也可以用户和群混着加。保存后目标就固定了,之后每次回调都会发给这些人/群。

3.4. 4. 选内容格式

两种方式:

  • 纯文本(原文直发):业务系统发来什么 body,就原样当消息发出去;
  • JS 脚本处理:用模板或几行脚本,把 JSON 变成人看得懂的文本。

如果业务系统发的是 JSON,直接“原文直发”也能收到,只是消息里会是一串 JSON。 腾讯云、Alertmanager、Grafana、GitLab 这些常见来源,可以直接在脚本框上方选内置模板:

  • 腾讯云监控(指标 / 事件告警)
  • Alertmanager
  • Grafana
  • GitLab push
  • 通用示例

3.5. 5. 保存,复制地址

保存后回到列表,点【复制链接】,会得到类似:

https://你的域名/webhook/6dfb3c01e197438d9d8b59619f0d18f2?secret=1f8e825f5f75d352697e393bdcc641be

这个地址就是给业务系统用的回调地址。

地址里的 secret 是这条配置的密钥,不要发到群里,也不要用管理后台的登录口令代替。


4. 第二步:填到业务系统的 Webhook 里

不同系统的入口名字不一样,但本质都是同一个东西:一个能填 URL、能选事件、能发 POST 的配置页。

通用填法:

填什么 怎么填
URL / 回调地址 上一步复制的完整地址(含 ?secret=...)
请求方法 POST
请求头(推荐) X-Webhook-Secret: <密钥>,这样密钥不放在 URL 里
触发事件 按业务需要勾选(告警触发/恢复、push、merge 等)
SSL 校验 如果地址是 HTTPS 且证书正常,保持开启

如果系统支持自定义请求头,优先用请求头传密钥;不支持时再用 URL 里的 ?secret=。

4.1. 腾讯云监控

  1. 腾讯云可观测平台 → 告警管理 → 告警配置 → 通知模板;
  2. 新建通知模板,在“接口回调”里填本服务的地址;
  3. 密钥可以放 URL,也可以在自定义请求头里加 X-Webhook-Secret;
  4. 保存后,把通知模板绑定到告警策略;
  5. 回到本服务编辑配置,文本内容选“JS 脚本处理”,插入“腾讯云监控(指标 / 事件告警)”模板;
  6. 在测试面板选择“腾讯云:指标告警”或“腾讯云:事件告警(恢复)”,点运行可以先看效果。

腾讯云触发和恢复都会回调;模板会自动区分:

【告警】CPU 告警
级别:严重 类型:指标
对象:云服务器-基础监控(unInstanceId=ins-xxx)
指标/事件:基础CPU利用率(当前值 95%)
时间:2026-11-13 10:00:00
持续:300 秒

4.2. GitLab

项目 → Settings → Webhooks → Add new webhook:

  • URL 填本服务地址(带 ?secret=);
  • 勾选需要的事件(Push events、Merge request events 等);
  • 保存后点 Test,选择 Push events。

然后在本服务里插入“GitLab push”文本模板即可。

GitLab 的 “Secret token” 字段发的是 X-Gitlab-Token,本服务不识别这个头; 密钥请放在 URL 的 ?secret= 里。

4.3. Grafana

Alerting → Contact points → 新建 Webhook:

  • URL 填本服务地址,密钥放 URL 的 ?secret=(Grafana 的 Authorization 头不是本服务的密钥头);
  • 保存后在告警规则里绑定这个 Contact point。

文本模板选“Grafana”。

4.4. Alertmanager

在 receiver 里配置:

receivers:
  - name: webhook-server
    webhook_configs:
      - url: 'https://你的域名/webhook/配置ID?secret=密钥'

目标模板和文本模板都选 Alertmanager,receiver 字段可以直接映射成值班账号。

4.5. 自建系统 / 其他系统

找“Webhook”“回调”“通知”“HTTP 推送”这类设置,填本服务地址即可。 只要对方能发 POST、能带一个自定义请求头(或 URL 参数),就能接。

不要把本服务地址填成钉钉/企业微信/飞书机器人的地址——那些是“消息最终展示的平台”。 本服务负责把消息送到 IM;如果业务系统只会发钉钉格式,可以在本服务里选/写一个文本模板转换,不需要改业务系统代码。


5. 第三步:触发一次,验证

在业务系统里点“测试”,或者实际触发一次告警。

然后:

  1. 看 IM 是否收到消息;
  2. 回到本服务【调用记录】,看这一条记录:
    • 发给了哪些用户/群;
    • 成功几个、失败几个;
    • 失败原因;
    • 来源 IP、时间、耗时。

如果没收到,先看调用记录里有没有这次请求:

  • 没有记录:业务系统根本没发出来,或地址填错、网络不通;
  • 有记录但失败:看失败原因,常见的是密钥不对、配置停用、目标用户不存在、IM 不可用。

6. 消息内容怎么变好看(仍然不用开发)

大多数场景不需要写代码:

  1. 先选一个接近的内置模板;
  2. 在“测试”面板里选择对应的样例数据;
  3. 点“运行”,看输出的文本;
  4. 满意就保存。

模板覆盖了腾讯云、Alertmanager、Grafana、GitLab 和通用 JSON。 如果字段对不上,可以:

  • 换一个样例/模板;
  • 或者只改模板里的字段名(仍然是在页面上改,不用发版、不用重启);
  • 实在需要复杂逻辑,再用几行 JS,例如按标签映射值班人。

发送目标也一样:固定目标适合“永远发给这个群”,脚本目标适合“按告警内容找人”。


7. 常见问题

现象 原因 / 处理
返回 401 没带密钥、密钥不对,或这条配置没有密钥;检查 URL/请求头
返回 403 配置被停用了;到后台启用
返回 404 配置 ID 不对,或地址被改过
返回 400 没有解析出目标、文本为空、脚本报错;看返回 message 或调用记录
返回 413 请求体超过 1MB;减少内容
返回 502 有目标但全部发送失败;看 IM 状态和失败原因
返回 503 发送或脚本资源繁忙;稍后重试
IM 收到的是一串 JSON 文本内容选了“原文直发”;改成脚本模板
搜不到目标用户 目标选择按账号名/昵称搜索;可直接手动填用户 ID
腾讯云重复收到消息 腾讯云回调超时 5 秒、失败重试 3 次;目标多/IM 慢时可能重试。可减少目标,或把 webhook.send-budget-ms 调小
后台打不开 / 登录不上 管理后台建议只开内网;检查地址、账号口令、是否被登录锁定
换域名/IP 后地址不对 修改 webhook.base-url 后重启,或重新复制回调地址

8. 上线前检查清单

  • 业务系统填的是本服务的回调地址,不是 IM 地址,也不是钉钉/飞书机器人地址;
  • 密钥通过请求头或 URL 正确传入,没有把管理后台口令填进去;
  • 目标用户/群已经在 IM 里存在;
  • 发送者是专门的机器人/业务账号;
  • 管理后台只开给内网/办公网,对外回调走 HTTPS;
  • 触发一次测试,调用记录里能看到成功结果。

9. 一句话总结

业务系统本来就会发 Webhook,你只需要在它里面填一个地址; 本服务负责验密钥、找对人、把 JSON 变成消息、发到 IM,并留下记录。

不用开发对接,配置完就能用。

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2026-11-13 06:02:15

results matching ""

    No results matching ""