/v1/contacts
使用 contacts
節點,以在傳送訊息之前驗證用戶,藉此管理您資料庫中的 WhatsApp 用戶,並使用身分雜湊資料來驗證用戶的身分。
您可以使用 contacts
節點來執行以下動作:
status
為 valid
。 由 v2.39.1 開始,messages
節點可以直接與手機號碼配合使用,無需先使用 contacts
節點將此節點轉譯為 WhatsApp 編號。
由 v2.43 開始,我們重新設計了 contacts
節點的用途,使其不再提供手機號碼的狀態資訊。無論用戶是否擁有 WhatsApp,系統一律會在回應中傳回 status
為 valid
的結果,以及傳回 wa_id
。
您必須向顧客提供選項,讓他們選擇加入與您企業的 WhatsApp 對話。此選擇加入流程由您的企業管理。顧客選擇加入後,請使用 contacts
節點來驗證已註冊的手機號碼。如欲了解更多資訊,請參閱了解如何選擇加入 WhatsApp。
如果商家濫用端點,系統會採取以下動作:
我們建議在傳送訊息前檢查聯絡人,而在回覆所接收到的顧客訊息時則不需檢查聯絡人,因為此時您可以使用系統提供的 wa_id
立即回覆。快取結果不需要額外費用。
向選擇加入對話的用戶傳送訊息之前,請向 /v1/contacts
端點傳送 POST
要求,以建立 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
屬性的要求中所傳送的手機號碼陣列相同:
名稱 | 說明 |
---|---|
| 您在要求的 |
v2.41 及以下版本 | 用戶的狀態 可能的值:
|
v2.43 及以上版本 | 用戶的狀態 可能的值:
|
v2.41 及以下版本 | 可以在其他呼叫中使用的 WhatsApp 用戶編號。只在 |
v2.43 及以上版本 | 傳回的 WhatsApp 用戶編號(可能有效或無效) 由於無法保證此值是否有效,因此請勿在後續呼叫中使用此值。 |
除了 processing
狀態外,您也會看到 200 OK
的 HTTP 狀態。
如果向沒有 WhatsApp 帳戶的手機號碼傳送範本訊息,您將收到一則指出「用戶無效」的錯誤訊息,錯誤代碼為 1013
。
如果回應中有任何錯誤,請參閱錯誤和狀態訊息以了解更多資訊。
封鎖可以視作一種防衛功能,能阻止有心人士繼續做出有害行為。您只能封鎖最近 24 小時內曾向您傳送訊息的聯絡人。
傳送 API 呼叫至 /v1/contacts/{phone_number}/block
,其中附上封鎖其他 WhatsApp 帳戶的原因。
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp 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 呼叫支援下列參數:
設定 | 說明 |
---|---|
| 此為選用項目。 以自由格式輸入的封鎖原因,在封鎖其他 WhatsApp 帳戶時使用。上限為 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 小時內曾向您傳送訊息的聯絡人。
如果您要封鎖其他 WhatsApp 帳戶,請傳送 API 呼叫至 /v1/contacts/{phone_number}/report
,並在當中加入封鎖原因。
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" }
成功的回應帶有 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 呼叫支援下列參數:
設定 | 說明 |
---|---|
| 此為選用項目。 以自由格式輸入的封鎖原因,在封鎖其他 WhatsApp 帳戶時使用。上限為 60 個字元。 |
| 此為選用項目。 預設為 選擇要一併封鎖聯絡人,還是只舉報聯絡人。 |
| 此為選用項目。 要舉報的訊息編號。如未有指定編號,系統會將最近 5 則訊息傳送至 WhatsApp。 |
| 此為必要項目。 這些號碼可以採用任何標準電話號碼格式。推薦採用以加號(+)和國碼/區碼開頭的格式來提供聯絡人手機號碼。如要了解更多資訊,請參閱手機號碼格式部分。 |