增加钉钉通知
This commit is contained in:
110
DINGTALK_SETUP.md
Normal file
110
DINGTALK_SETUP.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# 钉钉通知集成说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
本项目已成功集成钉钉机器人通知功能,与现有的 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 配置
|
||||
```yaml
|
||||
dingtalk:
|
||||
enabled: false # 是否启用钉钉通知
|
||||
webhook: https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN
|
||||
secret: YOUR_SECRET # 钉钉机器人密钥(可选)
|
||||
```
|
||||
|
||||
### 获取钉钉机器人信息
|
||||
|
||||
1. 在钉钉群中添加"自定义机器人"
|
||||
2. 安全设置选择"加签",获取密钥
|
||||
3. 获取 Webhook 地址
|
||||
4. 将配置信息填入 `application-dev.yml`
|
||||
|
||||
## API 接口
|
||||
|
||||
### 测试接口
|
||||
- `GET /api/daka/test/dingtalk` - 测试钉钉通知
|
||||
- `GET /api/daka/test/serverchan` - 测试ServerChan3通知
|
||||
- `GET /api/daka/test/all` - 测试所有通知方式
|
||||
|
||||
### 使用示例
|
||||
|
||||
```bash
|
||||
# 测试钉钉通知
|
||||
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 使用
|
||||
|
||||
```kotlin
|
||||
@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签名生成
|
||||
- 错误处理和日志记录
|
||||
|
||||
### 智能切换
|
||||
- 自动检测配置有效性
|
||||
- 支持同时启用多种通知方式
|
||||
- 配置错误时自动跳过对应通知
|
||||
|
||||
## 使用建议
|
||||
|
||||
1. **开发测试**: 先使用测试接口验证配置正确性
|
||||
2. **生产部署**: 确保 `enabled: true` 并填入正确的 webhook 和 secret
|
||||
3. **消息格式**: 建议使用 Markdown 格式,支持更丰富的展示效果
|
||||
4. **监控日志**: 关注应用日志,及时发现通知发送问题
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 确保钉钉机器人在群中有发送消息权限
|
||||
2. Webhook 地址不要泄露到公开仓库
|
||||
3. 消息发送频率不要超过钉钉限制(通常每分钟最多20条)
|
||||
4. 建议在生产环境中配置错误重试机制
|
||||
Reference in New Issue
Block a user