এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে ওয়েবহুক ব্যবহার করে আপনার দর্শক রপ্তানি অনুরোধের স্থিতির জন্য অ্যাসিঙ্ক্রোনাস বিজ্ঞপ্তি পাবেন। এই বৈশিষ্ট্যটি শুধুমাত্র ডেটা API এর v1alpha সংস্করণে উপলব্ধ।
ওয়েবহুক নোটিফিকেশন হল গুগল অ্যানালিটিক্স ডেটা এপিআই- এর একটি উন্নত বৈশিষ্ট্য। অডিয়েন্স এক্সপোর্ট বৈশিষ্ট্যের ভূমিকার জন্য, "ক্রিয়েট অ্যান অডিয়েন্স এক্সপোর্ট" দেখুন।
ওয়েবহুক ছাড়া, অনুরোধটি কখন সম্পূর্ণ হবে তা নির্ধারণ করার জন্য আপনাকে পর্যায়ক্রমে API-তে পোল করতে হবে।
ক্লাউড রান ব্যবহার করে একটি নমুনা ওয়েবহুক অ্যাপ্লিকেশন তৈরি করুন
আপনি "কুইকস্টার্ট: ক্লাউড রানে একটি নমুনা পরিষেবা স্থাপন করুন" টিউটোরিয়ালটি অনুসরণ করে গুগল ক্লাউড ব্যবহার করে একটি নমুনা ওয়েবহুক অ্যাপ্লিকেশন তৈরি করতে পারেন।
নমুনা পরিষেবাটি POST ওয়েবহুক বিজ্ঞপ্তি অনুরোধগুলি শুনতে সক্ষম হওয়ার জন্য, কুইকস্টার্ট টিউটোরিয়াল থেকে 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 প্রদান করে।
ক্লাউড রান কুইকস্টার্ট টিউটোরিয়ালের শেষে পৌঁছে গেলে এবং gcloud run deploy কমান্ড ব্যবহার করে ওয়েবহুক অ্যাপ্লিকেশনটি স্থাপন করার পরে, আপনার পরিষেবাটি যেখানে স্থাপন করা হয়েছে সেই URL টি সংরক্ষণ করুন।
পরিষেবা URL কনসোলে প্রদর্শিত হয়, উদাহরণস্বরূপ:
Service URL: https://webhooks-test-abcdef-uc.a.run.app
এটি হল সার্ভার নোটিফিকেশন URI যেখানে আপনার অ্যাপ্লিকেশন Google Analytics থেকে ওয়েবহুক নোটিফিকেশন শোনে।
একটি দর্শক তালিকা তৈরি করুন এবং ওয়েবহুক বিজ্ঞপ্তি চালু করুন
ওয়েবহুক বিজ্ঞপ্তির অনুরোধ করতে, webhookNotification অবজেক্টে নিম্নলিখিত মানগুলি নির্দিষ্ট করুন:
সার্ভার নোটিফিকেশন URI-তে সেই ওয়েব ঠিকানা থাকবে যা ওয়েবহুক নোটিফিকেশন পাবে।
(ঐচ্ছিক) বার্তাটি জাল না হওয়া থেকে রক্ষা করার জন্য একটি ইচ্ছামত স্ট্রিং
channelToken। ওয়েবহুক POST অনুরোধেরX-Goog-Channel-TokenHTTP হেডারেchannelTokenউল্লেখ করুন।
ওয়েবহুক ব্যবহার করে একটি নমুনা অনুরোধ এখানে দেওয়া হল:
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 রয়েছে, যা নিশ্চিত করে যে নির্দিষ্ট ওয়েবহুকটি ৫ সেকেন্ডেরও কম সময়ে সফলভাবে প্রতিক্রিয়া জানিয়েছে।
এখানে একটি নমুনা প্রতিক্রিয়া দেওয়া হল:
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 অনুরোধে বডিতে দীর্ঘস্থায়ী অপারেশন রিসোর্সের 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 পদ্ধতিতে কল করার পর ওয়েবহুক পরীক্ষা করার জন্য, আপনি আপনার নমুনা ক্লাউড রান ওয়েবহুক অ্যাপ্লিকেশনের লগগুলি পরিদর্শন করতে পারেন এবং Google Analytics দ্বারা প্রেরিত প্রতিটি বিজ্ঞপ্তির JSON বডি দেখতে পারেন।