Cuando ocurre un evento, libredesk envía un POST con JSON a la URL configurada. El cuerpo contiene el nombre del evento, la fecha y la conversación o mensaje relacionado.
Configuración
- Ve a Administración → Integraciones → Webhooks.
- Crea uno con nombre, URL, eventos, secreto opcional y estado.
- Usa el botón de prueba para comprobar tu endpoint.
Seguridad
Con un secreto, libredesk firma el cuerpo con HMAC-SHA256 y envía X-Libredesk-Signature: sha256=<firma>. Verifica la firma sobre el cuerpo original antes de procesarlo. Las solicitudes incluyen Content-Type: application/json y un User-Agent de libredesk.
import hmac, hashlib
def verify_signature(payload, signature, secret):
expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)Las URL de webhook están cubiertas por la protección SSRF opcional.
Eventos
conversation.created: nueva conversación.conversation.status_changed: cambio de estado.conversation.assignedyconversation.unassigned: cambios de asignación.conversation.tags_changed: etiquetas añadidas o eliminadas.message.createdymessage.updated: mensajes nuevos o actualizados.
Cada evento contiene event, timestamp y payload. Los eventos de conversación incluyen UUID, contacto, bandeja, estado, prioridad, asignaciones, etiquetas y atributos. Los de mensaje incluyen UUID, tipo, estado, contenido, remitente y adjuntos.
Entrega
Las entregas se ejecutan en trabajadores de fondo, usan el tiempo de espera de config.toml y no se reintentan. También pueden descartarse si la cola está llena. Verifica la firma y responde en menos de cinco segundos; procesa el evento después.
Pruebas
Usa Webhook.site o RequestBin para inspeccionar cargas. En producción, responde inmediatamente con 200 y procesa el evento de forma asíncrona.
