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

概要

OneSignal + PostgreSQL統合により、PostgreSQLデータベースからOneSignalにカスタムイベントを同期して、ユーザーの行動に基づいて自動化されたメッセージングキャンペーンとJourneysをトリガーできます。

要件

  • 访问自定义事件(目前处于测试阶段)
  • 升级账户计划(免费应用不可用)。

PostgreSQL

  • **PostgreSQL 9.6+**または互換性のあるデータベース
  • 適切な権限を持つデータベースユーザー
  • OneSignalからPostgreSQLインスタンスへのネットワークアクセス
  • 構造化された行動データを含むイベントテーブル
OneSignalを本番PostgreSQLデータベースに接続することは強く推奨しません。イベント同期クエリは分析的な性質を持ち、本番パフォーマンスに影響を与える可能性があります。分析ワークロード用に設定されたデータベースでのみ使用してください。

セットアップ

1

OneSignal専用ユーザーを作成する

適切な権限を持つ専用ユーザーアカウントを作成します:
-- 強力なパスワードでOneSignalユーザーを作成
CREATE USER CENSUS WITH PASSWORD '<strong-unique-password>';

-- 同期状態用のプライベート簿記スキーマを作成(読み取り専用モードの場合はスキップ)
CREATE SCHEMA CENSUS;

-- 簿記スキーマへの完全アクセスを許可(読み取り専用モードの場合はスキップ)
GRANT ALL ON SCHEMA CENSUS TO CENSUS;

-- 簿記スキーマ内の既存オブジェクトへのアクセスを確保(読み取り専用モードの場合はスキップ)
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
2

イベントデータへの権限を付与する

イベントデータを含むスキーマへの読み取りアクセスを提供します:
-- スキーマアクセスを許可(イベントデータを含む各スキーマに対して繰り返す)
GRANT USAGE ON SCHEMA "<your_schema>" TO CENSUS;

-- 既存テーブルへの読み取りアクセスを許可
GRANT SELECT ON ALL TABLES IN SCHEMA "<your_schema>" TO CENSUS;

-- 将来のテーブルへの読み取りアクセスを許可
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT SELECT ON TABLES TO CENSUS;

-- 関数への実行権限を許可
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your_schema>" TO CENSUS;
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your_schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
3

OneSignalに接続する

在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成
  1. リストからPostgreSQLを選択します
  2. 接続詳細を入力します:
    • Host:PostgreSQLサーバーのホスト名
    • Port:通常は5432
    • Database:データベース名
    • UsernameCENSUS
    • Password:作成したパスワード
  3. 接続をテストします
  4. イベントデータを含むテーブルを設定します

事件数据映射

将您的 映射到 OneSignal 的自定义事件格式:
OneSignal 字段描述必需
nameevent_name事件标识符
external_iduser_id用户标识符
timestampevent_timestamp事件发生时间
propertiesevent_data

イベントテーブルスキーマの例

-- PostgreSQLイベントテーブルの例
CREATE TABLE analytics.user_events (
    event_id SERIAL PRIMARY KEY,
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    event_data JSONB,
    session_id VARCHAR(255),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

SQLクエリモード

イベントデータを変換するためのカスタムSQLクエリを作成します:
-- 例:最近の購入イベント
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= NOW() - INTERVAL '7 days'
    AND event_name = 'purchase'
ORDER BY event_timestamp DESC;

高度なネットワーク構成

OneSignalは、高度なネットワーク制御を使用してPostgreSQLインスタンスに接続できます:
  • IP許可リスト:OneSignalのIPアドレスをファイアウォールとpg_hba.confに追加します
  • SSHトンネリング:プライベートネットワークの踏み台ホストを介して接続します
  • VPC構成:クラウド環境内での直接接続
  • TLS暗号化:SSL/TLSを使用した安全な接続

SSHトンネルのセットアップ

プライベートネットワーク上のPostgreSQLインスタンスの場合:
  1. SSHユーザーを作成:SSHホスト上に専用ユーザーを設定します
  2. トンネルを構成:OneSignal統合設定で「Use SSH Tunnel」を有効にします
  3. キーペアをインストール:OneSignalの公開鍵を~/.ssh/authorized_keysに追加します
  4. 接続をテスト:トンネル接続を確認します

注意事項

  • 複数のスキーマ:イベントデータを含む各スキーマに対して権限付与を繰り返します
  • クロススキーマ参照を持つビュー:古いPostgreSQLバージョンでは追加の読み取り権限が必要な場合があります
  • Azure PostgreSQL:AzureインスタンスにはUsername@hostname形式を使用します
  • AWS RDS:標準のusername形式を使用します
  • パフォーマンス:大規模なイベント処理には読み取りレプリカの使用を検討してください

制限事項

  • 分析クエリのオーバーヘッドのため、本番データベースへの接続は避けてください
  • 複雑なクロススキーマクエリには追加の権限が必要な場合があります
  • 高頻度のイベント処理には接続プーリングが推奨されます

FAQ

読み取り専用モードを使用すべきですか?

より簡単なセットアップを好み、OneSignalがテーブルを作成することを許可できない場合は、読み取り専用モードを使用します。大規模なイベントデータセットでより良いパフォーマンスを得るには、フルモードを使用します。

複数のイベントスキーマを処理する方法は?

イベントデータを含む各スキーマに対して権限付与コマンドを繰り返します。OneSignalは単一の接続内で複数のスキーマから読み取ることができます。