Echobell と ntfy

トピックに配信するか、特定の人の電話を鳴らすか

ntfy は通知のための素直な Pub/Sub レイヤーで、オープンソースかつセルフホスト可能です。Echobell は意図的にもっと狭く作られています。プライベートなチャンネル、本物の着信を含む 3 段階の緊急度、そして Apple Watch への配信です。

Echobell
VS
ntfy

要点

サーバーを自分で持ち、通知をトピックの流れとして扱いたいなら ntfy のほうが適しています。特定の人を必ず起こさなければならないなら Echobell です。

通知が鳴る着信まで上がる必要がある場合、あるいは「推測されにくいトピック名」が許容できるアクセス制御でない場合は Echobell を選んでください。

ひと目で比較

Echobell

ntfy

宛先の考え方

チャンネルごとのトークンと、明示的な購読者を持つプライベートなチャンネル

公開のトピック名。知っている人なら誰でも購読できる

最も強い緊急度

着信音と通話画面を伴う着信

優先度 5:より大きな音と長めの振動

Apple Watch

ペアリングした Apple Watch に配信される

通知は通常どおり iPhone 経由で時計に届く

主な違い

どちらも HTTP リクエストを手元の端末に届けます。意見が分かれるのは、通知が誰に宛てられているか、そしてどこまで上げられるかです。

配信モデル

Echobell

異なる方針

独自のトリガートークンを持つチャンネルと、自分で追加する購読者

性質の異なる 2 つのモデルです。ntfy は単純で、Echobell は既定で閉じています。

ntfy

異なる方針

トピック名。公開サーバーでは名前を知っていれば購読できる

緊急度の上限

Echobell

標準対応

着信モードはフル画面の通話画面で鳴る

通知では届かなくなる地点より先に、Echobell は上げられます。

ntfy

一部対応

優先度 5 は大きく鳴り長く振動するが、あくまで通知のまま

ホスティング

Echobell

非対応

マネージドサービスのみ

サーバーもデータもアクセス制御も自分のものにしたいなら ntfy が有利です。

ntfy

標準対応

オープンソースでセルフホスト可能。自前インスタンスでは認証と ACL も設定できる

メッセージの整形

Echobell

標準対応

テンプレートと条件がサーバー側で内容を組み立て、絞り込む

通知を送るすべてのスクリプトから整形処理を追い出せます。

ntfy

一部対応

メールからの配信やアクションボタンはあるが、文面自体は送信側が組み立てる

Echobell が優れている点

Echobell は ntfy の柔軟さを手放す代わりに、落とせない通知での確実さを取っています。

鳴る通知

着信モードは消音と集中モードを貫通して電話として届きます。優先度の設定だけでは決してできないことです。

既定で閉じている

チャンネルにはトリガートークンと購読者リストがあるため、名前を推測して入ってくる人はいません。

整形はひとつの場所に

テンプレートと条件はサーバー側で動くので、10 個の送信元がそれぞれ文面組み立てのコードを持つ必要がありません。

適したケース

ntfy に加えて Echobell を導入する理由は、たいていこの 3 つです。

オンコール担当が本当に起きる必要がある— 優先度 5 を一度寝過ごしてしまったあと。
オンコール担当が本当に起きる必要がある

優先度 5 を一度寝過ごしてしまったあと。

トピック名がセキュリティを担っている— 推測できない文字列だけが、通知の流れと部外者のあいだに立っているとき。
トピック名がセキュリティを担っている

推測できない文字列だけが、通知の流れと部外者のあいだに立っているとき。

送信元がたくさんある— スクリプトごとに文面を組み立てていて、書式がすでにばらばらになっているとき。
送信元がたくさんある

スクリプトごとに文面を組み立てていて、書式がすでにばらばらになっているとき。

ntfy からの移行

どちらも HTTP POST を受け取るので、比較のあいだチャンネルにトピックを並走させられます。

  1. 1

    トピックごとにチャンネルを作る

    トピック名をそのままチャンネル名にすれば、対応関係が一目で分かります。

  2. 2

    配信側をチャンネルの webhook に向ける

    ntfy のトピック URL を Echobell の webhook に差し替えます。JSON のボディはそのまま使えます。

  3. 3

    優先度 5 を着信に置き換える

    最高優先度で配信していたものは、着信チャンネルの候補です。

よくある質問

Echobell に関するよくある質問の答えを見つけてください

できません。ntfy の最高優先度は、より長く大きい通知音を鳴らします。Echobell の着信モードは通話画面を伴う本物の着信です。

本質的に危険というわけではありません。ntfy 自身が推測できないトピック名を選ぶよう案内していますし、セルフホストのインスタンスなら認証も必須にできます。壊れたモデルではなく、別のアクセスモデルです。

できません。ntfy はオープンソースで自分で運用できますが、Echobell はマネージドサービスです。セルフホストが要件なら ntfy が正解です。

トピックはそのままに、鳴るチャンネルを足す。

優先度の高いトピックをひとつ Echobell の着信チャンネルにも配信して、次に発火したときに比べてみてください。