メインコンテンツへスキップ

概要

OneSignal + Google Pub/Subインテグレーションにより、Pub/SubトピックからOneSignalへのカスタムイベントのリアルタイム同期が可能になり、ユーザー行動に基づいた自動化されたメッセージングキャンペーンとJourneysをトリガーできます。 Pub/Subは、独立したコンポーネント間でメッセージを送受信できるようにするGoogleのスケーラブルなメッセージングサービスです。OneSignalはPub/Subトピックのサブスクライバーとして機能し、Pub/Subからイベントメッセージを同期してパーソナライズされたユーザーエクスペリエンスをトリガーできます。

要件

  • アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
  • インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
  • 更新されたアカウントプラン(無料アプリでは利用できません)

Google Pub/Sub

  • Pub/Subが有効になっているGoogle Cloud Project
  • イベントメッセージを含むPub/Subトピック
  • サービスアカウントアクセスを付与するためのIAM権限
  • トピック上のJSON形式のメッセージ

セットアップ

1

Pub/Sub接続を作成する

OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。
  1. リストからGoogle Pub/Subを選択します
  2. Pub/Subトピックが配置されているGCP Project IDを入力します
  3. 認証方法を選択します:
    • 自動生成サービスアカウント(推奨):OneSignalがサービスアカウントを作成して管理します
    • 既存のサービスアカウント:独自のサービスアカウントキーJSONファイルを提供します
  4. 接続をクリックします
2

サービスアカウントに権限を付与する

OneSignalは新しいサービスアカウントを作成し、サービスアカウントのメールアドレスを提供します。GCPプロジェクトでこのサービスアカウントに**roles/pubsub.editor**ロールを付与します:
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
  --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
  --role roles/pubsub.editor
OneSignalはこのロールを使用して以下を行います:
  • イベントトピックへのサブスクリプションを作成する
  • トピックからイベントメッセージを消費する
  • 処理が失敗した場合のエラートピック(Dead Letter Queue)を作成する
3

接続をテストする

必要な権限を付与したら、OneSignalで保存をクリックして接続を確認します。OneSignalは、Pub/Subトピックにアクセスでき、イベントメッセージを処理する準備ができていることを検証します。

イベントデータスキーマ

カスタムイベントにPub/Subトピックを使用する前に、イベントメッセージのスキーマを定義する必要があります。
1

イベントスキーマ定義に移動する

OneSignalで、データ > インテグレーションに移動し、Pub/Sub接続を選択します。OneSignalは自動的にプロジェクトからトピックのリストを取得します。手動でリストを更新するには、トピックを更新をクリックします。
2

イベントメッセージスキーマを定義する

  1. イベントデータを含むトピックの名前をクリックします
  2. メッセージ形式としてJSONを選択します(サポートされている唯一の形式)
  3. サンプルメッセージをインポートをクリックして、サンプルイベントメッセージを提供します
  4. 検出されたスキーマを確認して、適切なフィールドマッピングを確保します
  5. データセットを保存をクリックします

イベントメッセージ形式

Pub/Subメッセージは、OneSignalカスタムイベントの次のJSON構造に従う必要があります:
{
  "event_name": "purchase_completed",
  "user_id": "user_12345",
  "timestamp": "2023-12-01T10:30:00Z",
  "properties": {
    "product_id": "prod_abc123",
    "price": 29.99,
    "category": "electronics",
    "payment_method": "credit_card"
  },
  "session_id": "session_789"
}

イベントデータマッピング

をOneSignalのカスタムイベント形式にマッピングします:
OneSignalフィールド説明必須
nameevent_nameイベント識別子はい
external_iduser_idユーザー識別子はい
timestampevent_timestampイベントが発生した時刻いいえ
propertiesevent_dataいいえ
サンプルメッセージに顧客のPIIまたは機密データを含めないでください。OneSignalは、データセット定義の一部としてメッセージサンプルを保存します。

リアルタイムイベント処理

バッチインテグレーションとは異なり、Pub/Subはほぼリアルタイムのイベント処理を可能にします:
  • 低レイテンシ:イベントはトピックに公開されてから数秒以内に処理されます
  • 自動サブスクリプション:OneSignalは各トピックに専用のサブスクリプションを作成します
  • エラー処理:失敗したイベントは調査のためにDead Letter Queueトピックに送信されます
  • スケーラブルな処理:大量のイベントストリームを自動的に処理します

高度な構成

Dead Letter Queue

OneSignalは、処理に失敗したイベントのエラートピックを自動的に作成します:
  • 自動作成:エラートピックはサブスクリプションごとに作成されます
  • 失敗したイベントの保存:処理できないイベントはデバッグ用に保存されます
  • 手動レビュー:トラブルシューティングのためにGoogle Cloud Consoleを介して失敗したイベントにアクセスします

メッセージ確認応答

OneSignalはPub/Subメッセージの確認応答を自動的に処理します:
  • 処理成功:イベント作成が成功した後、メッセージが確認応答されます
  • 処理失敗:メッセージは否定的に確認応答され、Dead Letter Queueに送信されます
  • リトライロジック:一時的な障害に対する組み込みのリトライ処理

制限事項

  • JSON メッセージ形式のみがサポートされています
  • メッセージサンプルはデータセット定義の一部として保存されます(PIIを避けてください)
  • プロジェクトレベルでroles/pubsub.editor権限が必要です
  • 最大メッセージサイズはGoogle Pub/Subの制限(10MB)に従います

よくある質問

イベントはどのくらい早く処理されますか?

イベントは通常、Pub/Subトピックに公開されてから数秒以内に処理され、ほぼリアルタイムのJourneyトリガーが可能になります。

OneSignalがイベントを処理できない場合はどうなりますか?

失敗したイベントは、OneSignalが作成するDead Letter Queueトピックに自動的に送信されます。デバッグのために、Google Cloud Consoleでこれらのイベントを確認できます。

異なるイベントタイプに複数のトピックを使用できますか?

はい、同じGCPプロジェクト内の複数のトピックに対してスキーマを定義できます。各トピックには、独自のスキーマ定義を持つ異なるイベントタイプを含めることができます。