Ứng dụng API WhatsApp Business sẽ gửi thông báo về status
của tin nhắn giữa bạn và người dùng. Hệ thống sẽ gửi những thông báo này qua đối tượng statuses
.
Đối với mỗi tin nhắn mà doanh nghiệp bạn gửi, bạn sẽ nhận được thông báo về trạng thái của tin nhắn đó. Trong bảng bên dưới, hãy nhấp vào mũi tên ở cột bên trái để biết nội dung tương đương trong ứng dụng WhatsApp cho mỗi trạng thái, nếu có.
Tên | Mô tả |
---|---|
| Người dùng đã xóa một tin nhắn họ gửi. Khi nhận được thông báo này, bạn phải đảm bảo rằng tin nhắn đã bị xóa khỏi hệ thống của mình nếu đã tải tin nhắn đó xuống từ máy chủ. |
| Thiết bị của người dùng đã nhận được một tin nhắn của doanh nghiệp bạn. |
| Hệ thống không gửi được một tin nhắn của doanh nghiệp bạn. Lý do không gửi được sẽ có trong lệnh gọi lại. Hãy xem tài liệu về thông báo lỗi để được trợ giúp gỡ lỗi:
|
| Người dùng đã đọc một tin nhắn của doanh nghiệp bạn. |
| Hệ thống của chúng tôi đang chuyển tiếp một tin nhắn của doanh nghiệp bạn. Đối với người dùng API Tại chỗ: Để nhận thông báo cho tin nhắn |
| Tin nhắn của doanh nghiệp bạn chứa một mục trong danh mục không có sẵn hoặc không tồn tại. |
Thứ tự các thông báo này trong ứng dụng của bạn có thể không phản ánh thời gian thực tế của trạng thái tin nhắn. Hãy xem nhãn thời gian để xác định thời gian, nếu cần.
Để có trạng thái read
, tin nhắn phải ở trạng thái delivered
trước đã. Trong một số trường hợp, chẳng hạn như khi người dùng đang ở màn hình chat và có tin nhắn đến, tin nhắn sẽ có trạng thái delivered
và read
gần như đồng thời. Trong trường hợp này hoặc các trường hợp tương tự khác, hệ thống sẽ không gửi trả lại thông báo delivered
vì nếu đã đọc thì tức là tin nhắn đã được phân phối. Lý do cho hành vi này là nhằm tối ưu hóa nội bộ.
Kể từ ngày 01/02/2022, đối tượng statuses
trong thông báo tin nhắn đi có 2 đối tượng lồng nhau mới: conversation
và pricing
. Thành phần của đối tượng cuộc trò chuyện và giá cả sẽ thay đổi tùy thuộc vào điểm bắt đầu của cuộc trò chuyện. Cuộc trò chuyện có thể do người dùng bắt đầu, do doanh nghiệp bắt đầu hoặc có thể bắt đầu từ một điểm bắt đầu miễn phí. Xem thêm thông tin bên dưới:
Trong ví dụ sau, recipient_id
có thể thay bằng trường group_id
. Điều này tùy vào việc tin nhắn được gửi cho cá nhân hay cho nhóm.
Dưới đây là webhook bạn sẽ nhận được khi doanh nghiệp gửi tin nhắn trong cuộc trò chuyện do người dùng bắt đầu (nếu cuộc trò chuyện đó không bắt nguồn từ một điểm bắt đầu miễn phí):
{ "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" } }] }
Dưới đây là webhook bạn sẽ nhận được khi doanh nghiệp gửi tin nhắn trong cuộc trò chuyện do người dùng bắt đầu đối với tin nhắn có file phương tiện (nếu cuộc trò chuyện đó không bắt nguồn từ một điểm bắt đầu miễn phí):
{ "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" } }] }
Dưới đây là webhook bạn sẽ nhận được khi doanh nghiệp gửi tin nhắn trong cuộc trò chuyện do doanh nghiệp bắt đầu:
{ "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" } }] }
Dưới đây là webhook bạn sẽ nhận được khi doanh nghiệp gửi tin nhắn để trả lời cuộc trò chuyện do người dùng bắt đầu bắt nguồn từ một điểm bắt đầu miễn phí:
{ "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" } }] }
Dưới đây là webhook bạn sẽ nhận được khi tin nhắn của doanh nghiệp được phân phối và tin nhắn đó nằm trong cuộc trò chuyện do người dùng bắt đầu (nếu cuộc trò chuyện đó không bắt nguồn từ một điểm bắt đầu miễn phí):
{ "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" } }] }
Dưới đây là webhook bạn sẽ nhận được khi tin nhắn của doanh nghiệp được phân phối và tin nhắn đó nằm trong cuộc trò chuyện do doanh nghiệp bắt đầu:
{ "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" } }] }
Dưới đây là webhook bạn sẽ nhận được khi tin nhắn của doanh nghiệp được phân phối và tin nhắn đó nằm trong cuộc trò chuyện do người dùng bắt đầu bắt nguồn từ một điểm bắt đầu miễn phí:
{ "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" } }] }
Lệnh gọi lại tiêu chuẩn cho tin nhắn đã đọc:
{ "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" }] }
Nếu không gửi được tin nhắn, lệnh gọi lại sẽ không có tiểu mục của cuộc trò chuyện. Trong trường hợp này, hoạt động kích hoạt cuộc trò chuyện hoặc quy trình lập hóa đơn sẽ không diễn ra.
Lệnh gọi lại tiêu chuẩn cho tin nhắn đã xóa:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "deleted", "timestamp": "TIMESTAMP", "type": "message", "message": { "recipient_id": "WHATSAPP_ID" } }] }
Nếu tin nhắn đã bị xóa, lệnh gọi lại sẽ không có tiểu mục của cuộc trò chuyện. Trong trường hợp này, hoạt động kích hoạt cuộc trò chuyện hoặc quy trình lập hóa đơn sẽ không diễn ra.
Hãy xem phần Tổng quan, Tin nhắn để biết thông tin này.
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. |