Người liên hệ

/v1/contacts

Hãy dùng nút contacts để quản lý người dùng WhatsApp trong cơ sở dữ liệu của bạn bằng cách xác thực người dùng trước khi gửi tin nhắn và xác minh danh tính của người dùng bằng hash danh tính.

Thông qua nút contacts, bạn có thể:

  • Xác minh rằng số điện thoại trong cơ sở dữ liệu của bạn thuộc về một tài khoản WhatsApp hợp lệ. Bạn phải đảm bảo rằng statusvalid thì mới nhắn tin được cho người dùng.
  • Lấy ID WhatsApp của một số điện thoại. Bạn cần có ID WhatsApp để gửi tin nhắn và thông báo cho người dùng.

Kể từ v2.39.1, bạn có thể dùng trực tiếp nút messages với số điện thoại mà không cần dịch số điện thoại thành ID WhatsApp trước thông qua nút contacts.

Kể từ v2.43, chúng tôi sẽ dùng lại nút contacts để không cung cấp thông tin trạng thái về số điện thoại nữa. Dù người dùng có sử dụng WhatsApp hay không, hệ thống sẽ luôn trả về giá trị valid cho status trong phản hồi và một wa_id.

Trước khi bạn bắt đầu

Bạn phải hiển thị tùy chọn để khách hàng chọn nhận tin nhắn WhatsApp từ doanh nghiệp của bạn. Quy trình chọn này do doanh nghiệp của bạn duy trì. Sau khi khách hàng chọn nhận tin nhắn, hãy dùng nút contacts để xác thực số điện thoại đã đăng ký. Hãy xem bài viết Tìm hiểu cách yêu cầu nhận tin nhắn WhatsApp để biết thêm thông tin.

Các giới hạn

  • Sử dụng điểm cuối này để xác minh rằng số điện thoại trong cơ sở dữ liệu của doanh nghiệp thuộc về một tài khoản WhatsApp hợp lệ
  • Số lệnh gọi không được vượt quá số tin nhắn mà số điện thoại đó đang gửi

Thực thi

Nếu doanh nghiệp lạm dụng điểm cuối này, chúng tôi sẽ thực hiện các hành động sau:

  • Tất cả quản trị viên có tên trong Trình quản lý kinh doanh đều sẽ nhận được cảnh báo lần đầu qua email nếu chúng tôi nghi ngờ có hành vi lạm dụng
  • Doanh nghiệp sẽ phải điều chỉnh hành vi của mình trong vòng 7 ngày kể từ khi nhận được cảnh báo này
  • Nếu số lệnh gọi vẫn chưa được điều chỉnh sau 7 ngày, số điện thoại đó sẽ bị vô hiệu hóa vĩnh viễn

Đề xuất

Bạn nên kiểm tra người liên hệ trước khi gửi tin nhắn. Tuy nhiên, bạn không cần kiểm tra người liên hệ khi trả lời tin nhắn khách hàng gửi đến vì bạn có thể trả lời ngay bằng wa_id được cung cấp. Sẽ không có phí phát sinh vì kết quả được lưu vào bộ nhớ đệm.

Tạo

Trước khi gửi tin nhắn cho người dùng đã chọn nhận tin nhắn, hãy gửi yêu cầu POST đến điểm cuối /v1/contacts để tạo yêu cầu xác thực người dùng tài khoản WhatsApp. Trong lệnh gọi của bạn, hãy thêm danh sách các số điện thoại bạn muốn xác thực.

Ví dụ

POST /v1/contacts
{
  "blocking": "wait" | "no_wait",
  "contacts": [
  	"16315551000",
  	"+1 631 555 1001",
  	"6315551002",
  	"+1 (631) 555-1004",
  	"1-631-555-1005"
  ],
  "force_check": false | true
}

Bạn sẽ nhận được phản hồi cho biết status hiện tại của các số điện thoại đã yêu cầu cũng như ID WhatsApp của các số điện thoại đó (wa_id):

{
  "contacts": [ {
    "wa_id": "16315551000",
    "input": "16315551000",
    "status": "valid"
  },
  {
    "wa_id": "16315551001",
    "input": "+1 631 555 1001",
    "status": "processing" # Only applicable when request is non-blocking
  },
  {
    "input": "6315551002",
    "status": "invalid"
  },
  {
    "input": "+163155588",
    "status": "failed"
  }
}

Hãy lưu ID WhatsApp của những số điện thoại trả về statusvalid. Người dùng hợp lệ là những người có tài khoản WhatsApp. Hãy sử dụng ID WhatsApp này để gửi tin nhắn và thông báo.

Thường xuyên lặp lại các bước này để quản lý danh sách người dùng hợp lệ của bạn. Kết quả sẽ được lưu vào bộ nhớ đệm trong cơ sở dữ liệu của ứng dụng API WhatsApp Business Tại chỗ trong 7 ngày.

Thông số

Lệnh gọi POST đến /v1/contacts hỗ trợ các thông số sau đây:

Tên Mô tả

blocking

Không bắt buộc.

Liệu yêu cầu có phải chờ quá trình xử lý hoàn tất rồi mới trả về phản hồi hay không. Hãy đọc phần Chặn ở bên dưới để biết thêm thông tin.


Giá trị có thể sử dụng:no_wait (mặc định), wait

contacts

Bắt buộc.

Mảng số điện thoại mà bạn đang xác thực.


Các số này có thể ở bất kỳ định dạng số điện thoại tiêu chuẩn nào. Bạn nên dùng định dạng số điện thoại liên hệ bắt đầu bằng dấu cộng (+) rồi đến mã quốc gia. Hãy xem phần Định dạng số điện thoại ở bên dưới để biết thêm thông tin.

force_check

Không bắt buộc.

Liệu có cần kiểm tra bộ nhớ đệm lưu người liên hệ hay không. Thông tin liên hệ thường được lưu vào bộ nhớ đệm trong 7 ngày. Khi đặt thông số force_checktrue, hệ thống sẽ bỏ qua bộ nhớ đệm này để đảm bảo thực hiện quy trình kiểm tra.


Giá trị có thể sử dụng:false (mặc định), true

Cạnh

Dưới đây là những cạnh được kết nối với nút này:

CạnhMô tả

/{user-whatsapp-id}/identity

Sử dụng cạnh này để quản lý danh tính của người dùng. Hãy xem phần Tìm hiểu về sự thay đổi danh tính trên WhatsApp Business để biết thêm thông tin.

Chặn

Có 2 tùy chọn cho thông số blocking: no_waitwait. Nếu bạn không chỉ định thông số blocking trong lệnh gọi, thông số này mặc định sẽ là no_wait.

Thông số blocking sẽ xác định xem yêu cầu có phải chờ quá trình xử lý hoàn tất (đồng bộ) hay không (không đồng bộ).

Cài đặtMô tả

no_wait

Quá trình xử lý số điện thoại diễn ra không đồng bộ.


Phản hồi có thể bao gồm một vài số điện thoại có status được đặt là processing. Nếu trường hợp đó xảy ra, bạn nên làm theo các bước sau:

  1. Bạn nhận được phản hồi có một vài số điện thoại được đánh dấu là processing.
  2. Đưa ra yêu cầu kiểm tra người liên hệ khác bao gồm các số điện thoại có trạng thái là processing.
  3. Khi hệ thống xử lý xong yêu cầu mới này, bạn sẽ nhận được trạng thái chính xác cho số điện thoại đó (hợp lệ hoặc không hợp lệ).
  4. Nếu bạn vẫn nhìn thấy các số điện thoại được đánh dấu là processing, hãy lặp lại bước 2 cho đến khi có câu trả lời cho từng số.

wait

Quá trình xử lý số điện thoại diễn ra đồng bộ. Bạn sẽ thấy trạng thái cuối cùng của tất cả những người liên hệ sau khi đồng bộ hóa với máy chủ. Tùy chọn cài đặt này sẽ tạo ra lệnh chờ chặn truy vấn cho đến khi hệ thống kiểm tra xong tất cả các số điện thoại rồi mới trả về kết quả. Quá trình này có thể mất một chút thời gian.

Định dạng số điện thoại

Số điện thoại trong yêu cầu contacts có thể ở bất kỳ định dạng nào gọi điện được.

Khi không có dấu cộng (+) ở đầu số điện thoại, mã quốc gia sẽ được xác định bằng số điện thoại dùng để đăng ký ứng dụng API WhatsApp Business Tại chỗ của bạn. Vì vậy, số điện thoại được liên kết với mã quốc gia khác sẽ không sử dụng được.

Cách làm tốt nhất được đề xuất là luôn chỉ định mã quốc gia cùng với số điện thoại và tiền tố dấu cộng rõ ràng (+).

Lưu ý rằng bạn vẫn có thể dùng mã quốc gia nếu số sau + không hợp lệ. Bạn nên xác thực số điện thoại trước khi sử dụng API Tại chỗ để nhận hành vi có thể dự đoán.

Dưới đây là một số ví dụ minh họa hành vi này, giả định ứng dụng API WhatsApp Business Tại chỗ được đăng ký bằng số điện thoại Ấn Độ (tức mã quốc gia là +91):

Số điện thoạiSố điện thoại đã dịch

"+1-631-555-1002"

"+16315551002"

"6315551002"

"+916315551002"

"1-631-555-1002"

"+9116315551002"

"+1 (516) 283-7151"

"+15162837151"

"+54 9 11 5612-1008"

"+5491156121008"

Trường được trả về

Phần tải dữ liệu phản hồi contacts chứa chính mảng số điện thoại mà bạn gửi trong yêu cầu cùng với các thuộc tính input, statuswa_id:

Tên Mô tả

input

Giá trị mà bạn đã điền vào trường contacts trong yêu cầu.

status

v2.41 trở xuống

Trạng thái của người dùng


Giá trị có thể sử dụng:

  • processing - Vẫn đang xử lý dữ liệu đầu vào
  • valid - Người dùng WhatsApp hợp lệ
  • invalid - Người dùng WhatsApp không hợp lệ
  • failed - Đã xảy ra lỗi khi xử lý hoạt động kiểm tra này

status

v2.43 trở lên

Trạng thái của người dùng


Giá trị có thể sử dụng:

  • processing - Vẫn đang xử lý dữ liệu đầu vào
  • valid - Đã hoàn tất quá trình kiểm tra người liên hệ và có thể tiếp tục gửi tin nhắn
  • failed - Đã xảy ra lỗi khi xử lý hoạt động kiểm tra này

wa_id

v2.41 trở xuống

ID người dùng WhatsApp có thể dùng được trong các lệnh gọi khác. ID này chỉ được trả về nếu statusvalid

wa_id

v2.43 trở lên

ID người dùng WhatsApp được trả về có thể hợp lệ hoặc không

Do chúng tôi không đảm bảo rằng giá trị sẽ hợp lệ, vui lòng tránh sử dụng giá trị này trong các lệnh gọi tiếp theo.

Ngoài trạng thái processing, bạn sẽ thấy trạng thái HTTP là 200 OK.

Nếu mẫu tin nhắn được gửi đến một số điện thoại không có tài khoản WhatsApp, bạn sẽ nhận được thông báo lỗi cho biết "Người dùng không hợp lệ" kèm theo mã lỗi 1013.

Nếu có bất kỳ lỗi nào khác trong phản hồi, hãy tham khảo bài viết Thông báo lỗi và thông báo trạng thái.

Chặn người liên hệ

Chặn có thể được xem là tính năng phòng vệ để ngăn chặn kẻ xấu tiếp tục những hành động có hại. Cách chặn người liên hệ đã gửi tin nhắn cho bạn trong 24 giờ qua.

Ví dụ

Gửi lệnh gọi API đến /v1/contacts/{phone_number}/block kèm theo lý do chặn tài khoản WhatsApp khác.

POST /v1/contacts/+16315551000/block
{
   "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked"
}

Phản hồi thành công có trạng thái HTTP là 200 và không chứa đối tượng "errors" (lỗi).

Phản hồi không thành công có dạng như sau:

{   
    "errors": [
        {
            "code": 2048,
            "title": "Not engaged contact",
            "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs."
        }
    ]
}

Thông số

Lệnh gọi POST đến /v1/contacts/{phone_number}/block hỗ trợ các thông số sau đây:

Cài đặtMô tả

reason

Không bắt buộc.

Lý do chặn dạng tự do. Sẽ được dùng khi một tài khoản WhatsApp khác đang bị chặn. Phải dưới 60 ký tự.

phone_number

Bắt buộc.

Các số này có thể ở bất kỳ định dạng số điện thoại tiêu chuẩn nào. Bạn nên dùng định dạng số điện thoại liên hệ bắt đầu bằng dấu cộng (+) rồi đến mã quốc gia. Hãy xem phần Định dạng số điện thoại để biết thêm thông tin.

Bỏ chặn người liên hệ

Thực hiện lệnh gọi này để bỏ chặn người liên hệ

Ví dụ

Gửi lệnh gọi API đến /v1/contacts/{phone_number}/unblock

POST /v1/contacts/+16315551000/unblock

Phản hồi thành công có trạng thái HTTP là 200 và không chứa đối tượng "errors" (lỗi).

Phản hồi không thành công có dạng như sau:

{   
    "errors": [
        {
            "code": 1009,
            "title": "Parameter value is not valid",
            "details": "Provided WhatsApp ID is not valid. Please provide a valid WhatsApp ID or a phone number with a country code"
        }
    ]
}

Thông số

Lệnh gọi POST đến /v1/contacts/{phone_number}/unblock hỗ trợ các thông số sau đây:

Cài đặtMô tả

phone_number

Bắt buộc.

Các số này có thể ở bất kỳ định dạng số điện thoại tiêu chuẩn nào. Bạn nên dùng định dạng số điện thoại liên hệ bắt đầu bằng dấu cộng (+) rồi đến mã quốc gia. Hãy xem phần Định dạng số điện thoại để biết thêm thông tin.

Danh sách chặn

Bạn có thể lấy danh sách người liên hệ đã chặn theo cách dưới đây.

Ví dụ

Gửi lệnh gọi API đến /v1/contacts/blocklist để nhận danh sách được phân trang gồm những người liên hệ đã chặn

GET /v1/contacts/blocklist?limit=10&offset=0

Bạn sẽ nhận được phản hồi kèm theo trang danh sách chặn cùng với thông tin phân trang

{
   "contacts": [
       {
           "wa_id": "16315551000@s.whatsapp.net"
       }
   ],
   "pagination": {
       "limit": 10,
       "offset": 0,
       "total": 1
   }
}

Thông số

Lệnh gọi GET đến /v1/contacts/blocklist hỗ trợ các thông số sau đây:

Cài đặtMô tả

limit

Không bắt buộc.

Phạm vi được chấp nhận là (0; 200]. Mặc định: 100.

offset

Không bắt buộc.

Mặc định: 0.

Báo cáo

Báo cáo cung cấp các tín hiệu quan trọng để xây dựng giải pháp phòng ngừa trước kẻ xấu. Người liên hệ phải gửi tin nhắn cho bạn trong 24 giờ qua thì bạn mới có thể báo cáo người liên hệ đó.

Ví dụ

Gửi lệnh gọi API đến /v1/contacts/{phone_number}/report kèm theo lý do nếu bạn đang chặn một tài khoản WhatsApp khác.

POST /v1/contacts/+16315551000/block
{
   "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked",
   "block": "true | false optional boolean with default of false",
   "message_id": "message-id. Optional reported message id"
}

Phản hồi thành công có trạng thái HTTP là 200 và không chứa đối tượng "errors" (lỗi).

Phản hồi không thành công có dạng như sau:

{  
    "errors": [
        {
            "code": 2048,
            "title": "Not engaged contact",
            "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs."
        }
    ]
}

Thông số

Lệnh gọi POST đến /v1/contacts/{phone_number}/report hỗ trợ các thông số sau đây:

Cài đặtMô tả

reason

Không bắt buộc.

Lý do chặn dạng tự do. Sẽ được dùng khi một tài khoản WhatsApp khác đang bị chặn. Phải dưới 60 ký tự.

block

Không bắt buộc.

Giá trị mặc định là False.

Chặn người liên hệ hay chỉ báo cáo họ.

message_id

Không bắt buộc.

ID tin nhắn cần báo cáo. Nếu không được chỉ định, 5 tin nhắn cuối cùng sẽ được gửi đến WhatsApp.

phone_number

Bắt buộc.

Các số này có thể ở bất kỳ định dạng số điện thoại tiêu chuẩn nào. Bạn nên dùng định dạng số điện thoại liên hệ bắt đầu bằng dấu cộng (+) rồi đến mã quốc gia. Hãy xem phần Định dạng số điện thoại để biết thêm thông tin.