Echobell 与 ntfy

往一个主题发布,还是让某个具体的人手机响起来

ntfy 是一层干净的发布订阅通知服务,开源且可自托管。Echobell 刻意做得更窄:私有频道、三档紧急级别(包含真正的来电),以及 Apple Watch 送达。

Echobell
VS
ntfy

一句话结论

想自己掌控服务器、把通知当成主题流来用,ntfy 更合适。必须把某个具体的人叫醒时,Echobell 更合适。

提醒需要升级成响铃来电,或者「靠主题名不好猜」不是可接受的权限模型时,选 Echobell。

一览

Echobell

ntfy

寻址方式

私有频道,各自的触发 token 和明确的订阅者

公开的主题名,知道名字的人就能订阅

最高紧急级别

带铃声和来电界面的来电

优先级 5:更响的提示音和更长的震动

Apple Watch

可直接送达配对的 Apple Watch

通知按常规经由手机转到手表

主要差异

两者都是把一个 HTTP 请求送到你手机上,分歧在于通知是发给谁的,以及最高能升级到什么程度。

送达模型

Echobell

思路不同

一个频道有自己的触发 token,订阅者由你添加

这是两种不同的模型:ntfy 更简单,Echobell 默认是封闭的。

ntfy

思路不同

一个主题名——在公共服务器上,知道名字就能订阅

紧急上限

Echobell

原生支持

来电模式带完整来电界面响起

Echobell 能升级到通知本身已经不起作用的那一步之外。

ntfy

部分支持

优先级 5 更响、震动更久,但仍然是一条通知

托管方式

Echobell

不支持

仅提供托管服务

想让服务器、数据和权限规则都归自己,ntfy 更有优势。

ntfy

原生支持

开源、可自托管,自建实例上还能配置认证与访问控制

消息处理

Echobell

原生支持

模板和条件在服务端渲染并过滤内容

Echobell 让每个发送脚本都不必自己处理排版。

ntfy

部分支持

支持邮件发布和操作按钮,但文本仍由发送方拼好

Echobell 的优势

Echobell 用 ntfy 的灵活性,换取那些不能被漏掉的提醒上的确定性。

会响起来的提醒

来电模式以电话形式抵达,穿透静音与专注模式——这是优先级做不到的一件事。

默认封闭

频道有触发 token 和订阅者名单,没人能靠猜名字加进来。

排版只在一个地方

模板和条件跑在服务端,十个不同的发送方不必各自写一遍拼消息的代码。

最适合的场景

在 ntfy 之外再加上 Echobell 的团队,通常是因为这几件事。

值班的人必须真的醒过来— 优先级 5 已经被睡过去一次之后。
值班的人必须真的醒过来

优先级 5 已经被睡过去一次之后。

主题名在承担安全职责— 当一串不好猜的字符串是告警流和陌生人之间唯一的屏障时。
主题名在承担安全职责

当一串不好猜的字符串是告警流和陌生人之间唯一的屏障时。

提醒来自很多个发送方— 每个脚本各自拼消息,格式早已互相走样。
提醒来自很多个发送方

每个脚本各自拼消息,格式早已互相走样。

从 ntfy 迁移

两者都接受 HTTP POST,所以可以让一个频道影子跟随一个主题来做对比。

  1. 1

    为每个主题建一个频道

    频道名沿用主题名,映射关系一眼就能看清。

  2. 2

    把发布方指向频道 webhook

    用 Echobell 的 webhook 替换 ntfy 的主题 URL,JSON 请求体可以直接沿用。

  3. 3

    把优先级 5 改成来电

    凡是你用最高优先级发布的内容,都值得考虑换成来电频道。

常见问题

查找关于 Echobell 常见问题的答案

不能。ntfy 的最高优先级会播放更长更响的通知音,而 Echobell 的来电模式是真正的来电,带来电界面。

并非天然不安全。ntfy 官方的建议就是选一个猜不到的主题名,自建实例还可以要求认证。这是另一种权限模型,不是有缺陷的模型。

不能。ntfy 是开源的、你可以自己跑;Echobell 是托管服务。如果自托管是硬性要求,ntfy 才是正确答案。

主题继续用,再加一个会响的频道

把一个高优先级主题同时发布到 Echobell 的来电频道,下次触发时对比一下。