Ein Webhook ist ein von einem Partner erstellter HTTPS-Callback, der angibt, wie Ihr Kundenservicemitarbeiter auf Nachrichten und Ereignisse reagieren soll. Nachdem Sie den Webhook konfiguriert haben, können Sie mit dem Empfangen von Nachrichten und Ereignissen beginnen.
Partner-Webhooks und Agent-Webhooks
Sie können den Webhook entweder auf Partner- oder Agent-Ebene konfigurieren.
- Der Partner-Webhook gilt für jeden Agent, den Sie verwalten. Wenn Ihre Agents ein ähnliches Verhalten haben oder Sie nur einen Agent haben, verwenden Sie den Partner-Webhook.
- Agent-Webhooks gelten für einzelne Kundenservicemitarbeiter. Wenn Sie mehrere Kundenservicemitarbeiter mit unterschiedlichem Verhalten haben, können Sie für jeden Kundenservicemitarbeiter einen anderen Webhook festlegen.
Wenn Sie sowohl einen Partner-Webhook als auch einen Agent-Webhook konfiguriert haben, hat der Agent-Webhook bei seinem spezifischen Agent Vorrang. Der Partner-Webhook gilt hingegen für alle Agents, die keinen eigenen Webhook haben.
Agent-Webhook konfigurieren
Sie erhalten Nachrichten, die an Ihren Kundenservicemitarbeiter über Ihren Partnerwebhook gesendet wurden. Wenn Nachrichten für einen bestimmten Agent stattdessen an einen anderen Webhook gesendet werden sollen, legen Sie einen Agent-Webhook fest.
- Öffnen Sie die Business Communications Developer Console und melden Sie sich mit dem Google-Konto Ihres RBM-Partners an.
- Klicken Sie auf den Agent.
- Klicken Sie auf Integrations (Integrationen).
- Klicken Sie unter Webhook auf Configure (Konfigurieren).
- Geben Sie unter Endpunkt-URL des Webhooks die Webhook-URL ein, die mit „https://“ beginnt.
- Notieren Sie sich den
clientToken
-Wert. Sie benötigen ihn, um überprüfen zu können, ob eingehende Nachrichten von Google stammen. Konfiguriere deinen Webhook so, dass er eine
POST
-Anfrage mit dem angegebenenclientToken
-Parameter akzeptiert und eine200 OK
-Antwort mit dem Klartextwert dessecret
-Parameters als Antworttext sendet.Angenommen, Ihr Webhook empfängt eine
POST
-Anfrage mit dem folgenden Inhalt:{ "clientToken":"SJENCPGJESMGUFPY", "secret":"1234567890" }
sollte Ihr Webhook den Wert
clientToken
bestätigen und, wennclientToken
korrekt ist, eine200 OK
-Antwort mit1234567890
als Antworttext zurückgeben:// 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); });
Klicken Sie in der Developer Console auf Bestätigen. Wenn RBM den Webhook überprüft, wird das Dialogfeld geschlossen.
Eingehende Nachrichten prüfen
Da Webhooks Nachrichten von beliebigen Absendern empfangen können, sollten Sie vor der Verarbeitung des Nachrichteninhalts prüfen, ob die eingehenden Nachrichten von Google gesendet wurden.
So prüfen Sie, ob Google eine Nachricht gesendet hat, die Sie erhalten haben:
- Extrahieren Sie die
X-Goog-Signature
-Kopfzeile der Nachricht. Dies ist eine gehashte, base64-codierte Kopie der Nutzlast des Nachrichtentexts. - Decodieren Sie die RBM-Nutzlast mit Base64 im
message.body
-Element der Anfrage. - Erstelle mit dem Client-Token deines Webhooks (das du bei der Einrichtung des Webhooks angegeben hast) als Schlüssel einen SHA512-HMAC aus den Bytes der Base64-decodierten Nachrichtennutzlast und codiere das Ergebnis mit Base64.
- Vergleichen Sie den
X-Goog-Signature
-Hash mit dem von Ihnen erstellten Hash.- Wenn die Hash-Werte übereinstimmen, haben Sie bestätigt, dass Google die Nachricht gesendet hat.
Wenn die Hash-Werte nicht übereinstimmen, prüfen Sie Ihren Hash-Prozess anhand einer fehlerfreien Nachricht.
Wenn Ihr Hash-Verfahren ordnungsgemäß funktioniert und Sie eine Nachricht erhalten, die Ihrer Meinung nach betrügerisch an Sie gesendet wurde, kontaktieren Sie uns.
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);
Nachrichtenverarbeitung
Die Rückgabe von einem anderen Wert als 200 OK
von einem Webhook gilt als Zustellungsfehler.
Entwickler müssen darauf achten, dass beim Senden von Nachrichten in hohen Frequenzen hohe Webhook-Benachrichtigungen generiert werden. Außerdem müssen sie ihren Code so gestalten, dass sie Benachrichtigungen in der erwarteten Häufigkeit empfangen können. Entwickler müssen Situationen berücksichtigen, die zu Fehlerantworten führen können, einschließlich 500
-Antworten aus ihrem Webcontainer, Zeitüberschreitungen oder Upstream-Fehler. Dabei sollten Sie unter anderem Folgendes berücksichtigen:
- Achten Sie darauf, dass Ihre DDoS-Schutzmaßnahmen so konfiguriert sind, dass sie die erwartete Anzahl von Webhook-Benachrichtigungen verarbeiten können.
- Achten Sie darauf, dass Ressourcen wie Datenbankverbindungspools nicht aufgebraucht werden und zu Zeitüberschreitungen oder
500
-Antworten führen.
Verhalten bei Zustellungsfehlern
RBM verwendet einen Backoff- und Wiederholmechanismus, wenn es eine andere Antwort als 200 OK
von einem Webhook-Aufruf erhält. RBM erhöht die Wartezeit zwischen den Wiederholungen auf maximal 600 Sekunden. Die Wiederholungen werden 7 Tage lang fortgesetzt. Danach wird die Nachricht verworfen.
Auswirkungen von Webhooks auf Agentenebene
RBM stellt Nachrichten für einen Partner in einer Warteschlange an. Wenn ein Partner Webhooks auf Kundenservicemitarbeiterebene verwendet, muss er beachten, dass sich ein Fehler bei einem Webhook auf die Zustellung an andere Webhooks auswirkt. Webhooks anderer Agents werden während des Backoff-Zeitraums einer fehlgeschlagenen Nachricht aufgerufen. Da fehlerhafte Nachrichten jedoch für einen erneuten Versuch in die Warteschlange gestellt werden, sinken die Gesamtauslieferungsraten und andere Kundenservicemitarbeiter sind betroffen.
Es ist wichtig, dass Entwickler dieses Modell und den entsprechenden Code entsprechend verstehen – so weit wie möglich, Nachrichten annehmen und zur Verarbeitung in die Warteschlange stellen, um die Chance zu minimieren, dass ein Fehler zurückgegeben wird.
Nächste Schritte
Nachdem Sie den Webhook konfiguriert haben, kann Ihr Kundenservicemitarbeiter Nachrichten von Ihren Testgeräten empfangen. Senden Sie eine Nachricht, um die Einrichtung zu bestätigen.