Skip to content

钉钉群机器人通知 API

概述

钉钉群机器人通知功能允许系统在用户进行积分兑换时,自动发送美观的互动卡片消息到指定的钉钉群,让管理员能够第一时间了解兑换情况。

功能特性

  • 🎯 实时推送 - 用户兑换商品后立即发送通知
  • 🎨 美观卡片 - 结构化的互动卡片消息,信息清晰
  • 👤 用户信息 - 显示兑换用户的详细信息
  • 🛒 兑换详情 - 商品名称、数量、积分消耗等
  • 时间记录 - 精确的兑换时间记录
  • 🔗 快捷操作 - 提供"立即审核"和"查看详情"按钮
  • 🔒 安全配置 - 支持签名验证和关键词验证

API 端点

获取钉钉配置

获取当前的钉钉群机器人配置信息。

http
GET /api/admin/dingtalk-config

请求头:

Authorization: Bearer <token>
Content-Type: application/json

响应示例:

json
{
  "webhookUrl": "https://oapi.dingtalk.com/robot/send?access_token=xxx",
  "secret": "SECxxx",
  "keyword": "",
  "enabled": true,
  "isEnabled": true
}

更新钉钉配置

更新钉钉群机器人配置信息。

http
POST /api/admin/dingtalk-config

请求头:

Authorization: Bearer <token>
Content-Type: application/json

请求体:

json
{
  "webhookUrl": "https://oapi.dingtalk.com/robot/send?access_token=xxx",
  "secret": "SECxxx",
  "keyword": "学习追踪",
  "enabled": true
}

字段说明:

  • webhookUrl (string, 必需): 钉钉机器人的 Webhook URL
  • secret (string, 可选): 签名密钥,用于消息安全验证
  • keyword (string, 可选): 消息关键词过滤
  • enabled (boolean, 必需): 是否启用钉钉通知

响应示例:

json
{
  "success": true,
  "message": "配置更新成功"
}

测试钉钉连接

发送测试消息到钉钉群,验证配置是否正确。

http
POST /api/admin/dingtalk-config/test

请求头:

Authorization: Bearer <token>
Content-Type: application/json

请求体:

json
{}

响应示例:

json
{
  "success": true,
  "message": "测试消息发送成功"
}

通知消息格式

积分兑换通知

当用户进行积分兑换时,系统会自动发送以下格式的互动卡片消息:

🎁 新的积分兑换申请

---

### 👤 用户信息

👤 用户名:admin
📧 邮箱:admin@example.com

---

### 🛒 兑换详情

📦 商品名称:学习报告
🔢 兑换数量:1件
💎 消耗积分:50积分
✅ 兑换状态:✅ 已完成
⏰ 申请时间:2025/07/30 21:42:15

---

### 📋 操作提示

请及时处理兑换申请,确保用户体验!

---
*此消息由系统自动发送*

测试消息

测试连接时发送的消息格式:

🔔 钉钉通知测试消息

---

### ✅ 配置验证成功

⏰ 测试时间:2025/07/30 21:42:30
🤖 机器人状态:正常运行
🔗 连接状态:已连接

---

### 📋 测试说明

如果您收到此消息,说明钉钉群机器人配置正确!
系统将能够正常发送积分兑换通知。

---

### 🎯 下一步

现在可以进行积分兑换测试,系统会自动发送通知到群聊。

---
*此消息由系统自动发送*

错误处理

常见错误码

错误码说明解决方案
400请求参数错误检查请求参数格式
401未授权访问检查认证令牌
403权限不足确认用户具有管理员权限
500服务器内部错误检查服务器日志

钉钉API错误

错误码说明解决方案
0成功-
1时间戳无效检查系统时间是否准确
2签名无效检查签名密钥是否正确
3关键词不匹配检查消息是否包含关键词
4请求过于频繁等待一段时间后重试
5机器人被禁用在钉钉群中重新启用机器人

安全配置

签名验证

强烈建议启用签名验证以确保消息安全性:

  1. 在钉钉机器人设置中启用签名验证
  2. 获取签名密钥
  3. 在系统配置中填入签名密钥

关键词过滤

可以设置关键词过滤,只接收包含特定关键词的消息:

  1. 在钉钉机器人设置中配置关键词
  2. 在系统配置中填入相同的关键词

访问控制

  • 只有管理员用户可以访问钉钉配置功能
  • 配置信息存储在数据库中,使用加密传输
  • 敏感信息(如签名密钥)在日志中会被脱敏处理

配置示例

环境变量配置

env
# 钉钉群机器人配置(可选)
DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxx
DINGTALK_SECRET=SECxxx
DINGTALK_KEYWORD=学习追踪
DINGTALK_ENABLED=true

数据库配置

钉钉配置信息存储在 system_config 表中:

sql
-- 钉钉配置表结构
SELECT * FROM system_config WHERE key LIKE 'dingtalk%';

配置项包括:

  • dingtalk_webhook_url: Webhook URL
  • dingtalk_secret: 签名密钥
  • dingtalk_keyword: 关键词
  • dingtalk_enabled: 启用状态

最佳实践

1. 安全配置

  • 启用签名验证
  • 设置强密码的签名密钥
  • 定期更换签名密钥

2. 消息管理

  • 设置合适的关键词过滤
  • 避免发送过于频繁的消息
  • 监控消息发送状态

3. 错误处理

  • 实现重试机制
  • 记录发送日志
  • 设置告警机制

4. 性能优化

  • 使用异步发送
  • 实现消息队列
  • 避免阻塞主业务流程

故障排除

常见问题

  1. 消息发送失败

    • 检查 Webhook URL 是否正确
    • 确认机器人是否被禁用
    • 验证签名密钥是否正确
  2. 消息格式错误

    • 检查消息内容是否包含特殊字符
    • 确认消息长度是否超限
    • 验证 Markdown 格式是否正确
  3. 权限问题

    • 确认用户具有管理员权限
    • 检查认证令牌是否有效
    • 验证数据库连接是否正常

调试方法

  1. 查看日志

    bash
    tail -f logs/app.log | grep dingtalk
  2. 测试连接

    bash
    curl -X POST /api/admin/dingtalk-config/test \
      -H "Authorization: Bearer <token>" \
      -H "Content-Type: application/json" \
      -d '{}'
  3. 检查配置

    bash
    curl -X GET /api/admin/dingtalk-config \
      -H "Authorization: Bearer <token>"

🔧 最新修复

钉钉通知API更新 (2025-01-XX)

修复内容

  • 修复了钉钉通知配置的存储和读取问题
  • 优化了消息发送的异步处理机制
  • 改进了错误处理和重试逻辑
  • 增强了消息格式的兼容性

技术改进

  • 完善了钉钉配置的数据库存储机制
  • 优化了消息发送的异步队列处理
  • 改进了签名验证和关键词过滤逻辑
  • 增强了消息发送的容错性

API影响

  • 钉钉配置API现在更加稳定可靠
  • 消息发送成功率显著提升
  • 错误处理更加完善
  • 支持更多的消息格式和内容

新增功能

  • 支持批量消息发送
  • 增加了消息发送状态追踪
  • 提供了更详细的错误信息
  • 支持消息发送历史记录

Released under the MIT License.