個人配信チャネル
個人配信チャネルは、電子メールやブラウザ プッシュ以外の場所に独自の Kanera 通知を送信します。
電子メールとブラウザのプッシュはほとんどの人にとってうまく機能しますが、便利な宛先はそれだけではありません。一部のチームはすでに自己ホスト型通知サーバーを実行しています。ブラウザに通知許可を与えずに、電話でアラートを受け取りたい人もいます。 Kanera イベントをスクリプト、ホーム ダッシュボード、またはオンコール ツールに配置したいと考える人もいます。
Kanera は 3 つの個人的な目的地をサポートしています。
| チャンネル | それは何ですか | に良い |
|---|---|---|
| ntfy | 電話またはデスクトップ アプリからサブスクライブする通知サーバー。 ntfy.sh またはあなた自身のインスタンス。 | ブラウザープッシュを必要としない電話アラート、チームトピックの共有、ホームラボのセットアップ。 |
| ゴティファイ | 独自の Android アプリと Web UI を備えた自己ホスト型通知サーバー。 | パス内にサードパーティのプッシュ サービスが存在しない、完全に自己ホスト型のアラート。 |
| 個人の Webhook | 署名された JSON を受信する、所有する HTTPS エンドポイント。 | スクリプト、ダッシュボード、オンコール ルーティング、カスタム オートメーション、既に実行しているチャット ブリッジ。 |
これらのチャンネルは個人的なものです。これらはワークスペースではなくあなたのアカウントに属しており、他の人はそれらを表示したり変更したりすることはできません。これらは、組織のプッシュ設定やブラウザーの通知許可には依存しません。
彼らは必要としています Pro または30日間 プロトライアル。これらは、ホストされた無料版では利用できません。電子メール、ブラウザー プッシュ、およびアプリ内ドロワーは通常どおり動作し続けます。参照 プランの要件 以下。
チーム全体が共有チャネルでのカードアクティビティを確認できるようにするには、次を使用します。 チャットの宛先 代わりに。個人チャンネルはプライベート フィードです。チャットの宛先はチーム フィードであり、ワークスペース管理者によって設定されます。
各チャンネルをいつ使用するか
使用する ntfy ブラウザーのプッシュ通知を使わず、スマートフォンやデスクトップで通知を受け取りたい場合。ntfyアプリをインストールしてトピックを購読すると、Kaneraがそこに通知します。既に他の通知をntfyに送っている場合も、簡単にKaneraを追加できます。
使用する ゴティファイ インフラの外に何も送らないことが必要な場合です。Gotifyは自分のサーバーで動作し、Androidアプリは直接そこに接続します。Kaneraに必要なのはサーバーURLとアプリケーショントークンだけです。
を使用してください 個人の Webhook 通知を読むだけでなく、操作につなげたい場合。主な用途:
- メンションや期限を過ぎたカードをオンコール ツールまたはページング ツールにルーティングします。
- 個人のチャット チャネルまたは既に実行しているボットに課題を投稿します。
- 通知をログ、ダッシュボード、または個人データベースに追加します。
- Kanera を通知プロバイダーにブリッジする Kanera は直接サポートしていません。
プランの要件
個人配信チャネルには Pro または Pro トライアル版が必要です。電子メール、ブラウザープッシュ、アプリ内通知ドロワー、毎日のダイジェスト、視聴、 ワークスペースのルール はすべてのプランで利用可能であり、この影響を受けません。
ホストされた無料では、 追加の通知先 ショー ntfy、Gotify、個人 Webhook はプランでは利用できません セットアップカードの代わりに。
組織が Pro またはトライアルから Free に移行すると、Kanera は各人の ntfy、Gotify、および Webhook チャネルをオフに切り替えます。何も削除されません。サーバー URL、トピック、トークン、署名シークレット、およびタイプごとの設定はすべて保存されたままで、まだ送信を待っているものは遅れて到着するのではなくドロップされます。再度アップグレードすると、各人が有効にしていたチャネルが再びオンになるため、何も再接続する必要はありません。
どこに設定するか
開く プロフィール設定 -> 通知 そして拡大します 追加の通知先.
各チャネルには、接続フィールドを備えた独自のカードがあります。 有効 切り替え、通知の種類の切り替え、および 保存, テスト、そして 削除 アクション。
必要なものをすべて入力するまで、チャネルを有効にすることはできません。ここで許可するのは、チャンネルがこれまでに送信する最大値です。 ワークスペースのルール 1 つのワークスペースのチャネルを静かにすることができますが、これらの設定で許可されている以上の送信を行わないようにしてください。
アプリ内通知ドロワーはこれらの設定の影響を受けることはありません。常に完全なフィードが表示されます。
ntfyをセットアップする
- サーバーを選択します。使用する
https://ntfy.sh公共サービス用、または次のような独自のインスタンス用https://ntfy.example.com. - トピック名を選択します。トピックを知っている人であれば誰でも購読できるため、公開サービスの秘密として扱ってください。のようなもの
kanera-a7f3c2-ameliaよりも優れていますkanera. - Kaneraに次のように入力します。 サーバーURL そして トピック。サーバー URL からクエリ文字列を削除したままにします。 Kanera はトピック自体を追加します。
- トピックに認証が必要な場合は、アクセス トークンを貼り付けます。 無記名トークン。オープンサーバーではオプションですが、保護されたサーバーでは必須です。
- クリック 保存をオンにしてから、 有効.
- このチャネルが配信する通知の種類を選択します。
- クリック テスト メッセージが到着することを確認します。
- まだ購読していない場合は、ntfy アプリまたは Web UI で同じトピックを購読します。
各通知はタイトル付きのプレーンメッセージとして届き、それをタップするとKaneraでカードが開きます。
Gotify をセットアップする
- Gotify Web UI を開いて、 アプリケーション — 例:「Kanera」。
- Gotify が生成したアプリケーション トークンをコピーします。アプリケーショントークンは次で始まります
A。クライアント トークンは使用しないでください。 - Kaneraに次のように入力します。 サーバーURL、など
https://gotify.example.comにトークンを貼り付けます アプリトークン. - クリック 保存をオンにしてから、 有効.
- このチャネルが配信する通知の種類を選択します。
- クリック テスト Gotify にメッセージが表示されることを確認します。
Gotify の作成したアプリケーションの下にメッセージが表示され、通知のタイトル、読みやすい概要、カードを開くリンクが表示されます。これらは通常の優先度で送信されるため、Gotify 独自のアプリケーションごとの設定によってアラートの持続性が決まります。
アプリ トークンは暗号化されて保存され、再度表示されることはありません。フィールドが示しています 保存済み — 空白のままにしておきます。使用する トークンを削除する 削除するか、新しいトークンを貼り付けて保存し、置き換えます。
個人用 Webhook を設定する
- を受け入れるHTTPSエンドポイントを準備する
POSTJSON 本文を含むリクエストを実行すると、すぐに 2xx ステータスが返されます。 - Kaneraに次のように入力します。 エンドポイント URL そしてクリックしてください 保存.
- Kanera は署名シークレットを生成し、それを 1 回表示します。 今すぐコピーしてください — 再表示されません。
- シークレットを受信機に保存し、信頼する前にすべてのリクエストを検証します。
- オンにする 有効をクリックし、このチャネルが配信する通知の種類を選択します。
- クリック テスト エンドポイントがリクエストを受信して検証したことを確認します。
使用する シークレットの回転 新しいシークレットを発行します。古いシークレットは即座に無効になるため、同じメンテナンス時間内に受信側も更新してください。
リクエストヘッダー
| ヘッダー | 意味 |
|---|---|
Content-Type | いつも application/json. |
User-Agent | Kanera-Personal-Notifications/1.0. |
X-Kanera-Event-Id | この配信の一意の ID。一致 id 体の中で。 |
X-Kanera-Timestamp | 秒単位の Unix タイムスタンプ。 |
X-Kanera-Signature | sha256= プラス HMAC-SHA256 ${timestamp}.${rawBody} 署名用シークレットを使用します。 |
ペイロード
{
"id": "0199c3ab-6f5e-7d21-9b0c-8b31a7e40f2d",
"type": "notification",
"occurredAt": "2026-07-30T09:14:22.481Z",
"notification": {
"kind": "comment_mentioned",
"reason": "mentioned",
"title": "Mentioned in a comment",
"body": "Amelia mentioned you in Website Redesign / Prepare kickoff agenda: can you review the copy?",
"url": "https://kanera.example.com/b/48a52a55-763e-4c64-8a76-51ac56247f5c/c/70c39cef-1aec-44e6-a8f5-f36f765a818d",
"tag": "card:70c39cef-1aec-44e6-a8f5-f36f765a818d:mentioned"
}
}
| フィールド | 意味 |
|---|---|
id | 配信 ID、としても送信されます X-Kanera-Event-Id。これを使用して受信者を冪等にします。 |
type | いつも notification 個人チャネル配信用。 |
occurredAt | 通知がキューに入れられたときの ISO 8601 タイムスタンプ。 |
notification.kind | 通知の種類: card_assigned, card_comment_added, comment_mentioned, card_due_date_changed, card_overdue, card_reminder、または test. |
notification.reason | 通知を受けた理由: assigned, comment, mentioned, dueDateChanged, overdue, reminder、または test. |
notification.title | 短い見出し。 |
notification.body | アクター、ボード、カードを含む人間が読める概要。 |
notification.url | 通知が 1 を指す場合、カードへのディープ リンク。 |
notification.tag | 同じカードに関する繰り返し通知を折りたたむためのグループ化キー。 |
署名を検証する
import crypto from "node:crypto";
import express from "express";
const app = express();
app.post("/kanera/notifications", express.raw({ type: "application/json" }), (req, res) => {
const timestamp = req.header("X-Kanera-Timestamp") ?? "";
const signature = req.header("X-Kanera-Signature") ?? "";
const expected = "sha256=" + crypto
.createHmac("sha256", process.env.KANERA_NOTIFICATION_SECRET!)
.update(`${timestamp}.${req.body.toString("utf8")}`)
.digest("hex");
const ok = signature.length === expected.length
&& crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
if (!ok) return res.status(401).send("invalid signature");
const event = JSON.parse(req.body.toString("utf8"));
// Handle event.notification.reason, .title, .body, and .url.
res.sendStatus(204);
});
常に生のリクエスト本文に対して検証してください。フレームワークが検証前に JSON を解析すると、チェックが失敗したり、信頼性が低くなったりする可能性があります。次のリクエストを拒否します。 X-Kanera-Timestamp 自分の時計から遠く離れているため、繰り返される時計を扱います X-Kanera-Event-Id 複製として。
各チャネルが送信できる通知
個人チャネルには、電子メールおよびプッシュと同じ 5 つの通知タイプが含まれます。
| タイプ | 送信時期 |
|---|---|
| 割り当てられたカード | あなたにはカードが割り当てられています。 |
| カードコメント追加 | あなたに割り当てられたカードに誰かがコメントします。 |
| コメントにタグ付けされました | 誰かがコメントであなたに言及しました。 |
| カードの期限が変更になりました | あなたに割り当てられたカードの期限が変更されます。 |
| カードの延滞 | 割り当てられたカードまたは割り当てられたチェックリスト項目が期限切れになります。 |
| カードのリマインダー | あ 設定したリマインダー カードの期限が来ます。 |
各チャネルには独自のタイプ切り替えセットがあるため、チャネルは電子メールよりもはるかに静かになります。一般的な設定は、すべてに電子メールを使用し、メンションと期限を過ぎた作業のみに ntfy を使用し、個人のスクリプトをフィードする割り当てに Webhook を使用します。
パッシブ ウォッチャー アクティビティはアプリ内のドロワーに表示され、毎日のダイジェストは電子メールのみです。どちらも個人チャンネルには配信されません。
許可される宛先とセキュリティ
Kanera は、すべての宛先を保存するときと、各通知が送信される前に再度チェックします。
デフォルトでは:
- 宛先は必ず使用する必要があります パブリックHTTPS.
- URL にはユーザー名とパスワードを含めることはできません (
https://user:pass@host) または#fragment. - ntfy または Gotify サーバー URL にはクエリ文字列を含めることはできません。サーバーアドレスだけを入力してください。
- プライベート ネットワークまたは内部ネットワーク上のアドレスは拒否されます。
- 他の場所にリダイレクトする宛先は失敗として扱われ、Kanera は応答を 10 秒以内に待ちます。
一部のKaneraインストールでは、代わりに内部ネットワーク上で受信機を許可します。これは、自宅または社内LAN上で実行されているntfyまたはGotifyサーバーが通常必要とするものです。クラウド プロバイダーが独自のインフラストラクチャ用に予約しているアドレスも含め、いくつかのアドレスはどちらの場合もブロックされたままになります。通知設定ページには、2 つのポリシーのどちらが適用されるかが示されます。内部ネットワーク ポリシーが必要な場合は、Kanera の管理者に問い合わせてください。
トークンと署名シークレットは暗号化されて保存され、保存後に再度表示されることはありません。配信が失敗した場合、Kanera は宛先や資格情報を記録せずに、配信が失敗したことを記録します。
配送に期待できること
通知は即座に届くのではなく、約 30 分以内に届きます。 Kanera はそれらをバックグラウンドで送信するため、アプリで行うことは何もせず、ntfy サーバーまたは Webhook の応答を待機します。
目的地に一時的に到達できない場合、Kanera は通知を諦めるまでにさらに数回試行します。何日も溜まることはありません。チャネルをオフにしたり、その詳細をクリアしたり、組織が個人チャネルのない計画に移行したりすると、まだ待機しているものは、コンテキストを無視して数時間後に到着するのではなく、ドロップされます。
テスト はすぐに送信され、チャネルを有効にする前でも機能するため、最初に接続を確認できます。
トラブルシューティング
| 問題 | チェックする |
|---|---|
| Kanera は保存時に URL を拒否します。 | 使用する https://、ユーザー名、パスワード、または #fragment、ntfy または Gotify サーバー URL からクエリ文字列を削除します。プライベート アドレスまたは内部アドレスは、インストールで許可されている場合にのみ受け入れられます。 |
| セクション全体に、あなたのプランでは利用できないと記載されています。 | 個人チャンネルには Pro または Pro トライアル版が必要です。電子メール、ブラウザーのプッシュ、アプリ内ドロワーは影響を受けません。 |
| すべてのチャンネルが自動的にオフになりました。 | 組織が Free に移行したかどうかを確認します。ダウングレードすると、ntfy、Gotify、および Webhook 配信が無効になり、保存された接続が維持されます。アップグレードすると再びオンになります。 |
| の 有効 切り替えが無効になっています。 | チャネルが完全に構成されていません。 ntfy にはサーバー URL とトピックが必要で、Gotify にはサーバー URL とアプリ トークンが必要で、Webhook には生成されたシークレットを含む URL が必要です。 |
| テストでは、チャネルが完全に構成されていないことが示されました。 | まず接続フィールドを保存してからテストします。 |
| テストは HTTP ステータスで失敗します。 | 宛先がリクエストを拒否しました。 ntfy の場合は、トピックと必要なトークンを確認してください。 Gotify の場合は、クライアント トークンではなくアプリケーション トークンを使用したことを確認してください。 Webhook の場合は、2xx ステータスを返します。 |
| テストがタイムアウトするか、ネットワーク障害が報告されます。 | Kanera は 10 秒以内にホストに到達できませんでした。ホストがKaneraサーバーから到達可能であることを確認し、リダイレクトが行われないことを覚えておいてください。 |
| テストは成功しても何も届きません。 | そのチャネルの通知タイプの切り替えを確認してから、 ワークスペースのルール そのワークスペースの配信を一時停止または絞り込みます。 |
| Webhook レシーバーは署名を拒否します。 | 再シリアル化されたオブジェクトではなく、生の本体を検証し、最近ローテーションした場合は現在のシークレットを使用していることを確認します。 |
| シークレットをローテーションした後、通知が停止しました。 | 受信機をアップデートします。以前のシークレットはすぐに機能しなくなります。 |
