این راهنما نحوه استفاده از وبکهکها را برای دریافت اعلانهای ناهمزمان برای وضعیت درخواستهای صادرات مخاطب توضیح میدهد. این ویژگی فقط در نسخه v1alpha Data API موجود است.
اعلانهای Webhook یکی از ویژگیهای پیشرفته Google Analytics Data API هستند. برای آشنایی با ویژگی صادرات مخاطب، به ایجاد صادرات مخاطب مراجعه کنید.
بدون وب هوک، باید به طور دورهای از API نظرسنجی کنید تا تعیین کنید که درخواست کامل شده است.
با استفاده از Cloud Run یک نمونه برنامه وب هوک ایجاد کنید
میتوانید با استفاده از Google Cloud یک نمونه برنامه وب هوک را با دنبال کردن آموزش Quickstart ایجاد کنید: یک سرویس نمونه را در 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 ارسال می شود، این کد بدنه JSON اعلان وب هوک و مقدار رمز کانال را چاپ می کند و کد HTTP 200
را برای نشان دادن عملکرد موفقیت آمیز برمی گرداند.
هنگامی که به پایان آموزش شروع سریع Cloud Run رسیدید و برنامه webhook را با استفاده از دستور gcloud run deploy
اجرا کردید، آدرس اینترنتی را که سرویس شما در آن مستقر است ذخیره کنید.
URL سرویس در کنسول نمایش داده می شود، به عنوان مثال:
Service URL: https://webhooks-test-abcdef-uc.a.run.app
این URI اعلان سرور است که در آن برنامه شما به اعلانهای وب هوک از Google Analytics گوش میدهد.
فهرست مخاطبان ایجاد کنید و اعلانهای وب هوک را روشن کنید
برای درخواست اعلانهای webhook، مقادیر زیر را در شی webhookNotification
مشخص کنید:
URI اعلان سرور حاوی آدرس وب است که اعلانهای هوک را دریافت میکند.
(اختیاری) یک
channelToken
رشته دلخواه برای محافظت در برابر جعلی شدن پیام.channelToken
در هدر HTTPX-Goog-Channel-Token
درخواست webhook POST مشخص کنید.
در اینجا یک نمونه درخواست با استفاده از وب هوک آورده شده است:
درخواست 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
است که تأیید می کند که وب هوک مشخص شده با موفقیت در کمتر از 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"
}
}
}
اگر وب هوک پاسخ ندهد، یا اگر URL سرویس نادرستی ارائه کنید، به جای آن یک پیام خطا برگردانده می شود.
در اینجا یک مثال خطا وجود دارد که ممکن است دریافت کنید:
{
"error": {
"code": 400,
"message": "Expected response code of 200 from webhook URI but instead
'404' was received.",
"status": "INVALID_ARGUMENT"
}
}
اعلانهای وب هوک را پردازش کنید
درخواست POST به یک سرویس webhook شامل یک نسخه JSON از منبع عملیات طولانی در بدنه و یک فیلد sentTimestamp
است. مهر زمانی ارسال شده، زمان یونیکس را بر حسب میکروثانیه مشخص می کند که درخواست ارسال شده است. می توانید از این مهر زمانی برای شناسایی اعلان های پخش شده استفاده کنید.
در طول ایجاد لیست مخاطبان، یک یا دو درخواست POST به وب هوک ارسال می شود:
- اولین درخواست POST بلافاصله ارسال می شود و لیست مخاطبان ایجاد شده جدید را در حالت
CREATING
نشان می دهد. اگر اولین درخواست از وب هوک ناموفق باشد، عملیاتaudienceLists.create
یک خطا و جزئیات خرابی وب هوک را برمیگرداند. - دومین درخواست 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"
}
}
در اینجا نمونه ای از اعلان دوم برای لیست مخاطبان در حالت 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"
}
}
اعلان دوم تأیید می کند که لیست مخاطبان ایجاد شده است و با استفاده از روش audienceLists.query
آماده استعلام است.
برای آزمایش وبهوکها پس از فراخوانی متد audienceLists.create
، میتوانید گزارشهای مربوط به برنامه وبهوک Cloud Run نمونه خود را بررسی کنید و بدنه JSON هر اعلان ارسال شده توسط Google Analytics را ببینید.