/v1/contacts
使用 contacts
節點來管理資料庫中的 WhatsApp 用戶,方法是在向他們傳送訊息之前對其進行驗證,並使用身分雜湊來驗證用戶的身分。
透過 contacts
節點,您可以:
status
為 valid
,才能傳送訊息給用戶。 從 2.39.1 版開始,使用電話號碼即可直接使用 messages
節點,不需先使用 contacts
節點將電話號碼轉譯成 WhatsApp 編號。
我們從 2.43 版更改 contacts
節點的用途,不再提供與電話號碼相關的狀態資訊。無論用戶是否使用 WhatsApp,回應一律會傳回 valid
的 status
,也會傳回 wa_id.
。
您必須提供選項,讓顧客選擇是否要與商家進行 WhatsApp 通訊。這個選擇接收訊息的流程是由商家維護。在顧客選擇接收訊息之後,請使用 contacts
節點來驗證註冊的電話號碼。如需更多資訊,請參閱瞭解如何取得 WhatsApp 的選擇接收訊息。
如果商家濫用端點,我們將採取以下措施:
建議在傳送訊息之前先檢查聯絡人,但是在回應傳入的顧客訊息時,不需要檢查聯絡人,因為您可以使用所提供的 wa_id
立即回應。快取結果不需要額外費用。
在傳送訊息給選擇接收訊息的用戶之前,先傳送 POST
要求至 /v1/contacts
端點,以建立 WhatsApp 帳號用戶驗證要求。在呼叫中加入您要驗證的電話號碼清單。
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 }
您收到的回應中會有所要求號碼的目前 status
和 WhatsApp 編號(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" } }
儲存傳回 status
為 valid
之號碼的 WhatsApp 編號。有效用戶是具有 WhatsApp 帳號的人。使用 WhatsApp 編號傳送訊息和通知。
定期重複這些步驟來管理您的有效用戶名單。結果會快取在 WhatsApp Business 內部部署 API 用戶端的資料庫中保存 7 天。
以下參數支援向 /v1/contacts
發出的 POST
呼叫:
名稱 | 說明 |
---|---|
| 選用項目。 在傳回回應之前,該要求是否應等待處理完成。如需更多資訊,請參閱下文的封鎖一節。 可能值: |
| 必要項目。 您正在驗證的電話號碼陣列。 號碼可以是任何標準的電話號碼格式。聯絡人電話號碼的建議格式為使用加號( |
| 選用項目。 是否檢查聯絡人快取。聯絡資料通常會快取保留 7 天。若將 可能值: |
下列關係連線連結到此節點:
關係連線 | 說明 |
---|---|
使用此關係連線來管理用戶的身分。如需詳細資訊,請參閱瞭解 WhatsApp Business 的身分變更。 |
blocking
參數有兩個選項:no_wait
和 wait
。如果呼叫中未指定 blocking
參數,則預設為 no_wait
。
blocking
參數可決定要求是否應等待(同步)或不等待(非同步)處理完成。
設定 | 說明 |
---|---|
| 電話號碼為非同步處理。 回應中可能會包含一些
|
| 電話號碼為同步處理。在與伺服器同步之後,您會看到所有聯絡人的最終狀態。此設定會使查詢封鎖等待,直到檢查完所有號碼後才傳回結果。這可能需要一些時間。 |
contacts
要求中的電話號碼可以是任何可撥打的格式。
如果電話號碼開頭沒有加號(+
),則會使用您的 WhatsApp Business 內部部署 API 用戶端所註冊的電話號碼來決定國碼/區碼,因此與其他國碼/區碼連結的電話號碼將會失效。
建議的最佳作法是一律指定電話號碼的國碼/區碼,並且明確地在開頭加上加號(+
)。
請注意,如果 +
後面的號碼無效,仍可能使用國碼/區碼。建議在使用內部部署 API 之前先驗證電話號碼,以取得可預測的行為。
以下是說明上述行為的一些範例,假設 WhatsApp Business 內部部署 API 用戶端註冊了一個印度電話號碼(亦即國碼/區碼為 +91
):
電話號碼 | 轉譯後的電話號碼 |
---|---|
|
|
|
|
|
|
|
|
|
|
contacts
回應承載所包含的電話號碼陣列,與使用 input
、status
和 wa_id
屬性之要求中所傳送的電話號碼陣列相同:
名稱 | 說明 |
---|---|
| 您在要求的 |
2.41 版和更舊版 | 用戶的狀態 可能的值:
|
2.43 版以上 | 用戶的狀態 可能的值:
|
2.41 版和更舊版 | 可用於其他呼叫的 WhatsApp 用戶編號。只在 |
2.43 版以上 | 傳回的 WhatsApp 用戶編號可能有效,也可能無效 由於不保證此值有效,因此後續呼叫請避免使用此值。 |
隨著 processing
狀態,您應該會看到 HTTP 狀態為 200 OK
。
若將範本訊息傳送至沒有 WhatsApp 帳號的電話號碼,您會收到一則註明「用戶無效」及錯誤碼 1013
的訊息。
關於回應中的任何其他錯誤,請參閱錯誤和狀態訊息。
您只能封鎖過去 24 小時內曾經傳送訊息給您的聯絡人。
傳送一則 API 呼叫至 /v1/contacts/{phone_number}/block
,並註明封鎖其他商業帳號的原因。
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another business account is being blocked" }
若成功,回應的 HTTP 狀態會是 200
,而且不會有「錯誤」物件。
若失敗,會出現如下所示的回應:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
以下參數支援向 /v1/contacts/{phone_number}/block
發出的 POST 呼叫:
設定 | 說明 |
---|---|
| 選用項目。 自行輸入封鎖的原因。要封鎖其他商家帳戶時會用到。必須少於 60 個字元。 |
| 必要項目。 號碼可以是任何標準的電話號碼格式。建議使用的聯絡人電話號碼格式是加號(+)加上國碼/區碼。如需詳細資訊,請參閱電話號碼格式。 |
發出此呼叫可解除封鎖聯絡人
傳送一則 API 呼叫至 /v1/contacts/{phone_number}/unblock
POST /v1/contacts/+16315551000/unblock
若成功,回應的 HTTP 狀態會是 200
,而且不會有「錯誤」物件。
若失敗,會出現如下所示的回應:
{ "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" } ] }
以下參數支援向 /v1/contacts/{phone_number}/unblock
發出的 POST 呼叫:
設定 | 說明 |
---|---|
| 必要項目。 號碼可以是任何標準的電話號碼格式。建議使用的聯絡人電話號碼格式是加號(+)加上國碼/區碼。如需詳細資訊,請參閱電話號碼格式。 |
這是取得已封鎖聯絡人名單的方法。
傳送一則 API 呼叫至 /v1/contacts/blocklist
即可收到已封鎖聯絡人分頁名單
GET /v1/contacts/blocklist?limit=10&offset=0
您收到的回應會包含一頁封鎖名單以及分頁資訊
{ "contacts": [ { "wa_id": "16315551000@s.whatsapp.net" } ], "pagination": { "limit": 10, "offset": 0, "total": 1 } }
以下參數支援向 /v1/contacts/blocklist
發出的 GET 呼叫:
設定 | 說明 |
---|---|
| 選用項目。 可接受的範圍是 (0;200]。預設:100。 |
| 選用項目。 預設:0。 |
您只能檢舉過去 24 小時內曾經傳送訊息給您的聯絡人。
傳送一則 API 呼叫至 /v1/contacts/{phone_number}/report
,並註明封鎖其他商業帳號的原因。
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another business account is being blocked", "block": "true | false optional boolean with default of false", "message_id": "message-id. Optional reported message id" }
若成功,回應的 HTTP 狀態會是 200
,而且不會有「錯誤」物件。
若失敗,會出現如下所示的回應:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
以下參數支援向 /v1/contacts/{phone_number}/report
發出的 POST 呼叫:
設定 | 說明 |
---|---|
| 選用項目。 自行輸入封鎖的原因。要封鎖其他商家帳戶時會用到。必須少於 60 個字元。 |
| 選用項目。 預設為 要同時封鎖聯絡人,或者只要檢舉聯絡人。 |
| 選用項目。 要檢舉的訊息編號。若未指定,會將最近的 5 則訊息傳送至 WhatsApp。 |
| 必要項目。 號碼可以是任何標準的電話號碼格式。建議使用的聯絡人電話號碼格式是加號(+)加上國碼/區碼。如需詳細資訊,請參閱電話號碼格式。 |