钉钉自定义机器人
钉钉自定义机器人适合固定群聊通知。本文依据钉钉开放平台资料整理,核验日期为 2026-09-08;未使用真实组织完成发送验证。
- 有目标群的机器人管理权限。
- 发送端可通过 HTTPS 访问钉钉开放接口。
- 已选择关键词、IP 地址或加签等安全设置。
- 在目标群的机器人管理中添加自定义机器人。
- 填写机器人名称并选择安全设置。
- 保存包含
access_token的 Webhook。 - 启用加签时,同时保存生成的 Secret,并按官方算法生成
timestamp与sign。
| 字段 | 必需 | 说明 |
|---|---|---|
WEBHOOK_URL | 是 | 包含机器人 Access Token 的完整地址 |
SIGNING_SECRET | 启用加签时 | 以 SEC 开头的签名密钥 |
KEYWORD | 启用关键词时 | 消息中必须出现的安全关键词 |
JavaScript 示例需要 Node.js 20 或更新版本;Python 示例需要安装 requests。
curl -X POST "$WEBHOOK_URL" \ -H 'Content-Type: application/json' \ -d '{"msgtype":"text","text":{"content":"通知渠道连通性测试"}}'const response = await fetch(process.env.WEBHOOK_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ msgtype: 'text', text: { content: '通知渠道连通性测试' }, }),});
if (!response.ok) throw new Error(`HTTP ${response.status}`);console.log(await response.json());import osimport requests
response = requests.post( os.environ["WEBHOOK_URL"], json={"msgtype": "text", "text": {"content": "通知渠道连通性测试"}}, timeout=15,)response.raise_for_status()print(response.json())开启加签后,将按当前时间和 Secret 生成的参数加入 Webhook 查询字符串。
检查响应业务码为成功,并确认目标群收到文本。随后再测试 Markdown、链接或卡片,不要一开始就使用复杂消息体。
- Webhook、Access Token 和 Secret 均按密钥处理。
- 加签请求要限制时间戳偏移,发送服务器应保持时间同步。
- 泄露后立即重置或删除机器人,并更新调用方配置。
关键词错误:消息正文没有包含已配置关键词。
签名错误:检查时间戳单位、URL 编码和 HMAC-SHA256 计算顺序。
发送频率受限:按返回码退避,不要对参数错误持续重试。