คู่มือนี้อธิบายวิธีใช้เว็บฮุคเพื่อรับการแจ้งเตือนแบบไม่พร้อมกันเกี่ยวกับสถานะของคำขอส่งออกกลุ่มเป้าหมาย ฟีเจอร์นี้ใช้ได้เฉพาะ ใน Data API เวอร์ชัน v1alpha
การแจ้งเตือนเว็บฮุค เป็นฟีเจอร์ขั้นสูงของ Google Analytics Data API หากต้องการดูข้อมูลเบื้องต้นเกี่ยวกับฟีเจอร์การส่งออกกลุ่มเป้าหมาย โปรดดูสร้างการส่งออกกลุ่มเป้าหมาย
หากไม่มีเว็บฮุค คุณจะต้องโพล API เป็นระยะๆ เพื่อดูว่าคำขอเสร็จสมบูรณ์เมื่อใด
สร้างแอปพลิเคชันเว็บฮุคตัวอย่างโดยใช้ Cloud Run
คุณสามารถสร้างแอปพลิเคชันเว็บฮุคตัวอย่างโดยใช้ Google Cloud ได้โดยทำตาม บทแนะนำ เริ่มต้นใช้งานฉบับย่อ: ทำให้บริการตัวอย่างใช้งานได้กับ Cloud Run
หากต้องการให้บริการตัวอย่างรับฟังคำขอการแจ้งเตือนเว็บฮุค 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 เพื่อระบุว่าการดำเนินการสำเร็จ
เมื่อทำตามบทแนะนำเริ่มต้นใช้งานฉบับย่อของ Cloud Run จนจบและทำให้แอปพลิเคชันเว็บฮุคใช้งานได้โดยใช้คำสั่ง gcloud run deploy แล้ว ให้บันทึก URL ที่ทำให้บริการใช้งานได้
URL ของบริการจะแสดงในคอนโซล เช่น
Service URL: https://webhooks-test-abcdef-uc.a.run.app
นี่คือ URI การแจ้งเตือนของเซิร์ฟเวอร์ ที่แอปพลิเคชันของคุณรับฟังการแจ้งเตือนเว็บฮุคจาก Google Analytics
สร้างรายการกลุ่มเป้าหมายและเปิดการแจ้งเตือนเว็บฮุค
หากต้องการขอการแจ้งเตือนเว็บฮุค ให้ระบุค่าต่อไปนี้ใน webhookNotification
ออบเจ็กต์:
URI การแจ้งเตือนของเซิร์ฟเวอร์ ที่มีที่อยู่เว็บที่จะรับการแจ้งเตือนเว็บฮุค
(ไม่บังคับ) สตริง
channelTokenที่กำหนดขึ้นเองเพื่อป้องกันไม่ให้มีการปลอมแปลงข้อความ ระบุchannelTokenในส่วนหัว HTTPX-Goog-Channel-Tokenของคำขอ 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 ไปยังบริการเว็บฮุคมีทั้งเวอร์ชัน JSON ของ
ทรัพยากรการดำเนินการที่ใช้เวลานาน
ในเนื้อหาและฟิลด์ sentTimestamp การประทับเวลาที่ส่งระบุเวลา Unix Epoch เป็นไมโครวินาทีที่ส่งคำขอ คุณสามารถใช้การประทับเวลานี้เพื่อระบุการแจ้งเตือนที่เล่นซ้ำ
ระบบจะส่งคำขอ POST ไปยังเว็บฮุค 1 หรือ 2 รายการระหว่างการสร้างรายการกลุ่มเป้าหมาย โดยมีรายละเอียดดังนี้
- ระบบจะส่งคำขอ POST รายการแรกทันที ซึ่งแสดงรายการกลุ่มเป้าหมายที่สร้างขึ้นใหม่ในสถานะ
CREATINGหากคำขอแรกไปยังเว็บฮุคล้มเหลว การดำเนินการaudienceLists.createจะแสดงข้อผิดพลาดและรายละเอียดข้อผิดพลาดของเว็บฮุค - ระบบจะส่งคำขอ POST รายการที่ 2 หลังจากสร้างรายการกลุ่มเป้าหมายเสร็จสมบูรณ์ การสร้างจะเสร็จสมบูรณ์เมื่อรายการกลุ่มเป้าหมายอยู่ในสถานะ
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 คุณสามารถ
ตรวจสอบบันทึก
ของแอปพลิเคชันเว็บฮุค Cloud Run ตัวอย่าง และดูเนื้อหา JSON ของการแจ้งเตือนทุกรายการ
ที่ Google Analytics ส่ง