Ein Webhook ist ein von einem Partner erstellter HTTPS-Callback, der angibt, wie der Agent auf Nachrichten und Ereignisse reagieren soll. Nachdem Sie den Webhook konfiguriert haben, können Sie Nachrichten und Ereignisse empfangen.
Partner-Webhooks und Agent-Webhooks
Sie können den Webhook entweder auf Partner- oder auf Agent-Ebene konfigurieren.
- Der Partner-Webhook gilt für jeden Agent, den Sie verwalten. Wenn sich Ihre Agents ähnlich verhalten oder Sie nur einen Agent haben, verwenden Sie den Partner-Webhook.
- Agent-Webhooks gelten für einzelne Agents. Wenn Sie mehrere Agents mit unterschiedlichem Verhalten betreiben, können Sie für jeden Agent einen anderen Webhook festlegen.
Wenn Sie sowohl einen Partner-Webhook als auch einen Agent-Webhook konfiguriert haben, hat der Agent-Webhook Vorrang für den jeweiligen Agent, während der Partner-Webhook für alle Agents gilt, die keinen eigenen Webhook haben.
Agent-Webhook konfigurieren
Sie empfangen Nachrichten, die an Ihren Agent in Ihrem Partner-Webhook gesendet werden. Wenn Nachrichten für einen bestimmten Agent stattdessen bei einem anderen Webhook ankommen sollen, legen Sie einen Agent-Webhook fest.
- Öffnen Sie die Business Communications Developer Console und melden Sie sich mit Ihrem RBM-Partner-Google-Konto an.
- Klicken Sie auf den Agent.
- Klicken Sie auf Integrations (Integrationen).
- Klicken Sie für Webhook auf Konfigurieren.
- Geben Sie unter Webhook-Endpunkt-URL die Webhook-URL ein, die mit „https://“ beginnt.
- Notieren Sie sich den
clientToken
-Wert. Sie benötigen sie, um zu überprüfen, ob Nachrichten von Google stammen. Konfigurieren Sie den Webhook so, dass er eine
POST
-Anfrage mit dem angegebenen ParameterclientToken
akzeptiert und eine200 OK
-Antwort mit dem Nur-Text-Wert des Parameterssecret
als Antworttext sendet.Beispiel: Ihr Webhook erhält eine
POST
-Anfrage mit dem folgenden Textinhalt:{ "clientToken":"SJENCPGJESMGUFPY", "secret":"1234567890" }
Der Webhook sollte den Wert
clientToken
bestätigen. WennclientToken
korrekt ist, sollte er 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. Sobald RBM den Webhook verifiziert hat, wird das Dialogfeld geschlossen.
Eingehende Nachrichten überprüfen
Da Webhooks Nachrichten von beliebigen Absendern empfangen können, sollten Sie vor der Verarbeitung des Nachrichteninhalts prüfen, ob Google eingehende Nachrichten gesendet hat.
So überprüfen Sie, ob Google eine Nachricht gesendet hat, die Sie erhalten haben:
- Extrahieren Sie den
X-Goog-Signature
-Header der Nachricht. Dies ist eine base64-codierte, gehashte Kopie der Nutzlast des Nachrichtentexts. - Mit Base64 decodieren Sie die RBM-Nutzlast im
message.body
-Element der Anfrage. - Verwenden Sie das Clienttoken des Webhooks, das Sie beim Einrichten des Webhooks angegeben haben, als Schlüssel, erstellen Sie einen SHA512-HMAC der Byte der base64-decodierten Nachrichtennutzlast und codieren Sie das Ergebnis mit base64.
- Vergleichen Sie den Hash
X-Goog-Signature
mit dem von Ihnen erstellten Hash.- Wenn die Hashwerte übereinstimmen, haben Sie bestätigt, dass die Nachricht von Google gesendet wurde.
Wenn die Hashwerte nicht übereinstimmen, prüfen Sie Ihren Hash-Vorgang bei einer als fehlerfrei bekannten Nachricht.
Wenn Ihr Hash-Prozess korrekt funktioniert und Sie eine Nachricht erhalten, die Ihrer Meinung nach in betrügerischer Absicht an Sie gesendet wurde, wenden Sie sich an 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);
Nächste Schritte
Nachdem Sie den Webhook konfiguriert haben, kann der Agent von Ihren Testgeräten Nachrichten empfangen. Senden Sie eine Nachricht, um die Einrichtung zu validieren.