このガイドでは、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 リクエストが、 オーディエンス リストの作成:
- 最初の POST リクエストが直ちに送信され、新しく作成された
CREATING
状態のオーディエンス リスト。最初のリクエストが Webhook が失敗した場合、audienceLists.create
オペレーションはエラーを返します。 Webhook エラーの詳細を確認できます - 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 本文を
自動的に通知されます。