Skip to content

钉钉群机器人推送渠道配置指南

本教程将指导你如何在 MagicPush(魔法推送)中配置钉钉群机器人推送渠道,实现向钉钉群聊发送文本和 Markdown 消息。

概述

什么是钉钉群机器人?

钉钉群机器人是钉钉内置的群聊机器人功能,可以在群中自动发送消息通知。通过 Webhook 地址即可推送,无需复杂的鉴权配置。

特点说明
推送目标钉钉群聊
鉴权方式Webhook URL(可选加签 Secret)
配置复杂度低,仅需粘贴 Webhook 地址
消息格式text、markdown
频率限制20条/分钟/机器人

前置条件

  • 拥有钉钉账号,且是某个群的管理员或群成员
  • 已部署并登录 MagicPush 管理后台

第一步:在钉钉群中获取机器人 Webhook 地址

1.1 添加群机器人

  1. 打开钉钉,进入需要添加机器人的群聊
  2. 点击右上角 「群设置」 图标(齿轮图标)
  3. 找到并点击 「机器人」
  4. 点击 「添加机器人」「自定义」
  5. 点击 「添加」 按钮
  6. 填写机器人信息:
    • 机器人名称:如 MagicPush 通知
    • 安全设置:选择一种安全方式(推荐「加签」,安全性更高)
      • 自定义关键词:消息必须包含指定关键词才能发送
      • 加签:使用 Secret 对消息进行签名校验(推荐)
      • IP地址(段):限制调用 IP
  7. 点击 「完成」

1.2 获取 Webhook 地址和 Secret

添加成功后,会显示机器人的 Webhook 地址

https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxx

📌 关键信息

  • Webhook 地址:上述完整 URL,复制后粘贴到 MagicPush
  • Secret(加签密钥):如果选择了「加签」安全设置,点击机器人详情页的 「设置」 可以查看 Secret 值

如果选择了「加签」方式,需要同时记录:

配置项示例值来源
Webhook 地址https://oapi.dingtalk.com/robot/send?access_token=...机器人添加成功页面
Secret 密钥(可选)SECxxxxxxxxxxxxxxxxxxxx机器人详情 → 设置 → 查看 Secret

💡 提示:如果不需要加签验证,Secret 留空即可,但安全性较低,建议生产环境使用加签。


第二步:在 MagicPush 中添加渠道

2.1 进入渠道管理

  1. 登录 MagicPush 管理后台(默认地址 http://<服务器IP>:3000
  2. 点击左侧导航 「渠道管理」
  3. 点击右上角 「+ 绑定渠道」 按钮

2.2 选择渠道类型

在弹出的对话框中,从渠道类型下拉列表中选择 「钉钉」

2.3 填写配置信息

根据第一步获取的信息,填写以下配置字段:

字段说明示例
Webhook 地址钉钉机器人的完整 Webhook 地址https://oapi.dingtalk.com/robot/send?access_token=...
Secret 密钥(可选)加签方式的密钥,留空则不校验签名SECxxxxxxxxxxxxxxxxxxxx

💡 安全设置说明

  • 如果钉钉机器人安全设置选择了「加签」,必须填写 Secret,否则消息发送会被拒绝
  • 如果选择了「自定义关键词」,确保发送的消息内容包含关键词
  • 如果选择了「IP地址」,确保 MagicPush 服务器 IP 在白名单中

填写完成后,给渠道起一个易于辨识的名称(如「研发告警群」),点击 「保存」

2.4 测试连通性

渠道创建成功后,在渠道卡片右侧的下拉菜单中,点击 「测试」 按钮。

  • ✅ 如果钉钉群中收到「这是一条来自魔法推送的测试消息」,说明配置成功
  • ❌ 如果测试失败,请参考下方常见问题排查

第三步:使用推送

3.1 通过 API 推送

bash
curl -X POST http://<服务器IP>:3000/api/push/<渠道ID> \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <你的API Token>" \
  -d '{
    "title": "服务异常告警",
    "content": "生产环境 API 响应时间超过 5 秒,请排查",
    "type": "markdown"
  }'

支持的消息类型(type 参数):

type 值说明
text纯文本消息(默认)
markdownMarkdown 格式消息

3.2 Markdown 消息示例

钉钉支持相对丰富的 Markdown 语法:

markdown
### 服务异常告警

**环境**:生产环境
**服务**:api-gateway
**告警内容**:响应时间超过 5 秒

> 时间:2024-06-01 14:00:00
> 触发条件:连续 3 次超过阈值

[查看详情](https://monitor.example.com/alert/12345)

支持的格式:

  • 标题(# ~ ###
  • 加粗(**text**
  • 引用(> text
  • 链接([text](url)
  • 图片(![](url)
  • 有序/无序列表

技术细节

消息长度限制

  • 文本消息:最长不超过 5000 字符
  • Markdown 消息:最长不超过 5000 字符

频率限制

钉钉群机器人限制:每个机器人最多 20 条消息/分钟

签名机制(加签)

如果配置了加签,MagicPush 会自动:

  1. 使用当前时间戳 + Secret 计算 HMAC-SHA256 签名
  2. 将 timestamp 和 sign 参数附加到 Webhook URL 上
  3. 发送签名后的请求

你无需手动处理签名,MagicPush 已自动完成。


常见问题

Q: 发送消息返回 300001 错误码?

原因:Webhook 地址格式不正确,或 access_token 无效。

解决

  1. 检查 Webhook 地址是否完整复制,没有多余空格
  2. 确认地址以 https://oapi.dingtalk.com/robot/send 开头
  3. 重新从钉钉机器人管理页复制 Webhook 地址

Q: 发送消息返回 300002 错误码?

原因:消息内容未通过安全校验。

解决

  • 如果设置了「自定义关键词」:确保消息内容包含至少一个关键词
  • 如果设置了「加签」:确保 Secret 填写正确
  • 如果设置了「IP 白名单」:确保 MagicPush 服务器 IP 在白名单中

Q: 发送消息返回 frequency limit 错误?

原因:触发了频率限制(20条/分钟)。

解决

  1. 降低推送频率,合并消息
  2. 创建多个机器人分散推送

Q: Markdown 消息中的图片无法显示?

原因:图片 URL 需要是公网可访问的地址,且钉钉支持的图片格式有限。

解决

  1. 确保图片 URL 是 https:// 开头
  2. 图片大小不超过 500KB
  3. 支持的格式:JPG、PNG

Q: 如何发送到多个群?

解决:每个钉钉群需要单独添加一个机器人,每个机器人对应一个 MagicPush 渠道。也可在钉钉中将一个机器人添加到多个群(该机器人的消息会同时发到所有已添加的群)。


参考资源

基于 MIT 许可证开源