El cliente de la API de WhatsApp Business envía notificaciones sobre el status
del mensaje entre tú y tus usuarios. Estas notificaciones se envían mediante el objeto statuses
.
Recibirás una notificación sobre el estado de cada mensaje que envíe tu empresa. En la siguiente tabla, haz clic en la flecha de la columna izquierda a fin de conocer el equivalente de cada estado en la app de WhatsApp, si es que lo hay.
Nombre | Descripción |
---|---|
| El usuario eliminó un mensaje que envió. Cuando recibas esta notificación, deberás eliminar el mensaje del sistema si se descargó previamente desde el servidor. |
| El dispositivo del usuario recibió el mensaje enviado por tu empresa. |
| No se pudo enviar el mensaje de tu empresa. Se incluirá el motivo del error en la devolución de llamada. Consulta la documentación sobre mensajes de error para obtener ayuda con la depuración:
|
| El usuario leyó un mensaje que envió tu empresa. Las notificaciones |
| Un mensaje enviado por tu empresa se encuentra en tránsito dentro de nuestros sistemas. Usuarios de la API de instalaciones locales: para recibir notificaciones de mensajes |
| Un mensaje enviado por tu empresa contiene un artículo de un catálogo que no está disponible o no existe. |
El orden de estas notificaciones en tu aplicación puede no reflejar el tiempo real del estado del mensaje. En caso de ser necesario, consulta la marca de tiempo a fin de determinar la hora.
Para que el estado sea read
, se debe haber entregado el mensaje (delivered
). En algunas situaciones, como cuando un usuario está en la pantalla de chat y llega un mensaje, el mensaje se entrega (delivered
) y se lee (read
) casi simultáneamente. En esta u otras situaciones similares, la notificación delivered
no se devuelve, ya que se entiende que un mensaje se entregó si se leyó. La razón de este comportamiento es la optimización interna.
A partir del 1 de febrero de 2022, el objeto statuses
de las notificaciones salientes incluye dos nuevos objetos anidados: conversation
y pricing
. Los componentes de los objetos "conversation" y "pricing" varían según dónde se inició la conversación. Las conversaciones pueden iniciarse por solicitud del usuario o de la empresa o desde un punto de entrada gratuito. Obtén más información a continuación:
En los siguientes ejemplos, el recipient_id
en su lugar puede ser un campo group_id
. Esto depende de si el mensaje se envía a un individuo o a un grupo.
Se recibe el siguiente webhook cuando una empresa envía un mensaje como parte de una conversación iniciada por el usuario (siempre que esa conversación no se haya originado desde un punto de acceso gratuito):
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id":"WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "user_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "user_initiated" } }] }
Se recibe el siguiente webhook cuando una empresa envía un mensaje como parte de una conversación iniciada por el usuario en un mensaje multimedia (siempre que esa conversación no se haya originado en un punto de acceso gratuito):
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "message": { "media_id": "98d14c8e-0310-4061-8f99-2d148274c286", "recipient_id":"WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "user_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "user_initiated" } }] }
Se recibe el siguiente webhook cuando una empresa envía un mensaje como parte de una conversación iniciada por la empresa:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id":"WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "business_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "business_initiated" } }] }
Se recibe el siguiente webhook cuando una empresa envía un mensaje como respuesta a una conversación iniciada por el usuario que, a su vez, se haya originado desde puntos de entrada gratuitos:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id":"WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "referral_conversion", } }, "pricing": { "pricing_model": "CBP", "billable": false, "category": "referral_conversion" } }] }
Se recibe el siguiente webhook cuando se entrega el mensaje de una empresa y dicho mensaje es parte de una conversación iniciada por el usuario (siempre que esa conversación no se haya originado desde un punto de entrada gratuito):
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "delivered", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id":"WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "origin": { "type": "user_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "user_initiated" } }] }
Se recibe el siguiente webhook cuando se entrega el mensaje de una empresa y dicho mensaje es parte de una conversación iniciada por la empresa:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "delivered", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "origin": { "type": "business_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "business_initiated" } }] }
Se recibe el siguiente webhook cuando se entrega el mensaje de una empresa y dicho mensaje es parte de una conversación iniciada por el usuario, que se haya originado desde un punto de entrada gratuito:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "delivered", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" }, "conversation": { "id": "CONVERSATION_ID", "origin": { "type": "referral_conversion", } }, "pricing": { "pricing_model": "CBP", "billable": false, "category": "referral_conversion" } }] }
Devolución de llamada estándar para un mensaje leído:
{ "statuses":[{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "read", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" } }] }
{ "statuses": [{ "errors": [{ "code": 470, "title": "Failed to send message because you are outside the support window for freeform messages to this user. Please use a valid HSM notification or reconsider." }], "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "failed", "timestamp": "TIMESTAMP" }] }
{ "statuses": [{ "errors": [{ "code": 480, "title": "Failed to send message since we detect an identity change of the contact" }], "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "failed", "timestamp": "TIMESTAMP" }] }
No se incluye la subsección de la conversación en la devolución de llamada si no se envió un mensaje. No se ven afectadas ni la activación de la conversación ni de la facturación en este caso.
Devolución de llamada estándar para un mensaje eliminado:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "deleted", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" } }] }
No se incluye la subsección de la conversación en la devolución de llamada si se eliminó un mensaje. No se ve afectada la activación de la conversación ni de la facturación en este caso.
Consulta Información general, Mensajes para obtener esta información.
Yes, there is a specific scenario where you can get pricing information on your webhook alert for read messages. For each sent message, there can be 3 scenarios:
Scenario | When it Happens |
---|---|
You get a webhook alert when the message is delivered (including pricing information) and another webhook alert when the message is read (not including pricing information). | This is the most common scenario. |
You get a webhook alert when the message is delivered (including pricing information). You do not get a webhook alert that the message has been read. | Common when a customer has turned off the feature that lets people know they have read a message. |
You get a webhook alert when the message is read (including pricing information). You do not get a webhook alert that the message has been delivered. | Only triggered when the user is already reading the thread with the business when the message comes in. |