Qué es
Los webhooks son solicitudes HTTPS que YCloud envía a tu aplicación cuando cambian la entrega de mensajes, los mensajes entrantes, los contactos, las plantillas, las llamadas y otros recursos.Antes de empezar
- Guarda tu clave de API de YCloud en
YCLOUD_API_KEY. - Implementa un endpoint HTTPS accesible públicamente.
- Conserva el cuerpo sin procesar de la solicitud para la verificación de firmas.
- Decide qué tipos de eventos necesita tu aplicación.
Cómo funciona
- Crea un endpoint de Webhook y suscríbelo a tipos de eventos.
- Guarda el
secretdevuelto del endpoint. - YCloud envía una solicitud de evento a tu endpoint.
- Verifica
YCloud-Signatureantes de confiar en la solicitud. - Devuelve una respuesta
2xxde inmediato. - Procesa el evento de forma idempotente, ya que la entrega puede repetirse.
Solicitud
Crea un endpoint conPOST /webhookEndpoints.
Campos de la solicitud
Ejemplo de solicitud
Suscribirse a eventos de eco y de transferencia
Para los Agentes incorporados a través de la API REST pública, crea un endpoint con las siguientes suscripciones. Los Agentes creados en la consola no emiten estos tres eventos. Para modificar un endpoint existente, conserva las suscripciones a eventos que aún necesites.whatsappMessage. El evento de transferencia contiene whatsappMetaBusinessAgent y conserva su información de Agente/control. No utilizan el contrato whatsapp.smb.message.echoes de la aplicación WhatsApp Business. Consulta los detalles de eventos de eco y de transferencia para ver definiciones de campos, ejemplos, orden y límites de correlación de transferencias.
Suscribirse a eventos de mensajes de Messenger
Incluye los nombres de eventos que necesites en
enabledEvents al crear o actualizar un endpoint. Por ejemplo, suscríbete a los cuatro con:
messengerInboundMessage.id y metaMessageId, reemplaza text.body y agrega editCount y editTime. El sendTime y el createTime del mensaje permanecen sin cambios; el createTime del envoltorio del evento es la hora de la edición. Los mensajes no editados omiten los campos de edición. Solo se actualiza un mensaje entrante existente. Las ediciones anteriores se ignoran; los mensajes faltantes y las ediciones históricas no se reconstruyen. Correlaciona las actualizaciones mediante el ID del mensaje y usa el conteo acumulativo para evitar aplicar un texto anterior sobre una versión más reciente. Los reintentos del origen pueden generar otro ID de evento para la misma edición guardada. Consulta el ejemplo de edición entrante.
Los eventos de reacción contienen pageId, el psid del cliente que reacciona, el metaMessageId de destino y action (react o unreact). Los campos opcionales reaction y emoji pueden estar ausentes, especialmente para unreact. Una reacción no modifica el estado de entrega de un mensaje. El mensaje de destino puede originarse fuera de la API de YCloud, por lo que el evento no requiere un registro local de mensaje ni incluye un ID de mensaje local.
El createTime del evento conserva la hora de interacción de origen. Los reintentos de entrega a un cliente conservan su id y carga útil de evento. El procesamiento de retrollamadas de origen puede generar otro ID de evento para una interacción repetida; no trates los ID de evento como identidades de reacciones o de mensajes. Consulta los ejemplos de carga útil de reacciones para ambas acciones.
Respuesta
La respuesta devuelve el endpoint creado y susecret de firma. Guarda el secreto de forma segura. YCloud lo utiliza para generar firmas de Webhook.
Ejemplo de respuesta
Campos de la respuesta
Recibir eventos
Solicitud de evento
YCloud envía un objeto de evento JSON a laurl configurada. El evento incluye
campos comunes como id, type, apiVersion e createTime, además de una
carga útil específica del tipo.
Tu controlador debe:
- Leer el cuerpo sin procesar de la solicitud.
- Validar el encabezado
YCloud-Signaturecon el secreto del endpoint antes de confiar en la carga útil. - Devolver una respuesta exitosa
2xxa la brevedad. - Mover el procesamiento lento a una cola.
- Hacer que el procesamiento de eventos sea idempotente para que la entrega repetida no repita acciones de negocio.
Respuesta del receptor
Devuelve una respuesta HTTP2xx exitosa en cuanto se acepten la firma y la solicitud.
El cuerpo de la respuesta puede estar vacío.
2xx puede
hacer que YCloud reintente el evento, por lo que debes deduplicar por id del evento.
Ejemplos comunes de carga útil
Despliega un evento para inspeccionar su ejemplo completo de carga útil. Estos ejemplos provienen de la especificación de Webhook de OpenAPI. Consulta todos los ejemplos de cargas útiles de Webhook para cada tipo de evento admitido.Evento de atributos de contacto cambiados
Evento de atributos de contacto cambiados
Ejemplo de carga útil cuando se modifican los atributos de un contacto
Evento de contacto creado
Evento de contacto creado
Ejemplo de carga útil cuando se crea un nuevo contacto
Evento de contacto eliminado
Evento de contacto eliminado
Ejemplo de carga útil cuando se elimina un contacto
Evento de cancelación de suscripción por parte del cliente
Evento de cancelación de suscripción por parte del cliente
Ejemplo de carga útil cuando un cliente cancela la suscripción
El cliente reanuda la suscripción
El cliente reanuda la suscripción
Ejemplo de carga útil cuando un cliente reanuda la suscripción
Evento de plantilla de WhatsApp archivada
Evento de plantilla de WhatsApp archivada
Ejemplo de carga útil cuando se archiva una plantilla de WhatsApp
Evento de plantilla de WhatsApp desarchivada
Evento de plantilla de WhatsApp desarchivada
Ejemplo de carga útil cuando se desarchiva una plantilla de WhatsApp. El estado de la plantilla es el estado actual devuelto por Meta y no representa una nueva revisión de aprobación.
Evento de llamada de WhatsApp conectada
Evento de llamada de WhatsApp conectada
Ejemplo de carga útil cuando se conecta una llamada de WhatsApp
Evento de llamada de WhatsApp finalizada
Evento de llamada de WhatsApp finalizada
Ejemplo de carga útil cuando finaliza una llamada de WhatsApp
Evento de estado de llamada de WhatsApp actualizado
Evento de estado de llamada de WhatsApp actualizado
Ejemplo de carga útil cuando se actualiza el estado de una llamada de WhatsApp
Event y la referencia interactiva de cargas útiles.
Rotar el secreto del endpoint
Rota un secreto si queda expuesto o como parte de tu política de seguridad:Un endpoint que falla repetidamente al recibir notificaciones puede pasar al estado
pending y dejar de recibir eventos. Monitorea los fallos de webhook y el estado del endpoint.
