オーディエンス リストの Webhook 通知を受け取る

このガイドでは、Webhook を使用して非同期通知を受信する方法について説明します。 で、オーディエンスのエクスポート リクエストのステータスをご確認ください。この機能は Data API の v1alpha バージョンをご覧ください。

Webhook 通知 Google アナリティクスの高度な機能です API を使用します。「Introduction to オーディエンスのエクスポート機能について詳しくは、オーディエンスのエクスポートを作成するをご覧ください。

Webhook を使用しない場合は、定期的に API をポーリングして、 リクエストが完了したかどうかを判別できます。

Cloud Run を使用してサンプル Webhook アプリケーションを作成する

次の手順に従って、Google Cloud を使用してサンプル Webhook アプリケーションを作成できます。 クイックスタート: Cloud Run にサンプル サービスをデプロイするのチュートリアルをご覧ください。

サンプル サービスが POST Webhook 通知リクエストをリッスンできるように、 クイックスタート チュートリアルの index.js ファイルを次の内容に置き換えます。 コード:

  import express from 'express';

  const app = express();
  app.use(express.json());

  app.post('/', (req, res) => {
    const channelToken = req.get('X-Goog-Channel-Token');
    const bodyJson = JSON.stringify(req.body);

    console.log(`channel token: ${channelToken}`);
    console.log(`notification body: ${bodyJson}`);

    res.sendStatus(200);
  });

  const port = parseInt(process.env.PORT) || 8080;
  app.listen(port, () => {
    console.log(`helloworld: listening on port ${port}`);
  });

このコードは、POST リクエストとして送信されるすべての着信 Webhook 通知について、 Webhook 通知 JSON 本文とチャネル トークン値 オペレーションが成功したことを示す HTTP コード 200 を返します。

Cloud Run クイックスタート チュートリアルの最後とデプロイが完了したら、 gcloud run deploy コマンドを使用して Webhook アプリケーションを実行し、 サービスがデプロイされている URL。

サービス URL がコンソールに表示されます。次に例を示します。

  Service URL: https://webhooks-test-abcdef-uc.a.run.app

これがサーバー通知 URI です。 ここでは、アプリケーションが Google Cloud からの Google アナリティクス。

オーディエンス リストを作成し、Webhook 通知を有効にしてください

Webhook 通知をリクエストするには、webhookNotification オブジェクト:

  • サーバー通知 URI Webhook 通知を受け取るウェブアドレスを指定します。

  • (省略可)任意の文字列 channelToken メッセージになりすまします。channelToken を指定する の X-Goog-Channel-Token HTTP ヘッダーで、 Webhook POST リクエストを実行します。

Webhook を使用したリクエストの例を以下に示します。

HTTP リクエスト

POST https://analyticsdata.googleapis.com/v1alpha/properties/1234567/audienceLists
{
  "webhookNotification": {
    "uri": "https://webhooks-test-abcdef-uc.a.run.app",
    "channelToken": "123456"
  },
  "audience": "properties/1234567/audiences/12345",
  "dimensions": [
    {
      "dimensionName": "deviceId"
    }
  ]
}

audienceLists.create メソッドからのレスポンスには、 webhookNotification(指定した Webhook が正常に行われたことを確認できます) 5 秒以内に応答しました

レスポンスの例を次に示します。

HTTP レスポンス

{
  "response": {
    "@type": "type.googleapis.com/google.analytics.data.v1alpha.AudienceList",
    "name": "properties/1234567/audienceLists/123",
    "audience": "properties/1234567/audiences/12345",
    "audienceDisplayName": "Purchasers",
    "dimensions": [
      {
        "dimensionName": "deviceId"
      }
    ],
    "state": "ACTIVE",
    "beginCreatingTime": "2024-06-10T04:50:09.119726379Z",
    "creationQuotaTokensCharged": 51,
    "rowCount": 13956,
    "percentageCompleted": 100,
    "webhookNotification": {
      "uri": "https://webhooks-test-abcdef-uc.a.run.app",
      "channelToken": "123456"
    }
  }
}

Webhook が応答しない場合や、間違ったサービス URL を指定した場合、 代わりにエラー メッセージが返されます。

発生する可能性のあるエラーの例を次に示します。

{
  "error": {
    "code": 400,
    "message": "Expected response code of 200 from webhook URI but instead
    '404' was received.",
    "status": "INVALID_ARGUMENT"
  }
}

Webhook 通知を処理する

Webhook サービスへの POST リクエストには、 長時間実行オペレーション リソース sentTimestampフィールドで構成します送信されたタイムスタンプは リクエストが送信された Unix エポック時刻(マイクロ秒単位)。こちらの リプレイされた通知を特定します。

1 つまたは 2 つの POST リクエストが、 オーディエンス リストの作成:

  1. 最初の POST リクエストが直ちに送信され、新しく作成された CREATING 状態のオーディエンス リスト。最初のリクエストが Webhook が失敗した場合、audienceLists.create オペレーションはエラーを返します。 Webhook エラーの詳細を確認できます
  2. 2 番目の POST リクエストは、オーディエンス リストの完了後に送信されます あります。オーディエンス リストがいずれかの ACTIVE または FAILED 状態。

オーディエンス リストの最初の通知の例を次に示します。 CREATING 状態:

  {
    "sentTimestamp":"1718261355692983",
    "name": "properties/1234567/audienceLists/123",
    "audience": "properties/1234567/audiences/12345",
    "audienceDisplayName":"Purchasers",
    "dimensions":[{"dimensionName":"deviceId"}],
    "state":"CREATING",
    "beginCreatingTime": "2024-06-10T04:50:09.119726379Z",
    "creationQuotaTokensCharged":0,
    "rowCount":0,
    "percentageCompleted":0,
    "webhookNotification":
      {
        "uri": "https://webhooks-test-abcdef-uc.a.run.app",
        "channelToken":"123456"
      }
  }

これは、オーディエンス リストの 2 番目の通知の例です。 ACTIVE 状態:

  {
    "sentTimestamp":"1718261355692983",
    "name": "properties/1234567/audienceLists/123",
    "audience": "properties/1234567/audiences/12345",
    "audienceDisplayName":"Purchasers",
    "dimensions":[{"dimensionName":"deviceId"}],
    "state":"ACTIVE",
    "beginCreatingTime": "2024-06-10T04:50:09.119726379Z",
    "creationQuotaTokensCharged":68,
    "rowCount":13956,
    "percentageCompleted":100,
    "webhookNotification":
      {
        "uri": "https://webhooks-test-abcdef-uc.a.run.app",
        "channelToken":"123456"
      }
  }

2 回目の通知では、オーディエンス リストが作成され、 audienceLists.query を使用してクエリを実行する準備ができている メソッドを呼び出します。

audienceLists.create メソッドを呼び出した後に Webhook をテストするには、次の操作を行います。 ログを調べる サンプルの Cloud Run Webhook アプリケーションを実行して、各アプリケーションの JSON 本文を 自動的に通知されます。