Saltar al contenido principal
Para consultar el catálogo exhaustivo basado en el esquema, consulta todos los ejemplos.

Qué es

Gestiona eventos de revisión, actualización y eliminación de cuentas comerciales, además de eliminaciones de números de teléfono, revisiones del nombre para mostrar, calidad y actualizaciones de Business Username. Enruta cada carga útil según su type exacto: los eventos de cuenta usan whatsappBusinessAccount, mientras que los eventos de número de teléfono usan whatsappPhoneNumber.

Antes de comenzar

  • Crea un endpoint HTTPS público en tu aplicación.
  • Configura un endpoint de Webhook de YCloud para los tipos de eventos que necesites.
  • Guarda el secreto de firma del endpoint de forma segura.
  • Haz que el procesamiento de eventos sea idempotente.

Cómo funciona

YCloud envía una solicitud HTTP POST cuando ocurre el evento. Verifica la firma, registra el evento de forma duradera, devuelve una respuesta 2xx y procesa las tareas lentas de forma asíncrona.

Solicitud

Los escenarios a continuación muestran solicitudes entregadas a tu URL de Webhook. Trata el id del evento como el identificador de entrega y usa type para enrutar la carga útil.

Respuesta

Devuelve un estado 2xx tras aceptar el evento.
Para la configuración del endpoint, la validación de la firma y el comportamiento de reintentos, consulta Configurar webhooks.

Eliminación de la cuenta

Usa whatsapp.business_account.deleted para gestionar un evento de eliminación de una cuenta de WhatsApp Business. Lee whatsappBusinessAccount.id para identificar la WABA afectada.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Los campos de eliminación aparecen directamente dentro de whatsappBusinessAccount cuando están disponibles. Los valores conocidos de removedReason incluyen: Conserva los valores de motivo e iniciador desconocidos. Deduplica las entregas por el id del evento y tolera los campos de eliminación omitidos.

Authentication-International Rate Eligibility

A partir del 1 de junio de 2024, introduciremos una nueva tarifa de autenticación internacional. Esta tarifa se aplicará en los siguientes países:
  • 1 de junio de 2024 – Indonesia (código de llamada de país +62, código de país ID)
  • 1 de julio de 2024 – India (código de llamada de país +91, código de país IN)
Para más información, consulta Authentication-International Rate Eligibility . Se activará un Webhook whatsapp.business_account.updated si tu empresa se considera elegible para tarifas internacionales. El Webhook incluirá las horas de inicio para cada país que tenga una tarifa de autenticación internacional.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.
Si un mensaje se factura a la tarifa de autenticación internacional, el campo whatsappMessage.pricingCategory en los webhooks whatsapp.message.updated se establecerá en authentication_international. Aquí tienes un ejemplo:

Explicación

Enruta el evento mediante type, deduplícalo mediante id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.

Primary Business Location Update

Tu ubicación comercial principal es el país donde tiene su sede tu empresa. Aparecerá en el Business Manager bajo el campo Primary Business Location a partir del 1 de mayo de 2024. Si Meta puede determinar el país donde tiene su sede tu empresa, activaremos un Webhook whatsapp.business_account.updated con el código de dos dígitos del país. Aquí tienes un ejemplo:

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Enruta el evento mediante type, deduplícalo mediante id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.

Actualización del límite de registro de números de teléfono

Meta envía una actualización de la capacidad comercial de una WABA cuando cambia el límite de registro de números de teléfono de la WABA o del Business Portfolio correspondiente. YCloud lo entrega como whatsapp.business_account.updated con updateEvent=BUSINESS_CAPABILITY_UPDATE. El webhook es a nivel de WABA: whatsappBusinessAccount.id es el ID de WABA de la entrada del webhook de Meta. Meta actualmente informa maxPhoneNumbersPerBusiness y maxPhoneNumbersPerWaba en actualizaciones independientes. No los trates como mutuamente excluyentes: procesa cada campo por separado y acepta ambos si una actualización futura los incluye juntos. Un valor de 0 es válido. Aquí tienes un ejemplo de una actualización de límite de números de teléfono de WABA:

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Enruta el evento mediante type, deduplícalo mediante id y actualiza únicamente el campo de límite incluido en la carga útil.

Infracción de la cuenta

Cuando recibas un evento whatsapp.business_account.updated con whatsappBusinessAccount.updateEvent configurado como ACCOUNT_VIOLATION, inspecciona whatsappBusinessAccount.violationType para identificar la infracción de política notificada. Consulta Policy enforcement violations de Meta para conocer los tipos y descripciones de las infracciones. Meta puede actualizar esta lista con el tiempo. Aquí tienes un ejemplo:

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Enruta el evento mediante type, deduplícalo mediante id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.

Restricción de la cuenta

Si las cuentas comerciales infringen repetidamente las Condiciones del servicio de WhatsApp Business o categorías de políticas de alto riesgo, como el envío de spam, contenido para adultos, venta de alcohol y tabaco, drogas, juegos de azar y suplementos no seguros, pueden empezar a sufrir restricciones de mensajería que aumentan gradualmente de duración. Para Utility Direct Send, consulta Direct Send notifications para ver una carga útil de ACCOUNT_RESTRICTION en YCloud. Consulta Webhook for account restriction de Meta para conocer los tipos de infracciones y los detalles de las restricciones específicos de Direct Send. Aquí tienes un ejemplo:

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Enruta el evento mediante type, deduplícalo mediante id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.

Restricción de Utility Direct Send

Recibes whatsapp.business_account.updated cuando Meta restringe Utility Direct Send tras un uso indebido reiterado de la categoría. Este ejemplo muestra una restricción de siete días.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Utiliza whatsappBusinessAccount.id para identificar la WABA afectada y pausar su flujo de trabajo de Utility Direct Send. Lee violationType para conocer el motivo, restrictions[].restrictionType para la funcionalidad afectada y restrictions[].expiration para la fecha de vencimiento si se proporciona. La revisión correcta de una plantilla no levanta de manera automática una restricción a nivel de cuenta. Consulta Direct Send restrictions and notifications.

Cuenta desactivada

Las cuentas de WhatsApp Business pueden desactivarse si la empresa no realiza cambios tras múltiples advertencias y bloqueos o límites de funciones. Aquí tienes un ejemplo:

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Enruta el evento mediante type, deduplícalo mediante id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.

Restablecimiento de la cuenta

Puedes apelar la decisión de bloqueo de la cuenta de WhatsApp Business para restablecerla. Una vez aprobada, el estado de revisión de la cuenta cambia a APPROVED. Aquí tienes un ejemplo:

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Enruta el evento mediante type, deduplícalo mediante id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.

Revisión de la cuenta comercial

Utiliza whatsapp.business_account.reviewed cuando se haya revisado una cuenta de WhatsApp Business.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Identifica la WABA con id. Lee decision para conocer la decisión de revisión (APPROVED o REJECTED) y accountReviewStatus para el estado de revisión de la cuenta si se proporciona. No enrutes este evento como whatsapp.business_account.updated.

Eliminación de número de teléfono

Utiliza whatsapp.phone_number.deleted cuando se elimine un número de teléfono comercial de WhatsApp.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Utiliza whatsappPhoneNumber.id para identificar el número de teléfono eliminado y wabaId para asociarlo con su cuenta. Este es un evento de número de teléfono; no lo trates como la eliminación de toda la WABA.

Revisión del nombre visible del número de teléfono

Utiliza whatsapp.phone_number.name_updated cuando se apruebe o rechace el nombre visible de un número de teléfono comercial.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Lee decision y los campos de estado del nombre proporcionados. newNameStatus describe la nueva solicitud de nombre visible, requestedVerifiedName identifica el último nombre solicitado y rejectionReason describe un rechazo cuando esté presente. La revisión del nombre visible es independiente de una actualización del nombre de usuario de la empresa.

Actualización de la calidad del número de teléfono

Utiliza whatsapp.phone_number.quality_updated para cambios en el estado relacionado con la calidad de un número de teléfono comercial.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

Lee qualityRating (GREEN, YELLOW o RED) y qualityUpdateEvent para entender la actualización. messagingLimit es el nivel del número de teléfono; whatsappBusinessManagerMessagingLimit es el límite de la cartera comercial propietaria. Mantén estos campos separados y actualiza únicamente los valores proporcionados en el evento.

Business Username activado

Usa whatsapp.phone_number.business_username_updated para sincronizar el Business Username de un número de teléfono.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

businessUsername es el nombre de usuario activo sin un @ inicial. Lee businessUsernameStatus y businessUsernameUpdatedAt junto con el id del número de teléfono. No confundas este valor con el nombre para mostrar verificado.

Solicitud de Business Username reservada

Un Business Username activo puede seguir utilizándose mientras se reserva una solicitud de reemplazo.

Solicitud

Respuesta

Confirma la entrega tras aceptar el evento de forma duradera.

Explicación

En este ejemplo, businessUsername permanece como acme.support mientras que requestedBusinessUsername es acme.help. El estado reserved describe la solicitud pendiente, no la activación del reemplazo. Acepta el valor heredado pending_review al leer eventos anteriores; las nuevas operaciones de escritura usan reserved.