Kitle listeleriniz için webhook bildirimleri alın

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 öğesinin X-Goog-Channel-Token HTTP üst bilgisinde webhook POST isteği.

Webhook kullanan bir örnek isteği aşağıda görebilirsiniz:

HTTP İsteği

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:

HTTP Yanıtı

{
  "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:

  1. İlk POST isteği hemen gönderilir ve yeni oluşturulan kitle listesi CREATING durumunda. webhook başarısız olursa audienceLists.create işlemi hata döndürüyor ve webhook hata ayrıntıları.
  2. İ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 veya FAILED 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.