Sign inGet Started

Tipos de mensaje WhatsApp no compatibles

Algunos mensajes funcionan en la app de WhatsApp pero no se pueden leer a través de la API. Bird los registra como mensajes recibidos con un campo unsupported. Puedes ver quién envió el mensaje y cuándo, pero no puedes leer su contenido en el dashboard ni a través de la API. Pide al remitente que reenvíe la información como texto u otro tipo de mensaje compatible.

Por qué un mensaje recibido puede tener un error

Meta puede incluir el error 131051 en una notificación de mensaje entrante cuando WhatsApp Cloud API no admite ese contenido. Una función puede funcionar en la app de WhatsApp y aun así no estar disponible a través de Cloud API.

Bird registra esa notificación con direction: inbound y status: received. El campo last_error del mensaje puede contener meta_error_code: "131051", aunque Bird no haya intentado enviarlo. En este caso, el error describe el contenido entrante no disponible. No indica un envío saliente fallido.

El campo normalizado last_error.code puede tener el valor undeliverable en este registro recibido. Comprueba direction, status y last_error.meta_error_code juntos antes de tratar un registro como un fallo de entrega.

Meta también usa 131060 para un mensaje que no está disponible en ese momento. Esto puede ocurrir cuando alguien envía un primer mensaje a una empresa usando un número de app WhatsApp Business conectado. Tiene un significado distinto al del error de contenido no compatible 131051. Consulta la referencia de mensajes no compatibles de Meta para estas notificaciones.

Lee el tipo de mensaje

El campo unsupported.type identifica el contenido con tanta precisión como la notificación lo permite:

  • Cuando Meta proporciona unsupported.type, Bird conserva su valor, como poll_creation, pin o edit.
  • Cuando Meta omite unsupported.type, Bird mantiene el tipo de nivel superior del mensaje en ese campo. Un valor como unsupported o unknown no identifica la acción que realizó el remitente.
  • Cuando Meta proporciona contenido que el API de Bird no modela, Bird también registra su tipo aquí, como order o system.

El nombre del tipo no incluye el contenido faltante. Por ejemplo, poll_creation no te da la pregunta ni las opciones, y edit no te da el texto de reemplazo. Conserva los valores de tipo no reconocidos al almacenar mensajes para que tu integración pueda aceptar tipos nuevos.

Bird admite imágenes, respuestas de botón, respuestas de lista y reacciones. Una notificación no admitida con uno de esos nombres describe esa notificación en particular; no significa que toda la funcionalidad no sea admitida. Consulta recibir imágenes, respuestas interactivas y webhooks de reacciones.

Gestiona el webhook recibido

Un mensaje no admitido emite whatsapp.received con data.unsupported.type. El webhook recibido no incluye el last_error del registro del mensaje; recupera el mensaje a través de API cuando necesites ese diagnóstico.

Gestiona unsupported explícitamente antes de procesar el contenido. Muestra que el contenido no está disponible, almacena el tipo y confirma el webhook con una respuesta 2xx una vez que lo hayas gestionado. Reintentar la misma notificación no recupera el contenido faltante. Consulta entrega de webhooks para el comportamiento de confirmación y reintento.

El registro permanece visible en el registro de WhatsApp. Bird lo gestiona como un mensaje entrante para la ventana de servicio al cliente.

Ejemplos para probar

Estos son ejemplos de valores de unsupported.type. Si tu app de WhatsApp ofrece la acción correspondiente en la conversación que estás probando, puedes intentarla e inspeccionar el registro resultante:

Mensaje o acciónunsupported.type
Crear una encuestapoll_creation
Votar en una encuestapoll_update
Fijar un mensajepin
Editar un mensaje enviadoedit
Conservar un mensaje efímero en el chatkeep_in_chat
Enviar una invitación a un grupogroup_invite
Mensaje no identificadounknown

La disponibilidad depende de la app, la conversación y la cuenta. Puedes recibir un tipo genérico o ninguna notificación de mensaje entrante para una acción. Compara el remitente, la marca de tiempo y unsupported.type con la acción que realizaste. Si el tipo es genérico, no puedes identificar la acción solo a partir de ese registro.

Próximos pasos