forked from erp-dev/erp
294 lines
6.4 KiB
Markdown
294 lines
6.4 KiB
Markdown
# Notifier 管理人员配置说明
|
|
|
|
本文档面向后台管理人员,说明如何在 Django Admin 中配置 `Notifier`,让系统在指定业务事件发生时自动发送通知。
|
|
|
|
## 1. Notifier 是什么
|
|
|
|
`Notifier` 可以理解为一条“通知规则”。
|
|
|
|
当某个业务事件发生时,系统会根据以下条件查找可用的通知器:
|
|
|
|
- 商户一致
|
|
- `event_key` 一致
|
|
- `is_enabled=True`
|
|
|
|
找到后,系统会自动:
|
|
|
|
1. 使用对应模板渲染消息内容
|
|
2. 按配置的渠道发送
|
|
3. 记录发送日志
|
|
|
|
当前已支持的渠道:
|
|
|
|
- 企业微信机器人 `wecom_webhook`
|
|
|
|
## 2. 当前已支持的事件
|
|
|
|
目前 `mission` 模块已接入以下事件:
|
|
|
|
- `mission.created`:任务创建
|
|
- `mission.replied`:任务有新回应
|
|
- `mission.completed`:任务完成
|
|
- `mission.reply_rejected`:任务回应被撤销
|
|
- `mission.reopened`:任务被重新打开
|
|
- `mission.cancelled`:任务被取消
|
|
|
|
如果要让某个事件发送通知,只需要在后台新增对应 `event_key` 的 `Notifier`。
|
|
|
|
## 3. 在哪里配置
|
|
|
|
进入 Django Admin 后,找到:
|
|
|
|
- `通知器`
|
|
|
|
然后点击“新增”即可。
|
|
|
|
## 4. 字段说明
|
|
|
|
创建 `Notifier` 时,需要填写以下字段。
|
|
|
|
### 4.1 merchant
|
|
|
|
所属商户。
|
|
|
|
通知器只会匹配当前商户下发生的事件。
|
|
不同商户如果都需要通知,需要分别创建各自的 `Notifier`。
|
|
|
|
### 4.2 name
|
|
|
|
通知器名称,仅用于后台识别和管理。
|
|
|
|
建议命名方式:
|
|
|
|
- `任务创建通知-生产群`
|
|
- `任务完成通知-老板群`
|
|
- `任务取消通知-客服群`
|
|
|
|
同一商户下名称不能重复。
|
|
|
|
### 4.3 event_key
|
|
|
|
要监听的业务事件标识。
|
|
|
|
这是最核心的绑定字段。
|
|
它决定这条 `Notifier` 绑定到哪个业务信号。
|
|
|
|
例如:
|
|
|
|
- `mission.completed` 表示“任务完成时发送”
|
|
- `mission.cancelled` 表示“任务取消时发送”
|
|
|
|
### 4.4 channel
|
|
|
|
通知渠道。
|
|
|
|
当前固定选:
|
|
|
|
- `wecom_webhook`
|
|
|
|
### 4.5 template_key
|
|
|
|
消息模板标识。
|
|
|
|
系统会根据这个字段去固定目录查找模板文件。
|
|
当前模板目录为:
|
|
|
|
`notifier/templates/notifier/events/`
|
|
|
|
例如:
|
|
|
|
- `template_key = mission_completed`
|
|
- 对应模板文件:`notifier/templates/notifier/events/mission_completed.md`
|
|
|
|
### 4.6 is_enabled
|
|
|
|
是否启用。
|
|
|
|
- 勾选:该 `Notifier` 生效
|
|
- 不勾选:该 `Notifier` 不会参与匹配和发送
|
|
|
|
### 4.7 config
|
|
|
|
渠道配置,使用 JSON 格式填写。
|
|
|
|
当前企业微信机器人建议配置如下:
|
|
|
|
```json
|
|
{
|
|
"key": "你的企业微信机器人key",
|
|
"msgtype": "markdown",
|
|
"timeout_seconds": 10
|
|
}
|
|
```
|
|
|
|
字段说明:
|
|
|
|
- `key`:企业微信机器人 webhook key
|
|
- `msgtype`:消息类型,建议用 `markdown`
|
|
- `timeout_seconds`:请求超时时间,单位秒
|
|
|
|
### 4.8 description
|
|
|
|
备注说明,非必填。
|
|
|
|
建议写清楚这条通知器的用途,例如:
|
|
|
|
- `用于生产部任务完成通知`
|
|
- `用于客服查看任务取消`
|
|
|
|
## 5. 配置步骤
|
|
|
|
以“任务完成时发送企业微信通知”为例:
|
|
|
|
1. 进入 Admin 的 `通知器`
|
|
2. 点击“新增”
|
|
3. 选择 `merchant`
|
|
4. 填写 `name`
|
|
5. 选择 `event_key = mission.completed`
|
|
6. 选择 `channel = wecom_webhook`
|
|
7. 填写 `template_key = mission_completed`
|
|
8. 在 `config` 中填写 webhook 参数
|
|
9. 勾选 `is_enabled`
|
|
10. 保存
|
|
|
|
保存后,只要该商户下发生“任务完成”事件,系统就会自动尝试发送通知。
|
|
|
|
## 6. 推荐配置示例
|
|
|
|
### 6.1 示例一:任务创建通知
|
|
|
|
适合发到内部任务协作群。
|
|
|
|
字段建议:
|
|
|
|
- `name`: `任务创建通知-协作群`
|
|
- `event_key`: `mission.created`
|
|
- `channel`: `wecom_webhook`
|
|
- `template_key`: `mission_created`
|
|
- `is_enabled`: 勾选
|
|
|
|
`config` 示例:
|
|
|
|
```json
|
|
{
|
|
"key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
|
|
"msgtype": "markdown",
|
|
"timeout_seconds": 10
|
|
}
|
|
```
|
|
|
|
### 6.2 示例二:任务完成通知
|
|
|
|
适合发到管理群或老板群。
|
|
|
|
字段建议:
|
|
|
|
- `name`: `任务完成通知-管理群`
|
|
- `event_key`: `mission.completed`
|
|
- `channel`: `wecom_webhook`
|
|
- `template_key`: `mission_completed`
|
|
- `is_enabled`: 勾选
|
|
|
|
### 6.3 示例三:任务取消通知
|
|
|
|
适合发到客服或跟单群。
|
|
|
|
字段建议:
|
|
|
|
- `name`: `任务取消通知-客服群`
|
|
- `event_key`: `mission.cancelled`
|
|
- `channel`: `wecom_webhook`
|
|
- `template_key`: `mission_cancelled`
|
|
- `is_enabled`: 勾选
|
|
|
|
## 7. 一个事件是否可以绑定多个 Notifier
|
|
|
|
可以。
|
|
|
|
例如同一个商户下,`mission.completed` 可以同时配置:
|
|
|
|
- 一条发到生产群
|
|
- 一条发到老板群
|
|
- 一条发到客服群
|
|
|
|
只要它们满足:
|
|
|
|
- `merchant` 相同
|
|
- `event_key` 相同
|
|
- `is_enabled=True`
|
|
|
|
系统就会逐条发送。
|
|
|
|
## 8. 模板如何对应
|
|
|
|
当前系统已内置以下模板:
|
|
|
|
- `mission_created`
|
|
- `mission_replied`
|
|
- `mission_completed`
|
|
- `mission_reply_rejected`
|
|
- `mission_reopened`
|
|
- `mission_cancelled`
|
|
|
|
管理人员通常只需要填 `template_key`,不需要改代码。
|
|
如果后续要新增模板内容或调整文案,需要由开发人员修改模板文件。
|
|
|
|
## 9. 如何停用某条通知
|
|
|
|
如果暂时不想让某条通知继续发送,不需要删除,只需要:
|
|
|
|
1. 打开该 `Notifier`
|
|
2. 取消勾选 `is_enabled`
|
|
3. 保存
|
|
|
|
这样最安全,也方便后续恢复。
|
|
|
|
## 10. 常见问题
|
|
|
|
### 10.1 为什么事件发生了,但没有收到通知
|
|
|
|
请依次检查:
|
|
|
|
1. `Notifier` 是否已勾选 `is_enabled`
|
|
2. `merchant` 是否配置正确
|
|
3. `event_key` 是否选对
|
|
4. `template_key` 是否与现有模板匹配
|
|
5. `config.key` 是否填写正确
|
|
6. Celery worker 是否已启动
|
|
|
|
### 10.2 为什么同一个事件发了多次
|
|
|
|
通常是因为配置了多条相同 `merchant + event_key` 的启用状态通知器。
|
|
这不一定是错误,也可能是有意发往多个群。
|
|
|
|
如果不希望多发,请检查是否存在重复配置。
|
|
|
|
### 10.3 是否建议删除 Notifier
|
|
|
|
一般不建议优先删除,建议先停用:
|
|
|
|
- 更安全
|
|
- 方便回滚
|
|
- 方便排查历史配置
|
|
|
|
## 11. 管理建议
|
|
|
|
建议按下面的方式维护:
|
|
|
|
- 名称中写清楚用途和群目标
|
|
- 先停用再删除
|
|
- 一个事件先配一条验证,确认无误后再扩展到多个群
|
|
- `description` 中注明负责人或用途
|
|
|
|
## 12. 给管理人员的最简操作结论
|
|
|
|
如果你只想快速配置一条通知,记住这 5 个关键点就够了:
|
|
|
|
1. 选对 `merchant`
|
|
2. 选对 `event_key`
|
|
3. 选 `channel = wecom_webhook`
|
|
4. 填对 `template_key`
|
|
5. 在 `config` 填正确的企业微信机器人 `key`
|
|
|
|
这样保存后,对应事件发生时就会自动发送。
|