Thiết lập Webhooks

Đăng ký Webhooks để nhận thông báo về tin nhắn mà doanh nghiệp bạn nhận được và thông tin mới về hồ sơ khách hàng.

Tạo điểm cuối

Trước khi có thể bắt đầu nhận thông báo, bạn sẽ cần tạo một điểm cuối trên máy chủ để nhận thông báo.

Điểm cuối của bạn phải có khả năng xử lý 2 loại yêu cầu HTTPS: Yêu cầu xác minh và Thông báo sự kiện. Vì cả hai yêu cầu này đều sử dụng HTTPS nên máy chủ của bạn phải đặt cấu hình và cài đặt chính xác một chứng chỉ TLS hoặc SSL hợp lệ. Chứng chỉ tự ký không được hỗ trợ.

Tìm hiểu thêm về Yêu cầu xác minh và Thông báo sự kiện

Việc thiết lập Webhooks sẽ không ảnh hưởng đến số điện thoại trên Ứng dụng WhatsApp Business của bạn. Chỉ sau khi chuyển số điện thoại sang Nền tảng WhatsApp Business, bạn mới không dùng được số đó trên Ứng dụng WhatsApp Business nữa.

Đăng ký Webhooks

Để đăng ký Webhooks, bạn sẽ cần lấy ID ứng dụng trên Meta và các quyền truy cập. Để thực hiện việc này, hãy truy cập Bảng điều khiển ứng dụng trên Meta. Tại đây, bạn sẽ:

  1. Tạo một ứng dụng thuộc loại dành cho Doanh nghiệp trong Bảng điều khiển ứng dụng trên Meta
  2. Thêm sản phẩm Webhooks vào ứng dụng của bạn trên Meta trong Bảng điều khiển ứng dụng

    Hiện tại, mỗi Ứng dụng trên Meta chỉ có thể yêu cầu đặt cấu hình một điểm cuối. Nếu cần gửi bản cập nhật webhook đến nhiều điểm cuối, bạn cần có nhiều Ứng dụng trên Meta.

Nếu là Đối tác giải pháp, bạn có thể cần:

  1. Thêm quyền whatsapp_business_messaging vào Bảng điều khiển ứng dụng
  2. Hoàn tất thành công quy trình Xét duyệt ứng dụng của Meta - Bước này sẽ cần nhiều thời gian, nhưng bạn có thể tiếp tục thử nghiệm trong toàn bộ quy trình xét duyệt.

Tìm hiểu về Webhooks

Mỗi khi một sự kiện kích hoạt diễn ra, Nền tảng WhatsApp Business sẽ xem xét sự kiện đó và gửi thông báo đến URL Webhook mà bạn đã chỉ định trước đây. Bạn có thể nhận được 2 loại thông báo:

  • Tin nhắn đã nhận: Thông báo này cho bạn biết thời điểm bạn nhận được tin nhắn. Thông báo này còn được gọi là "thông báo tin nhắn đến" trong toàn bộ tài liệu.
  • Thông báo trạng thái tin nhắn và giá cả: Thông báo này cho bạn biết thời điểm trạng thái tin nhắn thay đổi. Ví dụ: đã đọc hoặc đã gửi tin nhắn. Thông báo này còn được gọi là "thông báo tin nhắn đi" trong toàn bộ tài liệu.

Mọi Webhooks đều có định dạng chung sau:

{
  "object": "whatsapp_business_account",
  "entry": [{
      "id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
      "changes": [{
          "value": {
              "messaging_product": "whatsapp",
              "metadata": {
                  "display_phone_number": "PHONE_NUMBER",
                  "phone_number_id": "PHONE_NUMBER_ID"
              },
              # specific Webhooks payload            
          },
          "field": "messages"
        }]
    }]
}

Hãy xem phần Thành phần để biết thông tin về từng trường.

Nếu nhận một tin nhắn không được hỗ trợ cho API Đám mây, bạn sẽ nhận được webhook tin nhắn không xác định.

Kích thước phần tải dữ liệu

Kích thước phần tải dữ liệu của Webhooks có thể lên đến 3MB.

Điểm cuối ứng dụng mẫu

Tạo một điểm cuối ứng dụng mẫu để thử nghiệm webhook của bạn.

Lỗi gửi webhook

Nếu chúng tôi gửi yêu cầu webhook đến điểm cuối của bạn và máy chủ trả về mã trạng thái HTTP không phải là 200 hoặc nếu không thể gửi webhook vì lý do khác, chúng tôi sẽ tiếp tục gửi yêu cầu với tần suất giảm dần trong tối đa 7 ngày cho đến khi yêu cầu thành công.

Lưu ý rằng trong các lần thử lại, chúng tôi sẽ gửi yêu cầu đến tất cả ứng dụng đã đăng ký webhook (và các trường thích hợp) cho Tài khoản WhatsApp Business. Việc này có thể dẫn đến thông báo webhook trùng lặp.

Địa chỉ IP

Bạn có thể chạy lệnh sau trong cửa sổ dòng lệnh để lấy địa chỉ IP cho máy chủ webhook của chúng tôi:

whois -h whois.radb.net — '-i origin AS32934' | grep ^route | awk '{print $2}' | sort

Chúng tôi thay đổi các địa chỉ IP này theo định kỳ. Vì vậy, nếu bạn đưa máy chủ của chúng tôi vào danh sách cho phép thì đôi khi, bạn nên tạo lại danh sách này và cập nhật danh sách cho phép cho phù hợp.

Bước tiếp theo

Tìm hiểu thêm về thông tin bạn có thể nhận được trong thông báo Webhooks.