novu-trigger-notification について
novu-trigger-notificationは、Novu SDKを使ってワークフロー通知を送信するスキルです。個別、バルク、ブロードキャスト、トピック宛ての送信と、トランザクションIDによるキャンセルに対応します。
主な機能
- 01個々のサブスクライバーに通知を送信
- 02イベントの一括送信とブロードキャスト
- 03トピック経由でサブスクライバーを指定
- 04トランザクションIDで冪等性を確保
- 05遅延・ダイジェスト通知をキャンセル
活用シーン
- 01サブスクライバーにウェルカム通知を送信
- 02多数のサブスクライバーへ告知を送信
- 03トランザクションIDで遅延通知をキャンセル
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ novuhq/ skills --skill novu-trigger-notificationインストール後、Claude Code で/novu-trigger-notificationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/best-practices.mdbulk-trigger-examples.mdinstallation.mdsingle-trigger-examples.mdtopic-trigger-examples.md詳細
通知のトリガー
Novu のワークフローをトリガーして通知を送信します。個別、バルク、一斉配信、トピックベースの配信に対応しています。
SDK のセットアップ
import { Novu } from "@novu/api";
const novu = new Novu({
secretKey: process.env.NOVU_SECRET_KEY,
});
個別のトリガー
1 人のサブスクライバーに通知を送信します。
const result = await novu.trigger({
workflowId: "welcome-email",
to: "subscriber-123",
payload: {
userName: "Jane",
activationLink: "https://app.example.com/activate",
},
});
サブスクライバーをその場で作成してトリガー
サブスクライバーがまだ存在しない場合は、完全なオブジェクトを指定します。Novu がサブスクライバーをアップサートします。
const result = await novu.trigger({
workflowId: "welcome-email",
to: {
subscriberId: "user-456",
email: "[email protected]",
firstName: "Jane",
lastName: "Doe",
},
payload: { userName: "Jane" },
});
トランザクション ID を指定してトリガー
冪等性のためにカスタムの transactionId を使用します。
const result = await novu.trigger({
workflowId: "order-update",
to: "subscriber-123",
payload: { orderId: "order-789" },
transactionId: "unique-tx-id-abc",
});
バルクトリガー
1 回のリクエストで最大 100 件のイベント を送信します。
const result = await novu.triggerBulk({
events: [
{
workflowId: "welcome-email",
to: "subscriber-1",
payload: { userName: "Alice" },
},
{
workflowId: "welcome-email",
to: "subscriber-2",
payload: { userName: "Bob" },
},
],
});
一斉配信
環境内の すべてのサブスクライバー に送信します。
const result = await novu.triggerBroadcast({
// here name field is for workflowId
name: "system-announcement",
payload: {
message: "Scheduled maintenance at 2am UTC",
},
});
トピックベースのトリガー
トピック内のすべてのサブスクライバーに送信します。
const result = await novu.trigger({
workflowId: "project-update",
to: [{
type: "Topic",
topicKey: "project-alpha-watchers",
}],
payload: { update: "New release deployed" },
});
トリガーのキャンセル
transactionId を使用して、遅延通知またはダイジェスト通知をキャンセルします。
await novu.cancel("unique-tx-id-abc");
トリガーパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
workflowId | はい | ワークフロー識別子(表示名ではありません) |
to | はい | サブスクライバー ID(文字列)、サブスクライバーオブジェクト、またはトピックターゲット |
payload | いいえ | ワークフローに渡されるデータ。payloadSchema に照らして検証されます |
overrides | いいえ | チャネルごとのプロバイダー固有のオーバーライド |
transactionId | いいえ | 冪等性とキャンセルに使用する一意の ID |
actor | いいえ | 操作をトリガーしたユーザーを表すサブスクライバー ID またはオブジェクト |
context | いいえ | マルチテナント/組織コンテキスト用のキーと値のペア |
オーバーライド
トリガーごとにプロバイダー固有の設定をオーバーライドします。
const result = await novu.trigger({
workflowId: "alert",
to: "subscriber-123",
payload: { message: "Server down" },
overrides: {
"providers": {
"sendgrid": {
from: "[email protected]",
cc: ["[email protected]", "[email protected]"],
replyTo: "[email protected]",
}
}
},
});
よくある落とし穴
workflowIdは識別子であり、表示名ではありません — 人が読める名前ではなく、ワークフローの定義時に設定した識別子を使用します。指定されていない場合、Novu はworkflowIdを自動的に作成します。- サブスクライバーのアップサート — 存在しない
subscriberIdまたは文字列のsubscriberオブジェクトを宛先としてトリガーすると、そのsubscriberIdを持つサブスクライバーが作成されます。 - バルクトリガーの上限は 100 件のイベントです — それより大きいバッチは、100 件ずつに分割してください。
- キャンセルには
transactionIdが必要です — これがないとトリガーをキャンセルできません。カスタムのtransactionIdを指定するか、後でワークフローの実行(トリガーイベント)をキャンセルする場合は、Novu が生成したtransactionIdを保存してください。 - ペイロードはワークフローの
payloadSchemaに照らして検証されます — ワークフローでスキーマが定義されている場合、ペイロードが一致しないとトリガーは失敗します。
参考資料
コメント
Markdown 対応