Il client dell'API di WhatsApp Business invia notifiche sullo status
del messaggio tra te e i tuoi utenti. Queste notifiche vengono inviate tramite l'oggetto statuses
.
Per ogni messaggio inviato dalla tua azienda, riceverai una notifica relativa allo stato corrispondente. Nella tabella sotto, clicca sulla freccia nella colonna di sinistra per l'equivalente nell'app WhatsApp di ogni stato, se disponibile.
Nome | Descrizione |
---|---|
| L'utente ha eliminato un messaggio che aveva precedentemente inviato. Dopo aver ricevuto questa notifica, devi assicurarti che il messaggio venga eliminato dal tuo sistema nel caso in cui sia stato scaricato dal server. |
| Un messaggio inviato dalla tua azienda è stato consegnato al dispositivo dell'utente. |
| Non è stato possibile inviare un messaggio mandato dalla tua azienda. Il motivo dell'errore sarà incluso nella callback. Controlla la documentazione sui messaggi di errore per aiuto con il debug:
|
| Un messaggio inviato dalla tua azienda è stato letto dall'utente. |
| Un messaggio inviato dalla tua azienda è in transito nei nostri sistemi. Per gli utenti dell'API On-Premises: per ricevere notifiche per messaggi |
| Un messaggio inviato dalla tua azienda contiene un articolo di un catalogo che non è disponibile o che non esiste. |
L'ordine di queste notifiche nell'app potrebbe non riflettere gli orari effettivi dello stato del messaggio. Visualizza la marca temporale per determinare l'orario, se necessario.
Perché uno stato sia read
, deve essere stato delivered
. In alcuni scenari, ad esempio quando un utente si trova nella schermata della chat e arriva un messaggio, il messaggio è delivered
e read
quasi contemporaneamente. In questo o in altri scenari simili, la notifica delivered
non verrà inviata poiché è implicito che se un messaggio è stato letto significa che è stato consegnato. Questo comportamento viene applicato per questioni di ottimizzazione interna.
A partire dal 1° febbraio 2022, l'oggetto statuses
nelle notifiche in uscita include due nuovi oggetti nidificati: conversation
e pricing
. I componenti degli oggetti conversation e pricing variano a seconda della modalità di inizio della conversazione. Le conversazioni possono essere avviate dall'utente, dall'azienda o da un punto di accesso gratuito. Scopri altre informazioni di seguito:
Nei seguenti esempi, recipient_id
potrebbe invece essere un campo group_id
. Dipende dal destinatario del messaggio, se si tratta di un individuo o un gruppo.
Il seguente webhook viene ricevuto quando un'azienda invia un messaggio come parte di una conversazione avviata dall'utente (se la conversazione non è iniziata in un punto di accesso 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" } }] }
Il seguente webhook viene ricevuto quando un'azienda invia un messaggio come parte di una conversazione avviata dall'utente per un messaggio multimediale (se la conversazione non è iniziata in un punto di accesso 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" } }] }
Il seguente webhook viene ricevuto quando un'azienda invia un messaggio come parte di una conversazione avviata dall'azienda:
{ "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" } }] }
Il seguente webhook viene ricevuto quando un'azienda invia un messaggio in risposta a una conversazione avviata dall'utente originata da punti di accesso gratuiti:
{ "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" } }] }
Il seguente webhook viene ricevuto quando un messaggio inviato da un'azienda come parte di una conversazione avviata dall'utente viene consegnato (se la conversazione non è iniziata in un punto di accesso 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" } }] }
Il seguente webhook viene ricevuto quando un messaggio inviato da un'azienda come parte di una conversazione avviata dall'azienda viene consegnato:
{ "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" } }] }
Il seguente webhook viene ricevuto quando un messaggio inviato da un'azienda come parte di una conversazione avviata dall'utente e originata da un punto di accesso gratuito viene consegnato:
{ "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" } }] }
Callback standard per un messaggio letto:
{ "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 sottosezione conversation non è inclusa nella callback se un messaggio non è stato inviato. In questo caso, non è implicata alcuna attivazione di billing o conversation.
Callback standard per un messaggio eliminato:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "deleted", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" } }] }
La sottosezione conversation non è inclusa nella callback se un messaggio è stato eliminato. In questo caso, non è prevista alcuna attivazione di billing o conversation.
Per maggiori informazioni, consulta Panoramica, Messaggi.
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. |