/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ể:
status
là valid
thì mới nhắn tin được 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.
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.
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:
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.
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.
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ề status
là valid
. 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.
Lệnh gọi POST
đến /v1/contacts
hỗ trợ các thông số sau đây:
Tên | Mô tả |
---|---|
| 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: |
| 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 ( |
| 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ố Giá trị có thể sử dụng: |
Dưới đây là những cạnh được kết nối với nút này:
Cạnh | Mô tả |
---|---|
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. |
Có 2 tùy chọn cho thông số blocking
: no_wait
và wait
. 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 đặt | Mô tả |
---|---|
| 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ó
|
| 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. |
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ại | Số điện thoại đã dịch |
---|---|
|
|
|
|
|
|
|
|
|
|
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
, status
và wa_id
:
Tên | Mô tả |
---|---|
| Giá trị mà bạn đã điền vào trường |
v2.41 trở xuống | Trạng thái của người dùng Giá trị có thể sử dụng:
|
v2.43 trở lên | Trạng thái của người dùng Giá trị có thể sử dụng:
|
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 |
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 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.
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." } ] }
Lệnh gọi POST đến /v1/contacts/{phone_number}/block
hỗ trợ các thông số sau đây:
Cài đặt | Mô tả |
---|---|
| 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ự. |
| 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. |
Thực hiện lệnh gọi này để bỏ chặn người liên hệ
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" } ] }
Lệnh gọi POST đến /v1/contacts/{phone_number}/unblock
hỗ trợ các thông số sau đây:
Cài đặt | Mô tả |
---|---|
| 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ạn có thể lấy danh sách người liên hệ đã chặn theo cách dưới đây.
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 } }
Lệnh gọi GET đến /v1/contacts/blocklist
hỗ trợ các thông số sau đây:
Cài đặt | Mô tả |
---|---|
| Không bắt buộc. Phạm vi được chấp nhận là (0; 200]. Mặc định: 100. |
| Không bắt buộc. Mặc định: 0. |
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ệ đó.
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." } ] }
Lệnh gọi POST đến /v1/contacts/{phone_number}/report
hỗ trợ các thông số sau đây:
Cài đặt | Mô tả |
---|---|
| 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ự. |
| Không bắt buộc. Giá trị mặc định là Chặn người liên hệ hay chỉ báo cáo họ. |
| 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. |
| 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. |