Core · プラグインを使う · 通知

アプリ内通知

機能

@nocobase/app-plugin-notification-in-app は、in-app チャネルと、ユーザーが所有する受信トレイを提供します。未読の件数、既読・未読の操作、すべて既読にする操作、削除に対応しています。

プラグインは受信トレイの保存と配信を提供し、ナビゲーションとページはアプリが組み立てます。

シナリオと例

例:ヘッダーの受信トレイ

アプリの QueryClientProvider の中で、useInboxUnreadCount()、useInboxItems()、useInboxActions()、useInboxRefresh() を使います。失敗した変更を処理してください。リアルタイムのイベント、再接続、ウィンドウのフォーカスで更新が起き、正式なのは HTTP です。

{ type: 'route', path: '/orders/123' } のような移動先では、デプロイの接頭辞を省き、Router がそれを付けます。外部のリンクには { type: 'url', url: 'https://example.com/...' } を使います。

開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):

プレーンテキスト
In-app Notifications を使って、ヘッダーの未読の件数と受信トレイを追加してください。
ページネーション、既読の操作、リアルタイムの更新、エラーには公開のコンポーネントかフックを
再利用してください。注文のメッセージは実際のユーザー ID 宛てにし、アプリからの相対の
ルートを移動先に使ってください。2 人のユーザーの分離、未読の変化、再接続後の更新、
サインアウト後の拒否をテストしてください。

完了の条件受信者だけがメッセージを見られ、既読にすると件数が更新され、開き直しても保たれること。

主な仕組みと実装

以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。

組み込みの領域コードまたは設定の変更画面と動作の変化
通知チャネルの設定アプリ内の受信トレイのチャネルを設定する業務の通知が受信トレイの保存先に届く
ヘッダーと受信トレイのページ既存のクエリーのコンテキストの下で、コンポーネントやフックを組み込む未読の件数、メッセージ、既読の操作を表示する
業務のメッセージとリンク受信者と、アプリからの相対の移動先を設定するメッセージをクリックすると意図したページに移る

組み込み

通知の配信には、その Server プラグインを Notifications のあとに登録し、マイグレーションを適用して、次を設定します。

YAML
notification:
  channels:
    inbox:
      type: in-app

Client プラグインはロケールを読み込むだけで、受信トレイのページは登録しません。/client の NotificationInAppProvider と NotificationInAppInbox を組み立てるか、/client/inbox のフックで独自の画面を作ります。

送信と読み取り

通知 を通じて messages.inbox を送り、to、title、body を指定します。受信者は、実際のユーザー ID または ID の空でない配列で、メールアドレスや推測した現在のユーザーではありません。

操作エンドポイント
一覧GET /api/notificationInApp/messages
未読の件数GET /api/notificationInApp/messages/unreadCount
すべて既読にするPOST /api/notificationInApp/messages/markAllRead
1 件を既読・未読にするPOST /api/notificationInApp/messages/:id/markRead または /markUnread
1 件を削除するDELETE /api/notificationInApp/messages/:id

すべてのリクエストは、サインインしたユーザーの身元を使います。ほかのユーザーのメッセージは、存在しないものとして報告されます。pageToken をたどり、必要に応じて unreadOnly=true で絞り込みます。

AI 開発の制約と検証

プラグイン固有の開発の制約

  • 受信トレイの API には認証済みの身元を使い、任意のユーザーを照会できる保護のない API を追加しないでください。
  • リアルタイムのイベントは更新のシグナルとして扱い、正式なのは HTTP です。失敗したあとに誤った既読の状態を残さないでください。
  • ページネーション、繰り返しの更新、ユーザーをまたぐアクセス、サインアウトをテストしてください。内部のルートに /main を二重に付けないでください。

境界

受信トレイの保存と API は通知の Server プラグインなしでも動作しますが、その場合は配信のチャネルが登録されません。アプリ内のメッセージは、オペレーティングシステムの通知ではありません。それには Web プッシュ を使います。

ユーザーの分離、未読の件数、ページネーション、サインアウト後のアクセスを検証します。受信者ごとに配信と再試行の結果は別々で、存在しないユーザーは受信者の検証で失敗します。

これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。

出典:公開のプラグインの入口と実装。

NocoBase ドキュメントアシスタント

NocoBase について何を知りたいですか?

質問は個別に回答され、過去の質問や回答は参照されません。必要な背景をすべて含めてください。