Un webhook è un callback HTTPS creato da un partner che specifica in che modo l'agente deve rispondere a messaggi ed eventi. Dopo aver configurato il webhook, puoi iniziare a ricevere messaggi ed eventi.
Webhook partner e agente
Puoi configurare il webhook a livello di partner o di agente.
- Il webhook partner si applica a tutti gli agenti che gestisci. Se i tuoi agenti hanno un comportamento simile o hai un solo agente, utilizza il webhook partner.
- I webhook degli agenti si applicano ai singoli agenti. Se utilizzi più agenti con un comportamento distinto, puoi impostare un webhook diverso per ogni agente.
Se hai configurato sia un webhook del partner sia un webhook dell'agente, il webhook dell'agente ha la precedenza sul suo agente specifico, mentre il webhook del partner si applica a tutti gli agenti che non dispongono di un proprio webhook.
Configura un webhook agente
Ricevi i messaggi inviati all'agente nel webhook partner. Se vuoi che i messaggi di un agente specifico arrivino a un webhook diverso, imposta un webhook dell'agente.
- Apri la Console per gli sviluppatori di Business Communications e accedi con il tuo Account Google del partner RBM.
- Fai clic sull'agente.
- Fai clic su Integrations (Integrazioni).
- Per Webhook, fai clic su Configura.
- In URL endpoint webhook, inserisci l'URL webhook che inizia con "https://".
- Prendi nota del tuo valore di
clientToken
. È necessario per verificare che i messaggi ricevuti provengano da Google. Configura il webhook per accettare una richiesta
POST
con il parametroclientToken
specificato e invia una risposta200 OK
con il valore in testo normale del parametrosecret
come corpo della risposta.Ad esempio, se il webhook riceve una richiesta
POST
con i seguenti contenuti del corpo{ "clientToken":"SJENCPGJESMGUFPY", "secret":"1234567890" }
il webhook deve confermare il valore
clientToken
e, seclientToken
è corretto, restituire una risposta200 OK
con1234567890
come corpo della risposta:// 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); });
Nella Developer Console, fai clic su Verifica. Quando RBM verifica il webhook, la finestra di dialogo si chiude.
Verifica i messaggi in arrivo
Poiché i webhook possono ricevere messaggi da qualsiasi mittente, devi verificare che Google abbia inviato messaggi in arrivo prima di elaborare i contenuti dei messaggi.
Per verificare che Google abbia inviato un messaggio che hai ricevuto, segui questi passaggi:
- Estrai l'intestazione
X-Goog-Signature
del messaggio. Questa è una copia sottoposta ad hashing e codificata in Base64 del payload del corpo del messaggio. - Decodifica in base 64 il payload RBM nell'elemento
message.body
della richiesta. - Utilizzando il token client del webhook (specificato quando hai configurato il webhook) come chiave, crea un HMAC SHA512 dei byte del payload dei messaggi decodificato in base-64 e codifica il risultato in base64.
- Confronta l'hash
X-Goog-Signature
con l'hash che hai creato.- Se gli hash corrispondono, significa che Google ha inviato il messaggio.
Se gli hash non corrispondono, controlla la procedura di hashing su un messaggio noto.
Se la procedura di hashing funziona correttamente e ricevi un messaggio che a tuo parere ti è stato inviato in modo fraudolento, contattaci.
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);
Passaggi successivi
Una volta configurato il webhook, l'agente può ricevere messaggi dai dispositivi di test. Invia un messaggio per convalidare la configurazione.