El cliente de la API de WhatsApp Business envía notificaciones sobre el parámetro status
del mensaje que intercambias con los usuarios. Estas notificaciones se envían mediante el objeto statuses
.
Para cada mensaje que envíe tu empresa, recibirás una notificación acerca del estado del mensaje. En la tabla siguiente, haz clic en la flecha de la columna izquierda de la aplicación de WhatsApp equivalente a cada estado, si está disponible.
Nombre | Descripción |
---|---|
| El usuario ha eliminado un mensaje que ha enviado el usuario. Tras recibir esta notificación, deberías asegurarte de que el mensaje se ha eliminado del sistema si se descargó del servidor. |
| Un mensaje que ha enviado tu empresa se ha entregado al dispositivo del usuario. |
| Un mensaje que ha enviado tu empresa no se ha podido entregar. El motivo del error se incluirá en la devolución de llamada. Consulta la documentación sobre mensajes de error con el fin de obtener ayudar para depurar:
|
| El usuario ha leído un mensaje que ha enviado tu empresa. |
| Un mensaje que ha enviado tu empresa se encuentra en tránsito en nuestros sistemas. En el caso de los usuarios de la API local: para recibir notificaciones por los mensajes |
| Un mensaje que ha enviado tu empresa contiene un artículo de un catálogo que no está disponible o no existe. |
El orden de las notificaciones en la aplicación podría no reflejar el momento justo de cada estado del mensaje. Consulta la marca de tiempo para determinarlo, si es necesario.
Para que el estado sea read
, antes tiene que ser delivered
. En algunas situaciones, como, por ejemplo, cuando un usuario se encuentra en la pantalla del chat y llega un mensaje, el mensaje pasa a delivered
y read
casi simultáneamente. En estas situaciones u otras parecidas, la notificación delivered
no se enviará, dado que se sobreentiende que el mensaje se ha entregado si se ha leído. El motivo de este comportamiento es la optimización interna.
Desde el 1 de febrero de 2022, en el objeto statuses
de las notificaciones salientes se incluyen dos nuevos objetos anidados: conversation
y pricing
. Los componentes de estos objetos varían en función de dónde se inicia la conversación. Los usuarios y las empresas pueden iniciar conversaciones, pero también se pueden iniciar desde un punto de entrada gratuito. Puedes obtener más información a continuación:
En los ejemplos siguientes, el valor de recipient_id
podría ser un campo group_id
. Depende de si el mensaje se envía a una persona o a un grupo.
El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje como parte de una conversación iniciada por el usuario (si dicha conversación no se originó en 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" } }] }
El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje como parte de una conversación iniciada por el usuario en el caso de un mensaje multimedia (si dicha conversación no se originó 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" } }] }
El webhook que se incluye a continuación se recibe 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" } }] }
El webhook que se incluye a continuación se recibe cuando una empresa envía un mensaje en respuesta a una conversación iniciada por el usuario que se origina en 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": "referral_conversion", } }, "pricing": { "pricing_model": "CBP", "billable": false, "category": "referral_conversion" } }] }
El webhook que se incluye a continuación se recibe cuando se entrega un mensaje de una empresa y dicho mensaje forma parte de una conversación iniciada por el usuario (si dicha conversación no se originó en un punto de acceso 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" } }] }
El webhook que se incluye a continuación se recibe cuando se entrega un mensaje de una empresa y dicho mensaje forma 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" } }] }
El webhook que se incluye a continuación se recibe cuando se entrega un mensaje de una empresa y dicho mensaje forma parte de una conversación iniciada por el usuario que se origina en un punto de acceso 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" }] }
La subsección de la conversación no se incluye en la devolución de llamada si se produce un error en el mensaje. En este caso, no se produce la activación de la facturación ni de la conversación.
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" } }] }
La subsección de la conversación no se incluye en la devolución de llamada si se ha eliminado un mensaje. En este caso, no se produce la activación de la facturación ni de la conversación.
Consulta Información general, Mensajes para obtener información al respecto.
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. |