Bu kılavuzda, eşzamansız bildirimleri almak için webhook'ların nasıl kullanılacağı açıklanmaktadır. durumu hakkında daha fazla bilgi edinin. Bu özellik yalnızca Data API'nin v1alpha sürümünde bulabilirsiniz.
Webhook bildirimleri Google Analytics Verilerinin gelişmiş bir özelliğidir API. Android'e giriş için kitle dışa aktarma özelliği için kitle dışa aktarma işlemi oluşturma bölümünü inceleyin.
Webhook olmadan, API'yi düzenli aralıklarla anket yaparak projenin ne zaman tamamlandığını belirler.
Cloud Run'ı kullanarak örnek bir webhook uygulaması oluşturma
Aşağıdaki adımları uygulayarak Google Cloud kullanarak örnek bir webhook uygulaması oluşturabilirsiniz: Hızlı Başlangıç: Cloud Run'a örnek bir hizmet dağıtma başlıklı eğiticiyi inceleyin.
Örnek hizmetin POST webhook bildirim isteklerini dinleyebilmesi için
hızlı başlangıç eğiticisindeki index.js
dosyasını aşağıdaki kodla değiştirin
kod:
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 isteği olarak gönderilen her gelen webhook bildirimi için bu kod yazdırılır.
Webhook bildirimi JSON gövdesini ve kanal jetonu değerini kaldırıp
işlemi başarılı olduğunu göstermek için 200
HTTP kodunu döndürür.
Cloud Run hızlı başlangıç eğiticisinin sonuna ulaşıp dağıtım yaptıktan sonra
Webhook uygulamasında gcloud run deploy
komutunu kullanarak
hizmetinizin dağıtıldığı URL.
Hizmet URL'si konsolda gösterilir. Örneğin:
Service URL: https://webhooks-test-abcdef-uc.a.run.app
Bu, sunucu bildirim URI'sidir. uygulamanızın webhook bildirimlerini dinlediği yer Google Analytics.
Kitle listesi oluşturma ve webhook bildirimlerini etkinleştirme
Webhook bildirimleri istemek için webhookNotification
bölümünde aşağıdaki değerleri belirtin
nesne:
Sunucu bildirim URI'si web adresini içerir.
(İsteğe bağlı) Rastgele bir dize
channelToken
korunmasını sağlayabilirsiniz.channelToken
özelliğini belirtin öğesininX-Goog-Channel-Token
HTTP üst bilgisinde webhook POST isteği.
Webhook kullanan bir örnek isteği aşağıda görebilirsiniz:
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
yönteminin yanıtı
webhookNotification
: Bu, belirtilen webhook'un başarıyla tamamlandığını doğrular.
5 saniyeden daha kısa sürede yanıt verdi.
Aşağıda örnek bir yanıt verilmiştir:
{
"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 yanıt vermezse veya yanlış hizmet URL'si sağlarsanız bir hata mesajı döndürülür.
Aşağıda, alabileceğiniz bir hata örneği verilmiştir:
{
"error": {
"code": 400,
"message": "Expected response code of 200 from webhook URI but instead
'404' was received.",
"status": "INVALID_ARGUMENT"
}
}
Webhook bildirimlerini işleme
Bir webhook hizmetine yapılan POST isteği, hem
uzun çalışan işlem kaynağı
gövdesinde, sentTimestamp
alanında da görürsünüz. Gönderilen zaman damgası,
isteğin gönderildiği mikrosaniye cinsinden Unix sıfır zamanı. Bunu kullanabilirsiniz
zaman damgasını kullanır.
Aynı işlem sırasında webhook'a bir veya iki POST isteği gönderilir kitle listesi oluşturma:
- İlk POST isteği hemen gönderilir ve yeni oluşturulan
kitle listesi
CREATING
durumunda. webhook başarısız olursaaudienceLists.create
işlemi hata döndürüyor ve webhook hata ayrıntıları. - İkinci POST isteği, kitle listesi tamamlandıktan sonra gönderilir
çok önemli. Kitle listesi şunlardan birine ulaştığında oluşturma işlemi tamamlanır:
ACTIVE
veyaFAILED
durumu.
Bir kitle listesiyle ilgili ilk bildirimin örneği aşağıda verilmiştir.
CREATING
eyalet:
{
"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"
}
}
Bir kitle listesiyle ilgili ikinci bildirim örneğini aşağıda bulabilirsiniz.
ACTIVE
eyalet:
{
"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"
}
}
İkinci bildirim, kitle listesinin oluşturulduğunu ve
audienceLists.query
kullanılarak sorgulanmaya hazır
yöntemidir.
audienceLists.create
yöntemini çağırdıktan sonra webhook'ları test etmek için şunları yapabilirsiniz:
günlükleri inceleyin
ve her bir örneğinizin JSON gövdesini görmek için,
bildirimi alabilirsiniz.