通知系统
Rust-Srec 会记录通知事件,并可把选定事件发送到外部渠道。渠道送达语言、界面语言和仅浏览器通知彼此独立配置。
可用目标
| 目标 | v0.5 Web 界面 | 要求 |
|---|---|---|
| Webhook | 可创建、编辑、测试 | HTTPS 端点;可选请求头或认证 |
| Telegram | 可创建、编辑、测试 | 机器人令牌和 Chat ID |
| Gotify | 可创建、编辑、测试 | 服务器 URL 和应用令牌 |
| 可创建、编辑、测试 | SMTP 主机、发件人与收件人;仅在中继允许时可不填凭据 | |
| Discord | 可表示已有渠道;v0.5 表单禁用新建选择 | 后端/API 支持 Discord Webhook 设置 |
| Web Push | 按浏览器配置 | VAPID 密钥,以及 HTTPS 或 localhost |
| 实时轮询 | 按浏览器配置 | 应用标签页必须保持打开 |
| 桌面通知 | 仅桌面版 | 操作系统通知权限 |
因此 Discord 是受后端支持、但 v0.5 Web 界面新建受限的渠道,并非该版本界面中普遍可选的渠道。
配置外部渠道
- 打开通知,选择添加渠道。
- 选择 Webhook、Telegram、Gotify 或 Email,并输入易识别的渠道名称。
- 设置最低优先级、消息语言和启用状态。
- 保存后执行测试操作;接收端收到测试消息才算验证成功。
- 打开订阅管理器,选择应发送到该渠道的事件类型。
渠道设置与事件订阅相互独立。仅创建目标并不代表它会自动接收全部事件。
优先级
API 与界面设置采用 0-10 数值优先级:
| 级别 | 值 | 示例 |
|---|---|---|
| Low | 2 | 下播、分片进度、管道开始/完成 |
| Normal | 5 | 开播、下载完成、系统启动/关闭 |
| High | 8 | 下载错误/拒绝、管道失败、凭据刷新失败、百度网盘重新登录失败 |
| Critical | 10 | 致命错误、输出路径不可访问、空间不足、凭据无效 |
渠道会过滤低于其最低值的事件。在注明兼容的位置,API 也接受旧字符串 low、normal、high、critical;info 不是有效优先级。
语言
每个外部渠道可跟随服务器语言,也可覆盖为 en 或 zh-CN。RUST_SREC_LOCALE 设置后端生成消息的默认语言,与用户在 Web 界面选择的语言无关。
Web Push
生成 VAPID 密钥对,并在后端启动前设置三个变量:
bash
docker run --rm ghcr.io/hua0512/rust-srec-vapid:v0.5.1dotenv
WEB_PUSH_VAPID_PUBLIC_KEY=...
WEB_PUSH_VAPID_PRIVATE_KEY=...
WEB_PUSH_VAPID_SUBJECT=mailto:operations@example.com然后在通知页面为当前浏览器启用 Web Push、授予浏览器权限、选择优先级并发送测试。浏览器要求安全上下文;localhost 以外必须使用 HTTPS。
送达行为
外部渠道会对临时失败进行退避重试,并对反复失败的渠道使用熔断器。重试耗尽的送达会进入死信,通知事件则按配置保留周期留在事件历史中。
这些机制只能减少临时丢失,不能构成端到端送达保证。应监控接收服务,在配置变更后重新测试渠道,并为严重事件设置第二目标。
存储严重事件
out_of_space表示磁盘用量越过阈值。output_path_inaccessible表示输出根写入门因跟踪目录不可写而阻止了新录制任务。
真实磁盘满在释放空间后可于后续探测自动恢复;失效 Docker 绑定挂载可能需要重启容器,参见存储与容量。