Un webhook es una devolución de llamada HTTPS creada por un socio que especifica cómo debe responder tu agente a los mensajes y eventos. Una vez que configures tu webhook, podrás comenzar a recibir mensajes y eventos.
Webhooks de socios y de agentes
Puedes configurar tu webhook a nivel de socio o de agente.
- Tu webhook de socio se aplica a todos los agentes que mantienes. Si tus agentes tienen un comportamiento similar o si solo tienes un agente, usa el webhook de socio.
- Los webhooks de agentes se aplican a agentes individuales. Si operas varios agentes con un comportamiento distinto, puedes configurar un webhook diferente para cada agente.
Si configuraste un webhook de socio y un webhook de agente, el webhook del agente tiene prioridad en su agente específico, mientras que el webhook de socio se aplica a cualquier agente que no tenga su propio webhook.
Configura un webhook de agente
Recibes mensajes enviados a tu agente a través del webhook de tu socio. Si deseas que los mensajes para un agente específico lleguen a un webhook diferente, configura un webhook de agente.
- Abre la consola para desarrolladores de Business Communications y accede con tu Cuenta de Google de socio de RBM.
- Haz clic en tu agente.
- Haz clic en Integrations.
- En Webhook, haz clic en Configurar.
- En URL de extremo de webhook, ingresa la URL de webhook que comience con “https://”.
- Anota tu valor de
clientToken
. Lo necesitas para verificar que los mensajes que recibes provengan de Google. Configura tu webhook para que acepte una solicitud
POST
con el parámetroclientToken
especificado y envíe una respuesta200 OK
con el valor de texto sin formato del parámetrosecret
como cuerpo de la respuesta.Por ejemplo, si tu webhook recibe una solicitud
POST
con el siguiente contenido del cuerpo{ "clientToken":"SJENCPGJESMGUFPY", "secret":"1234567890" }
Luego, el webhook debería confirmar el valor
clientToken
y, siclientToken
es correcto, mostrar una respuesta200 OK
con1234567890
como cuerpo de la respuesta:// 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); });
En Play Console, haz clic en Verificar. Cuando RBM verifica tu webhook, se cierra el diálogo.
Verifica los mensajes entrantes
Debido a que los webhooks pueden recibir mensajes de cualquier remitente, debes verificar que Google haya enviado mensajes entrantes antes de procesar el contenido del mensaje.
Para verificar que Google envió un mensaje que recibiste, sigue estos pasos:
- Extrae el encabezado
X-Goog-Signature
del mensaje. Esta es una copia con hash codificada en base64 de la carga útil del cuerpo del mensaje. - Decodifica en base 64 la carga útil de RBM en el elemento
message.body
de la solicitud. - Con el token de cliente de tu webhook (que especificaste cuando configuraste el webhook) como clave, crea una HMAC SHA512 de los bytes de la carga útil del mensaje decodificado en base64 y codifica en Base64 el resultado.
- Compara el hash
X-Goog-Signature
con el hash que creaste.- Si los hash coinciden, confirmaste que Google envió el mensaje.
Si los hash no coinciden, verifica tu proceso de hash en un mensaje que se considere bueno.
Si el proceso de generación de hash funciona correctamente y recibes un mensaje que crees que se te envió de forma fraudulenta, comunícate con nosotros.
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);
Próximos pasos
Una vez que configures el webhook, el agente podrá recibir mensajes de los dispositivos de prueba. Envía un mensaje para validar la configuración.