Ir al contenido

Webhooks

Los webhooks te permiten recibir notificaciones HTTP cuando ocurren eventos en tus asistentes. Tiempo Real

  1. Registra una URL de endpoint

    Proporciona una URL donde podamos enviar notificaciones.

  2. Elige los eventos

    Selecciona qué eventos quieres recibir.

  3. Recibe solicitudes POST

    Enviamos datos JSON cuando ocurren eventos.

  4. Responde con 200

    Confirma la recepción con un código de estado éxito.

  1. Ve a Configuración de API

    Navega a ConfiguraciónAPIWebhooks

  2. Haz clic en Agregar Webhook

    Crea una nueva configuración de webhook.

  3. Ingresa tu URL de endpoint

    Proporciona la URL donde recibirás los eventos.

  4. Selecciona los eventos

    Elige qué eventos deben disparar el webhook.

  5. Guarda y prueba

    Guarda la configuración y envía un evento de prueba.

EventoDescripción
conversation.startedNueva conversación iniciada
conversation.endedConversación cerrada
message.receivedNuevo mensaje del usuario
message.sentRespuesta del bot enviada
escalation.requestedUsuario solicitó humano

Todos los webhooks envían datos JSON con esta estructura:

{
"id": "evt_abc123",
"type": "message.received",
"created_at": "2024-01-15T10:30:00Z",
"data": {
"bot_id": "bot_xyz789",
"session_id": "session_123",
"message": {
"id": "msg_456",
"content": "Hola, necesito ayuda",
"role": "user",
"created_at": "2024-01-15T10:30:00Z"
},
"contact": {
"id": "contact_789",
"email": "[email protected]",
"name": "Juan García"
}
}
}

Cada solicitud de webhook incluye una cabecera de firma:

X-Webhook-Signature: sha256=abc123...
const crypto = require('crypto');
function verificarWebhook(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
const expected = `sha256=${expectedSignature}`;
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
// En tu manejador de endpoint
app.post('/webhook', (req, res) => {
const signature = req.headers['x-webhook-signature'];
const payload = JSON.stringify(req.body);
if (!verificarWebhook(payload, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).send('Firma inválida');
}
// Procesar el webhook
console.log('Webhook recibido:', req.body.type);
res.status(200).send('OK');
});

Reintentos Automáticos

Reintentamos webhooks fallidos hasta 5 veces.

Backoff Exponencial

Los reintentos ocurren a 1m, 5m, 30m, 2h, 24h.

Umbral de Fallo

Después de 5 fallos, el webhook se desactiva.

  1. Usa un endpoint de prueba

    Herramientas como webhook.site te permiten inspeccionar solicitudes.

  2. Envía eventos de prueba

    Usa el botón “Enviar Prueba” en el panel de control.

  3. Verifica la recepción

    Revisa que tu endpoint recibió los datos correctamente.

  4. Prueba el manejo de errores

    Asegúrate de que tu endpoint maneje fallos con gracia.