メインコンテンツへスキップ
イベントストリームを使用すると、OneSignalからメッセージデータをリアルタイムで選択した宛先に送信できます。イベントストリームは、OneSignalをマーケティングエコシステム内の他の製品に接続する優れた方法です。チームが対応するメッセージングをトリガーし、記録を維持するなど、さまざまなことを可能にします。

一般的なユースケース

  1. カスタマージャーニーマッピングとパーソナライゼーション:イベントをCRMまたはカスタマーデータプラットフォーム(CDP)にストリーミングして、包括的な顧客プロファイルを構築し、さまざまなタッチポイントでキャンペーンをカスタマイズします。
  2. 分析とレポート:メッセージイベント(送信、開封、クリックなど)をデータウェアハウスに送信して、エンゲージメントパターンやチャネル全体の長期トレンドを分析します。
  3. コンプライアンスと規制レポート:すべてのメッセージ送信データをデータウェアハウスにストリーミングして、監査とコンプライアンスの目的で使用します。
  4. AIと予測モデル:メッセージイベントデータを社内のAIまたは予測モデルに送信して、包括的な顧客コホートを作成し、チャーンリスクを理解します。メール配信停止やメッセージの却下など、潜在的なチャーンを示す可能性があります。
  5. マーケティングオートメーション:エンゲージメントイベント(メッセージの開封やクリックなど)を他のツールに送信して、ユーザージャーニーの次のステップを自動的にトリガーするか、顧客プロファイルと最近のアクティビティを更新します。
  6. データの断片化:貴重な顧客データは、多くの場合、別々のツール(カスタマーエンゲージメントプラットフォーム、CRM、分析ツール、データウェアハウスなど)に存在します。イベントストリーミングは、このデータを一元化し、貴重なファーストパーティデータへの可視性を高め、より迅速な収益成果を可能にします。
  7. システム間の遅い通信:ライブエンゲージメントイベントを他のシステムに送信することで、バッチ更新を数時間または数日待つのではなく、イベントが発生した直後にアクションをトリガーできます。これにより、手動インポートまたはデータ同期への依存が排除されます。
  8. 支出の膨張と技術的負債:複数の中間ツールを管理する代わりに、OneSignalをデータウェアハウスに直接接続できます。これにより、複数の統合またはカスタムデータパイプラインの管理に伴うコストのかかるオーバーヘッドが削減され、技術的負債が軽減され、製品とマーケティングのための貴重な技術リソースが保持されます。

技術チームと連携する方法

イベントストリームの設定には、技術チームとの連携が必要です。会話を促進するためのヒントをいくつか紹介します:
  1. メリットを説明する:このデータを使用する戦略と、マーケティングキャンペーンを強化し、ユーザーエクスペリエンスをパーソナライズし、データを統合し、技術的負債を削減する方法を共有します。
  2. 範囲を定義する:データの送信先、追跡するイベント、推定データ量を特定します。これにより、適切なエンドポイント設定の構成が容易になります。
  3. 技術ドキュメントを提供するOneSignalの技術ドキュメントとセットアップ手順を共有します。開発チームは、受信者エンドポイントとOneSignalのイベントストリームを構成し、データが正しくルーティングされるようにする必要があります。
  4. データ量と管理について話し合う:システムがリアルタイムデータフローを処理できることを確認します。APIハンドラーは、低い応答時間を維持するために、追加のオンライン処理なしでイベントを記録することをお勧めします。
  5. テストとトラブルシューティング:本番稼働前にすべてが円滑に機能していることを確認するためにテストを実施します。
技術チームと緊密に連携することで、イベントストリーミングの力を解き放ち、成長戦略を強化できます。

セットアップ

OneSignalアプリケーションのデータ > イベントストリームで新しいイベントストリームを構成できます。

要件

次の要件が満たされない限り、イベントを送信できません:
  • サーバーHTTP(S)サーバーを指す有効なURLまたはIPアドレス
  • URLとIPアドレスは公的にルーティング可能である必要があります
  • ドメインには、認識されたトップレベルドメイン(例:「.com」、「.net」)が含まれている必要があります

イベントの選択

「イベントを選択」をクリックして、イベントストリームをトリガーするイベントを選択します。

Webhookのトリガー

これらのイベントで送信される可能性のあるデータはすべて十分に類似しているため、複数のチャネルによってトリガーされたイベントを同じイベントストリームを通じて送信できます。別のアプローチは、より詳細な制御や送信されるデータの規模を削減するために、単一のチャネルまたはイベントごとに複数のイベントストリームを定義することです。

イベントの選択

イベントストリームフィルター

1つ以上のメッセージまたはテンプレートの識別子を指定することで、オプションでイベントをさらに絞り込むことができます。これにより、アプリ内の特定のメッセージに関連するイベントのみを受信できます。イベントストリームフィルタリングを有効にするには、以下の手順を参照してください。

テンプレートでイベントをフィルタリング

メッセージとテンプレートの識別子は、_メッセージ > プッシュ、メール、SMS、またはテンプレート_に移動し、目的のメッセージまたはテンプレートのアクションボタンをクリックして、アクションメニューから_メッセージIDをコピー_または_テンプレートIDをコピー_を選択することでコピーできます。

テンプレートのテンプレートIDをコピー

あるいは、表示しているメッセージ/テンプレートの識別子をURLから直接コピーできます:
  • テンプレート – https://dashboard.onesignal.com/apps/{APP_ID}/templates/{TEMPLATE_ID}
  • プッシュ – https://dashboard.onesignal.com/apps/{APP_ID}/notifications/{MESSAGE_ID}
  • メール – https://dashboard.onesignal.com/apps/{APP_ID}/email/{MESSAGE_ID}
  • SMS – https://dashboard.onesignal.com/apps/{APP_ID}/sms/{MESSAGE_ID}

イベントストリームの構成

HTTPメソッド、URL を選択し、イベントストリームのヘッダーを追加します。ここで、OneSignalとシステム間の安全な通信を確保するために認証を構成する必要があります。 URIとヘッダーには、ユーザープロパティとイベントストリームのプロパティの両方から取得されるLiquid構文を含めることができます。

認証ヘッダー

エンドポイントへのリクエストが本当にOneSignalからのものであることを検証するために、認証ヘッダーを追加できます。一般的な認証方法には次のものがあります:
  • AuthorizationヘッダーAuthorizationヘッダーを追加します。YOUR_TOKENはシステムまたはサードパーティによって提供されます:
    • Basic {{YOUR_TOKEN}}
    • Bearer {{YOUR_TOKEN}}
    • ApiKey {{YOUR_API_KEY}}
  • カスタムヘッダー:次のようなカスタムヘッダーを追加することもできます:
    • X-API-Key: {{YOUR_API_KEY}}
注:OneSignalは暗号化サービスを提供していません

構成のテスト

テストする簡単な方法をお探しの場合は、webhook.siteを使用してください。ページの中央にある「Your unique URL」を見つけます。そのURLをコピーして、イベントストリーム構成のURLフィールドで使用します。

Webhookの構成

許可されないヘッダー

次のヘッダーは制限されており、設定できません。
  • content-length
  • referer
  • metadata-flavor
  • x-google-metadata-request
  • host
  • x-onesignal*

ボディ

イベントストリームのボディはJSONになります。ボディJSONは、個別のキー/値ペアとして、または編集可能なコードブロックとして定義できます。入力方法を変更するには、ボディ見出しの下の最初のドロップダウンを使用して、カスタムボディを選択します。

イベントストリームボディオプション

右側には、イベントストリームセットアップ中に入力されたものから構築された例示的なcURLリクエストが表示されます

イベントストリームのcURLプレビュー

パーソナライゼーション

事前定義されたイベントストリームデータを使用して、イベントストリームのすべてのフィールドをパーソナライズできます。このデータは、Liquid構文を使用して追加できます。これにより、ほぼすべてのユースケースでイベントストリームを使用する柔軟性が得られます。
パーソナライゼーションに利用可能なすべてのイベント、メッセージ、およびユーザーイベントデータのリストについては、イベントストリームデータを参照してください。

ボディの例

ドロップダウンで「カスタムボディ」を選択します:
{
  "Event Data": {
    "event.kind": "{{ event.kind }}",
    "event.id": "{{ event.id }}",
    "event.timestamp": "{{ event.timestamp }}",
    "event.datetime": "{{ event.datetime }}",
    "event.app_id": "{{ event.app_id }}",
    "event.subscription_device_type": "{{ event.subscription_device_type }}",
    "event.subscription_id": "{{ event.subscription_id }}",
    "event.onesignal_id": "{{ event.onesignal_id }}",
    "event.external_id": "{{ event.external_id }}"
  },
  "Message Data": {
    "message.id": "{{ message.id }}",
    "message.name": "{{ message.name }}",
    "message.title": "{{ message.title.en }}",
    "message.contents": "{{ message.contents.en }}",
    "template_id": "{{ message.template_id }}",
    "message.template_id": "{{ message.template_id }}",
    "message.url": "{{ message.url }}",
    "message.app_url": "{{ message.app_url }}",
    "message.web_url": "{{ message.web_url }}"
  }
}

カスタムボディ

JSONでのLiquid構文の使用

JSON内でLiquid構文を使用する場合、適切な引用符の使用はデータ型によって異なります: JSONフォーマットのガイドライン
  • 文字列 → 引用符で囲む必要があります
  • 数値 → 引用符で囲まないでください。
  • オブジェクト → 引用符で囲んではいけません

文字列

✅ 正しい
// 文字列値を引用符で囲む
{
  "user_id": "{{ user.onesignal_id }}"
}
❌ 誤り
{
  "user_id": {{ user.onesignal_id }}
}

数値とブール値

✅ 正しい
// 数値またはブール値を引用符で囲まない
{
  "user_score": {{ user.tags.score }}
}
❌ 誤り
{
  "user_score": "{{ user.tags.score }}"
}

オブジェクト

✅ 正しい
// オブジェクトを引用符で囲まない
{
  "user_data": {{ user.tags }}
}
❌ 誤り
{
  "user_data": "{{ user.tags }}"
}
Liquid構文で多言語条件を処理するためのベストプラクティス 言語ベースの条件での問題を回避するには
  1. 直接言語チェックを使用する:より良い互換性のために、userLangのような変数ではなく、条件内で常にuser.languageを直接チェックします。
  2. シンプルから始める:基本的なフレーズから始めて、徐々に複雑さを追加します。
  3. 過度のネストを避ける:解析の問題を防ぐために、条件をフラットに保ちます。
  4. 最初に基本的な句読点をテストする:特殊文字を使用する前に、シンプルな文と句読点から始めます。
  5. フォールバックを使用する:翻訳が欠落している場合に備えて、デフォルト言語(例:英語)を確保します。
  6. 標準キーに固執する:信頼性のために、content/title/enのような標準OneSignalキーを使用します。
このアプローチにより、解析エラーが最小限に抑えられ、システムとの互換性が確保されます。
Liquid構文を使用してメッセージをパーソナライズする方法の詳細とオプションについては、Liquid構文の使用ガイドをご覧ください。

結果とデバッグ

レポートタブの下のイベントストリームレポートページで、イベントストリームが一定期間にわたってどのように機能するかを確認できます。これには、全期間の数値、イベントストリームの現在のステータス、およびフックが受信している応答の種類を示す時系列データが含まれます。200番台のHTTP応答は、イベントが正常に受信されたことを示し、400番台と500番台の応答はエラーを示します。タイムアウトは、反対側のサーバーが妥当な時間内に応答できなかったため、OneSignalが接続を閉じて失敗したと見なしたことを意味します。 ログタブの下で最近のリクエストのサンプリングを確認して、さらに詳細を確認できます。これにより、実際のリクエストと反対側からの応答(該当する場合)が表示されます。イベントストリームに問題がある場合、これは最初に確認するのに最適な場所です。イベントストリームを変更/更新する必要がある場合は、フォームページで編集し、テストリクエストを送信して、正しく取得できるまで必要な完全な詳細を確認できます。

イベントストリームログとメトリクス

再試行 / 無効化

イベントストリームリクエストが回復可能な理由(ステータスコード429など)で失敗した場合、OneSignalは短い遅延の後にイベントを再度送信しようとします。これは、リクエスト間の遅延を増やしながら数回発生します。十分な再試行が連続して失敗すると、フックは「永久に失敗」としてマークされ、再試行されなくなります。 あまりにも多くの個別のリクエストが連続して失敗する場合、これはおそらく受信側の問題が原因です。受信側にエラーがあるか、何かが変更/無効化されている可能性があります。OneSignalは一定のポイントまでリクエストを送信し続けますが、リクエストが失敗し続ける場合、イベントストリームはOneSignalによって無効化される可能性があります。これが発生した場合は、再度有効化する前に、イベントストリームのトラブルシューティング、修正、テストに時間を費やすようにしてください。 パフォーマンスの低いAPIは、イベントストリームの無効化につながる可能性があります。イベントストリームを取り込むAPIが、メッセージ送信によって生成されるイベントの量を処理できることが重要です。アプリによって生成されるメッセージ送信の量を確認すると、APIに必要なパフォーマンスが反映されます。 イベントストリームを受信するAPIは、他のオンライン処理なしでイベントを記録することをお勧めします。これにより、応答時間が低く保たれ、遅延関連の問題が防止されます。APIからの遅い応答時間またはステータスコード429応答は、イベントのバックログを引き起こす可能性があります。一貫したイベントのバックログは、OneSignalがイベントストリームを無効化して、必要なスループットを処理するようにAPIを更新できるようにします。 OneSignalは、イベントストリームが大量の失敗したイベントを経験し始めたとき(ただし、まだ無効化されていない)、および送信に失敗したイベントが多すぎてイベントストリームが無効化されたときに、アプリ管理者と組織管理者にメールを送信します。また、イベントストリームのいずれかに問題があることをOneSignalユーザーに通知するバナーがイベントストリームインデックスページに表示されます。 各イベントストリームには、各イベントの一意のevent.idがあります。これは、ヘッダーまたはメッセージのボディで使用して、同じリクエストが来ているのを確認した場合にチェックして、潜在的に重複を排除する方法として使用できます。

成功のためのヒント

  1. 通常、イベントストリームはサードパーティサービスではなく、自分のサーバーに接続することをお勧めします。
    1. サードパーティに直接接続することに問題はありませんが、次のことを管理するのが難しくなります:構成/デバッグがより困難になります
    2. リクエストの量はOneSignalでは管理されません。
      1. イベントストリームイベントは、ユーザーがジャーニーのステップに到達するとすぐに送信されるため、他のサービスを圧倒したり、レート制限に達したり、予期せずに請求書が増加したりする可能性があります。これは、SMSなどの別のメッセージングチャネルを使用しようとするときに特に一般的です。イベントストリームの柔軟性により、OneSignalはそれらで何を達成しようとしているかを知らないため、イベントストリームリクエストを受け入れて、サードパーティの接続制限、レート制限、およびキューを正しく処理する独自のシンプルなサービスを作成することをお勧めします。
  2. 多くのサービスには公開HTTP APIがあります。つまり、イベントストリームでそれらに接続できます。API ドキュメントとHTTPリクエストの作成方法の例を探して、開始するのに適切な場所を見つけてください。

テスト

https://webhook.site/ のようなツールを使用し、提供されたYour unique URLをPOSTメソッドでイベントストリームのURLパラメータに設定します。

URLはwebhook.siteの「Your unique URL」と一致します

追跡するイベントを設定します。この例では、プッシュイベントを使用しますが、どれでも動作します。

プッシュメッセージイベントが選択されていますが、テストには任意のイベントを使用できます。

この例では、上記のボディの例を使用します。 イベントを保存してライブに設定します。 イベントをトリガーするためにメッセージを送信します。webhook.siteでは、次のデータを含むイベントが表示されます:

webhook.siteを使用した例

これは以下を示しています:
  • Host:リクエストの送信元のIPアドレス。可能なIPのリストについては、REST API概要を参照してください。
  • Request Content:イベントストリームのボディ内で送信されたデータ。