Thông báo trạng thái và giá cả

Ứ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.

Cập nhật trạng thái

Đố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ênMô tả

deleted

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ủ.

Nội dung tương đương trong ứng dụng WhatsApp

Trong WhatsApp dành cho di động, tin nhắn này được thay thế bằng ghi chú "Tin nhắn này đã bị xóa".

delivered

Thiết bị của người dùng đã nhận được một tin nhắn của doanh nghiệp bạn.

Nội dung tương đương trong ứng dụng WhatsApp

Hai dấu kiểm

failed

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:

Nội dung tương đương trong ứng dụng WhatsApp

Tam giác lỗi màu đỏ

read

Người dùng đã đọc một tin nhắn của doanh nghiệp bạn. read là thông báo chỉ có cho những người dùng đã bật thông báo đã đọc. Đối với những người dùng chưa bật chức năng này, bạn sẽ chỉ nhận được thông báo delivered .

Nội dung tương đương trong ứng dụng WhatsApp

Hai dấu kiểm màu xanh da trời

sent

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 sent , hãy đặt cài đặt sent_status thành true trong cài đặt ứng dụng. Thông báo trạng thái sent bị tắt theo mặc định.

Nội dung tương đương trong ứng dụng WhatsApp

Một dấu kiểm

warning

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 deliveredread 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ộ.

Cập nhật về giá cả

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: conversationpricing. 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:

Ví dụ

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.

Trạng thái: Đã gửi tin nhắn

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"
    }
   }]
}

Trạng thái: Đã phân phối tin nhắn

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"
    }
  }]
}

Trạng thái: Đã đọc tin nhắn

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" 
    }
  }]
}

Trạng thái: Không gửi được tin nhắn

Mã lỗi 470

{
  "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"
  }]
}

Mã lỗi 480

{
  "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.

Trạng thái: Đã xóa tin nhắn

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.

Tất cả các trạng thái tin nhắn có thể có

Hãy xem phần Tổng quan, Tin nhắn để biết thông tin này.

Câu hỏi thường gặp

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:

ScenarioWhen 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.