Webhooki

Webhook to utworzony przez partnera wywołanie zwrotne HTTPS, które określa, jak agent powinien odpowiadać na wiadomości i zdarzenia. Po skonfigurowaniu webhooka możesz zacząć otrzymywać wiadomości i zdarzenia.

Webhooki partnera i webhooki agenta

Webhooka możesz skonfigurować na poziomie partnera lub agenta.

  • Webhook partnera ma zastosowanie do każdego obsługiwanego agenta. Jeśli Twoi agenci zachowują się podobnie lub masz tylko jednego, użyj webhooka partnera.
  • Webhooki agenta mają zastosowanie do poszczególnych agentów. Jeśli zarządzasz wieloma agentami o odrębnym działaniu, możesz ustawić innego webhooka dla każdego agenta.

Jeśli masz skonfigurowany zarówno webhook partnera, jak i agenta, webhooka agenta ma pierwszeństwo przed konkretnym agentem, a webhook partnera ma zastosowanie do wszystkich agentów, które nie mają własnego webhooka.

Konfigurowanie webhooka agenta

Wiadomości wysyłane do agenta będziesz otrzymywać przez webhooka partnera. Jeśli chcesz, aby wiadomości konkretnego agenta były dostarczane do innego webhooka, skonfiguruj webhooka agenta.

  1. Otwórz konsolę programisty komunikacji biznesowej i zaloguj się na konto Google partnera RBM.
  2. Kliknij agenta.
  3. Kliknij Integrations (Integracje).
  4. W polu Webhook kliknij Skonfiguruj.
  5. W polu Adres URL punktu końcowego webhooka wpisz adres URL webhooka zaczynający się od „https://”.
  6. Zapisz wartość clientToken. Jest on potrzebny do weryfikowania, czy odbierane przez Ciebie wiadomości pochodzą od Google.
  7. Skonfiguruj webhooka, aby akceptował żądanie POST z określonym parametrem clientToken i wysłał odpowiedź 200 OK zawierającą zwykły tekst wartości parametru secret jako treść odpowiedzi.

    Jeśli na przykład webhook otrzyma żądanie POST z tą treścią główną

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

    webhook powinien potwierdzić wartość clientToken, a jeśli clientToken jest prawidłowy, zwrócić odpowiedź 200 OK z treścią 1234567890:

    // 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. W konsoli programisty kliknij Zweryfikuj. Gdy RBM zweryfikuje webhooka, okno się zamknie.

Weryfikowanie wiadomości przychodzących

Webhooki mogą odbierać wiadomości od dowolnych nadawców, dlatego przed przetworzeniem ich treści musisz sprawdzić, czy Google wysłał wiadomości przychodzące.

Aby sprawdzić, czy otrzymana wiadomość została wysłana przez Google, wykonaj te czynności:

  1. Wyodrębnij nagłówek X-Goog-Signature wiadomości. Jest to zaszyfrowana kopia ładunku treści wiadomości zakodowana w formacie base64.
  2. Dekodowanie ładunku RBM w standardzie Base-64 w elemencie message.body żądania.
  3. Korzystając z tokena klienta webhooka (określonego podczas konfigurowania webhooka) jako klucza, utwórz SHA512 HMAC bajtów ładunku zdekodowanego w formacie base-64 i zakoduj wynik w standardzie base64.
  4. Porównaj hasz funkcji X-Goog-Signature z utworzonym przez siebie haszem.
    • Jeśli hasze są zgodne, oznacza to, że wiadomość została wysłana przez Google.
    • Jeśli hasze nie są zgodne, sprawdź swój proces haszowania w przypadku dobrze znanej wiadomości.

      Jeśli proces haszowania działa prawidłowo i otrzymujesz wiadomość, która Twoim zdaniem została wysłana w wyniku oszustwa, skontaktuj się z nami.

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);
  

Dalsze kroki

Po skonfigurowaniu webhooka agent będzie mógł otrzymywać wiadomości z Twoich urządzeń testowych. Wyślij wiadomość, aby sprawdzić konfigurację.