Webhook'lar

Webhook, iş ortağı tarafından oluşturulan ve temsilcinizin mesajlara ve etkinliklere nasıl yanıt vermesi gerektiğini belirten bir HTTPS geri çağırma yöntemidir. Webhook'unuzu yapılandırdıktan sonra, mesaj ve etkinlik almaya başlayabilirsiniz.

İş ortağı webhook'ları ve aracı webhook'ları

Webhook'unuzu iş ortağı düzeyinde veya temsilci düzeyinde yapılandırabilirsiniz.

Hem iş ortağı webhook'u hem de aracı webhook'u yapılandırdıysanız temsilci webhook, kendi belirli aracısında öncelikli olur. İş ortağı webhook ise kendi webhook'u olmayan tüm aracılar için geçerlidir.

Aracı webhook'unu yapılandırma

Temsilcinize gönderilen mesajları iş ortağı webhook'unuzda alırsınız. Bunun yerine, belirli bir temsilcinin mesajlarının farklı bir webhook'a ulaşmasını istiyorsanız bir aracı webhook'u ayarlayın.

  1. İş İletişimleri Geliştirici Konsolu'nu açın ve RBM iş ortağı Google Hesabınızla oturum açın.
  2. Temsilcinizi tıklayın.
  3. Integrations'ı (Entegrasyonlar) tıklayın.
  4. Webhook için Yapılandır'ı tıklayın.
  5. Webhook uç nokta URL'si için "https://" ile başlayan webhook URL'nizi girin.
  6. clientToken değerinizi not edin. Aldığınız mesajların Google'dan geldiğini doğrulamak için bu numarayı kullanmanız gerekir.
  7. Webhook'unuzu belirtilen clientToken parametresiyle bir POST isteğini kabul edecek şekilde yapılandırın ve yanıt gövdesi olarak secret parametresinin düz metin değerini içeren bir 200 OK yanıtı gönderin.

    Örneğin, webhook'unuz aşağıdaki gövde içeriğini içeren bir POST isteği alırsa:

    {
      "clientToken":"SJENCPGJESMGUFPY",
      "secret":"1234567890"
    }
    

    webhook'unuz clientToken değerini onaylamalı ve clientToken doğruysa yanıt gövdesi olarak 1234567890 ile 200 OK yanıtı döndürmelidir:

    // clientToken from Configure
    const myClientToken = "SJENCPGJESMGUFPY";
    
    // Example endpoint
    app.post("/rbm-webhook", (req, res) => {
      const msg = req.body;
      if (msg.clientToken === myClientToken) {
          res.status(200).send(msg.secret);
          return;
      }
      res.send(400);
    });
    
  8. Developer Console'da Doğrula'yı tıklayın. RBM webhook'unuzu doğruladığında iletişim kutusu kapanır.

Gelen iletileri doğrulama

Webhook'lar herhangi bir gönderenden mesaj alabildiğinden, Google'ın mesaj içeriğini işlemeden önce gelen mesajları gönderdiğini doğrulamanız gerekir.

Aldığınız iletinin Google tarafından gönderildiğini doğrulamak için aşağıdaki adımları uygulayın:

  1. İletinin X-Goog-Signature üstbilgisini çıkarın. Bu, mesaj gövdesi yükünün karma ve base64 kodlu bir kopyasıdır.
  2. İsteğin message.body öğesinde RBM yükünün Base-64 kodunu çöz.
  3. Webhook'unuzu ayarlarken belirttiğiniz istemci jetonunu, webhook'unuzun istemci jetonunu anahtar olarak kullanarak base 64 kodu çözülmüş mesaj yükünün baytları için bir SHA512 HMAC oluşturun ve sonucu base64 olarak kodlayın.
  4. X-Goog-Signature karmasını, oluşturduğunuz karma ile karşılaştırın.
    • Karma değerleri eşleşiyorsa mesajın Google tarafından gönderildiğini onaylamış olursunuz.
    • Karmalar eşleşmiyorsa bilinen iyi bir mesajla ilgili karma oluşturma işleminizi kontrol edin.

      Karma oluşturma işleminiz düzgün çalışıyorsa ve size hileli bir şekilde gönderildiğini düşündüğünüz bir mesaj alırsanız bize ulaşın.

Node.js

  if ((requestBody.hasOwnProperty('message')) && (requestBody.message.hasOwnProperty('data'))) {
    // Validate the received hash to ensure the message came from Google RBM
    let userEventString = Buffer.from(requestBody.message.data, 'base64');
    let hmac = crypto.createHmac('sha512', CLIENT_TOKEN);
    let data = hmac.update(userEventString);
    let genHash = data.digest('base64');
    let headerHash = req.header('X-Goog-Signature');

    if (headerHash === genHash) {
      let userEvent = JSON.parse(userEventString);

      console.log('userEventString: ' + userEventString);
      handleMessage(userEvent);
    } else {
      console.log('hash mismatch - ignoring message');
    }
  }

  res.sendStatus(200);
  

Sonraki adımlar

Webhook'unuzu yapılandırdıktan sonra, temsilciniz test cihazlarınızdan mesaj alabilir. Kurulumunuzu doğrulamak için mesaj gönderin.