notify · 统一消息发送器

一个入口,多个渠道;加渠道不用改调用方

常用

notify "标题" "正文"                         默认按 info 路由
notify -l urgent "板子失联" "T1 ping 不通"
notify -c wecom -c email "周报" "见正文"      指定渠道
notify --publish ./x.html --sub 名字 "标题" "说明"
cat report.md | notify "周报" -              正文走管道
notify channels                             渠道体检表

这一页就是 --publish 发出来的,消息也是 notify 自己推的。

渠道现状

渠道MacT1 板子说明
wecom经 relay企业微信,主通道
email经 relay长报告 / 附件 / 存档
t1voice板子喇叭,直接念出来
relay借道 Mac 发企业微信
bark / ntfy待配待配手机推送,可穿透静音
macos待配Mac 横幅
sms未实现未实现断网也能收,留给真紧急

降级链

T1 发消息
 ├─ relay ──→ Mac ──→ 企业微信 / 邮件
 └─ 失败(Mac 不在同网段)
    └─ 兜底:板子用喇叭喊出来

重点不是渠道多,是不会静悄悄地失败。全部渠道都没发出去时 notify 返回非 0。

加一个渠道要做什么

@register
class Foo(Channel):
    name = "foo"
    def check(self): ...   # 能不能用 + 为什么
    def send(self, msg): ...  # 自己把 Message 转成自家格式

路由、CLI、所有调用方都不用动 —— 这是把渠道收进网关的意义。