WhatsApp

¿Cuál es la diferencia entre whatsapp.failed y whatsapp.rejected?

Un evento whatsapp.rejected significa que Bird detuvo el mensaje antes de cobrarlo; whatsapp.failed registra un fallo durante el envío o la entrega.

Cuando un mensaje termina, inspecciona su evento terminal y su código de error antes de decidir si reintentar o investigar la entrega.

¿Qué significa whatsapp.rejected?

Bird detuvo el mensaje antes del envío y no lo cobró.

Las verificaciones del destinatario y el cobro pueden producir un resultado de rechazo. Usa el código que lo acompaña para elegir la siguiente acción:

CódigoCausaSiguiente acción
undeliverableNo hay dirección de destinatario utilizableCorrige el destinatario
recipient_suppressedEl destinatario está suprimidoRespeta la baja e investiga los registros de consentimiento
price_not_foundBird no puede calcular el precio del envíoContacta a soporte con el identificador de mensaje
insufficient_balanceEl saldo no puede cubrir el envío o no se puede cobrar a la organizaciónResuelve la facturación antes de enviar de nuevo

Un envío sin precio se rechaza en lugar de tratarse como gratuito. Repetir la solicitud sin cambios no proporciona el precio faltante.

La marca de tiempo del rechazo usa la hora de aceptación original. Úsala de forma consistente en los informes para que la demora en la cola no desplace el rechazo a un período de reporte posterior.

¿Qué significa whatsapp.failed?

El mensaje falló durante el envío o la entrega, con su causa registrada en los detalles del error.

Meta puede reportar un fallo a través de un callback de entrega. También puede rechazar la solicitud de envío de Bird antes de aceptar el mensaje para su entrega.

Bird registra internal_error cuando el número de envío no tiene una credencial utilizable o el procesamiento agota sus reintentos. meta_error_code es el código de error registrado por Meta. Este código Bird no incluye ninguno.

El agotamiento de reintentos puede incluir errores de transporte o fallos en servicios anteriores. No concluyas solo a partir de internal_error que Meta nunca recibió una solicitud.

Revisa la descripción y la conexión del número de envío. Proporciona a soporte el identificador de mensaje cuando la causa no quede clara.

Un fallo puede ocurrir después del cobro. Inspecciona el cost del mensaje en lugar de asumir que todo envío fallido fue gratuito.

¿Por qué undeliverable aparece en ambos eventos?

En un rechazo, Bird no pudo dirigir el mensaje al destinatario. En un fallo, es el resultado normalizado de Bird para un rechazo de Meta.

El código de error es más amplio que una afirmación de que el teléfono no puede recibir mensajes. Bird también usa undeliverable cuando un código de Meta no tiene un mapeo más específico.

Lee meta_error_code para el código registrado por Meta y description para la explicación que lo acompaña. Un fallo reportado sin detalles de error igualmente recibe undeliverable.

Otros códigos de fallo normalizados identifican problemas más específicos:

CódigoQué investigar
service_window_expiredSi se envió contenido libre fuera de la ventana de servicio
rate_limitedLos límites de envío o de destinatario de Meta
media_rejectedEl recurso multimedia que Meta rechazó
internal_errorEl fallo de procesamiento o envío registrado por Bird

Conserva los códigos desconocidos en tus registros. El conjunto de códigos puede crecer, así que un valor desconocido no debe invalidar un evento que de otro modo sea utilizable.

¿Cómo debe interpretar mi manejador de eventos el resultado?

Bifurca según el tipo de evento y su código de error juntos.

Un mensaje rechazado no avanza a un evento de envío. Un mensaje fallido necesita sus detalles de error para distinguir un fallo interno de la respuesta de Meta.

Mantén el estado de entrega separado del de interacción. Un evento whatsapp.read registra una lectura sin reemplazar el estado de entrega del mensaje.

Bird emite su propio whatsapp.sent después de que el envío tiene éxito. No crea otro evento a partir del callback de estado de envío separado de Meta.

La revisión de plantillas usa un conjunto diferente de estados. Inspecciona el idioma de la plantilla cuando la aprobación es el problema, en lugar de estos resultados de mensaje.

¿Qué debo hacer antes de otro envío?

Corrige la causa registrada antes de enviar otro mensaje.

Para service_window_expired, usa una plantilla aprobada o espera a que el mensaje del cliente reabra la ventana de servicio.

Para la supresión, respeta la decisión del destinatario. Eliminar una baja ignoraría la preferencia del destinatario y crearía un riesgo de cumplimiento.

Para un problema de facturación o conexión del remitente, resuelve esa condición de cuenta primero. Conserva el identificador de mensaje original para que soporte pueda inspeccionar el intento fallido.

Si el número o la cuenta de Business Account está restringida o suspendida, sigue los pasos de restricciones de cuenta y apelaciones antes de reintentar.

Para un fallo de transporte incierto, investiga antes de crear otro mensaje. Un nuevo envío puede duplicar una solicitud cuyo resultado no se observó.

En resumen

  1. Un rechazo no se cobra.

    Bird detiene el mensaje antes del envío cuando las verificaciones del destinatario o el cobro impiden la entrega.

  2. Un fallo puede provenir de Bird o de Meta.

    Inspecciona el error registrado antes de decidir dónde investigar. internal_error no incluye un código de error de Meta.

  3. Interpreta el evento y el código juntos.

    undeliverable aparece en ambos eventos. Su significado depende de dónde se detuvo el mensaje.

  4. Elige la recuperación a partir de la causa.

    Corrige el problema de destinatario, cuenta, contenido o temporización antes de intentar otro envío. Conserva los códigos desconocidos para investigarlos.

Construye sobre la misma red.

Obtén una clave API de prueba de inmediato. El acceso a producción se desbloquea cuando añades un método de pago y verificas un remitente.

Tu próxima idea.
Lista para conectar.