3.2 KiB
3.2 KiB
钉钉通知集成说明
功能概述
本项目已成功集成钉钉机器人通知功能,与现有的 ServerChan3 通知系统并存,提供多渠道消息通知能力。
新增文件
1. 配置类
src/main/kotlin/com/pomelotea/hoperun/sign/config/DingTalkConfig.kt- 钉钉配置类
2. 数据模型
src/main/kotlin/com/pomelotea/hoperun/sign/api/model/DingTalkNotifyRequest.kt- 钉钉消息请求/响应模型
3. 通知助手
src/main/kotlin/com/pomelotea/hoperun/sign/notify/DingTalkNotifyHelper.kt- 钉钉通知助手类
4. 统一通知服务
src/main/kotlin/com/pomelotea/hoperun/sign/service/NotificationService.kt- 统一管理多种通知方式
配置说明
application-dev.yml 配置
dingtalk:
enabled: false # 是否启用钉钉通知
webhook: https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN
secret: YOUR_SECRET # 钉钉机器人密钥(可选)
获取钉钉机器人信息
- 在钉钉群中添加"自定义机器人"
- 安全设置选择"加签",获取密钥
- 获取 Webhook 地址
- 将配置信息填入
application-dev.yml
API 接口
测试接口
GET /api/daka/test/dingtalk- 测试钉钉通知GET /api/daka/test/serverchan- 测试ServerChan3通知GET /api/daka/test/all- 测试所有通知方式
使用示例
# 测试钉钉通知
curl http://localhost:8982/api/daka/test/dingtalk
# 测试ServerChan3通知
curl http://localhost:8982/api/daka/test/serverchan
# 测试所有通知
curl http://localhost:8982/api/daka/test/all
编程接口
NotificationService 使用
@Autowired
private lateinit var notificationService: NotificationService
// 发送所有类型的通知
notificationService.sendAllNotifications("标题", "内容")
// 只发送钉钉通知
val response = notificationService.sendDingTalkNotification("标题", "内容")
// 只发送ServerChan3通知
val response = notificationService.sendServerChanNotification("标题", "内容")
// 发送钉钉文本消息
val response = notificationService.sendDingTalkText("纯文本消息")
// 发送钉钉Markdown消息
val response = notificationService.sendDingTalkMarkdown("标题", "**Markdown** 内容")
功能特性
消息类型支持
- 文本消息: 简单文本内容
- Markdown消息: 支持丰富的格式化内容
安全特性
- 支持钉钉机器人加签验证
- 自动URL签名生成
- 错误处理和日志记录
智能切换
- 自动检测配置有效性
- 支持同时启用多种通知方式
- 配置错误时自动跳过对应通知
使用建议
- 开发测试: 先使用测试接口验证配置正确性
- 生产部署: 确保
enabled: true并填入正确的 webhook 和 secret - 消息格式: 建议使用 Markdown 格式,支持更丰富的展示效果
- 监控日志: 关注应用日志,及时发现通知发送问题
注意事项
- 确保钉钉机器人在群中有发送消息权限
- Webhook 地址不要泄露到公开仓库
- 消息发送频率不要超过钉钉限制(通常每分钟最多20条)
- 建议在生产环境中配置错误重试机制