聯絡人

/v1/contacts

使用 contacts 節點,以在傳送訊息之前驗證用戶,藉此管理您資料庫中的 WhatsApp 用戶,並使用身分雜湊資料來驗證用戶的身分。

您可以使用 contacts 節點來執行以下動作:

  • 驗證資料庫中的手機號碼是否屬於有效的 WhatsApp 帳戶。在向用戶傳送訊息前,您必須確保其 statusvalid
  • 獲取手機號碼的 WhatsApp 編號。傳送訊息和用戶通知時,您都需要使用 WhatsApp 編號。

由 v2.39.1 開始,messages 節點可以直接與手機號碼配合使用,無需先使用 contacts 節點將此節點轉譯為 WhatsApp 編號。

由 v2.43 開始,我們重新設計了 contacts 節點的用途,使其不再提供手機號碼的狀態資訊。無論用戶是否擁有 WhatsApp,系統一律會在回應中傳回 statusvalid 的結果,以及傳回 wa_id

準備工作

您必須向顧客提供選項,讓他們選擇加入與您企業的 WhatsApp 對話。此選擇加入流程由您的企業管理。顧客選擇加入後,請使用 contacts 節點來驗證已註冊的手機號碼。如欲了解更多資訊,請參閱了解如何選擇加入 WhatsApp

限制

  • 使用此端點來驗證企業資料庫中的手機號碼是否屬於有效的 WhatsApp 帳戶
  • 呼叫次數不得超過手機號碼傳送的訊息數量

政策執行

如果商家濫用端點,系統會採取以下動作:

  • 如果懷疑出現濫用情況,系統會透過電郵向企業管理平台中列出的所有管理員發出警告
  • 商家需在收到警告後的 7 天內調整其行為
  • 如果在 7 天後仍未有調整呼叫使用情況,相應的手機號碼將會遭到永久停用

建議

我們建議在傳送訊息前檢查聯絡人,而在回覆所接收到的顧客訊息時則不需檢查聯絡人,因為此時您可以使用系統提供的 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"
  }
}

找出傳回 statusvalid 的手機號碼,儲存其 WhatsApp 編號。擁有 WhatsApp 帳戶的用戶便是有效的用戶。使用 WhatsApp 編號傳送訊息和通知。

定期重覆這些步驟,以管理您的有效用戶名單。系統會將結果快取於 WhatsApp Business 企業內部 API 用戶端資料庫 7 天

參數

系統為向 /v1/contacts 發出的 POST 呼叫支援下列參數:

名稱 說明

blocking

此為選用項目。

用以表示要求是否應等待處理完成,才傳回回應。如欲了解更多資訊,請參閱下方的封鎖部分。


可能的值:no_wait(預設值)、wait

contacts

此為必要項目。

您要驗證的手機號碼陣列。


這些號碼可以採用任何標準手機號碼格式。推薦採用以加號(+)和國碼/區碼開頭的格式來提供聯絡人手機號碼。如欲了解更多資訊,請參閱下方的手機號碼格式部分。

force_check

此為選用項目。

用以表示是否檢查聯絡人快取。系統通常會將聯絡資料快取 7 天。您可將 force_check 參數設定為 true,以便系統繞過快取,確保能夠執行檢查。


可能的值:false(預設值)、true

關係連線

以下關係連線連接至此節點:

關係連線說明

/{user-whatsapp-id}/identity

使用此關係連線來管理用戶身分。如欲了解更多相關資訊,請參閱了解 WhatsApp Business 用戶身分變更

封鎖

若是 blocking 參數,您有以下兩個選項:no_waitwait。如果呼叫未有指定 blocking 參數,則此參數將預設為 no_wait

blocking 參數決定要求是否應等待(同步)或不等待(非同步)處理完成。

設定說明

no_wait

非同步處理手機號碼。


回應可能包含一些 status 設定為 processing 的號碼。如果出現這種情況,我們建議您按照以下步驟操作:

  1. 獲取其中一些號碼標記為 processing 的回應。
  2. 發出另一個檢查聯絡人要求,其中包含狀態為 processing 的號碼。
  3. 如果您新要求的處理已完成,您會獲得相關號碼的正確狀態(有效或無效)。
  4. 如果您仍然看到標記為 processing 的號碼,請重複步驟 2,直到獲得每個號碼的回答。

wait

同步處理號碼。您與伺服器同步後,將會看到所有聯絡人的最終狀態。此設定會使查詢區塊待系統檢查完所有號碼後才傳回結果。這可能會需要一些時間。

手機號碼格式

contacts 要求中的手機號碼可以採用任何可撥打格式。

如果手機號碼開首沒有加號(+),系統便會以您的 WhatsApp Business 企業內部 API 用戶端註冊時所使用的手機號碼來確定國碼/區碼,因此您將無法使用任何與其他國碼/區碼相關的手機號碼。

我們建議的最佳操作實例是一律指定手機號碼和國碼/區碼,並在國碼/區碼前面清楚地加上加號(+)。

請注意,如果 + 後的號碼無效,國碼/區碼可能仍會被使用。我們建議您在使用內部部署 API 前驗證手機號碼,以實現預期行為。

以下範例示範了這個做法,當中假設您使用印度手機號碼註冊了 WhatsApp Business 內部部署 API 用戶端(即國碼/區碼為 +91):

手機號碼經轉譯的手機號碼

"+1-631-555-1002"

"+16315551002"

"6315551002"

"+916315551002"

"1-631-555-1002"

"+9116315551002"

"+1 (516) 283-7151"

"+15162837151"

"+54 9 11 5612-1008"

"+5491156121008"

傳回的欄位

contacts 回應裝載包含的手機號碼陣列,與內含 inputstatuswa_id 屬性的要求中所傳送的手機號碼陣列相同:

名稱 說明

input

您在要求的 contacts 欄位中所傳送的值。

status

v2.41 及以下版本

用戶的狀態


可能的值:

  • processing—輸入內容仍在處理中
  • valid—有效的 WhatsApp 用戶
  • invalid—不是有效的 WhatsApp 用戶
  • failed—處理此項檢查項目時出錯

status

v2.43 及以上版本

用戶的狀態


可能的值:

  • processing—輸入內容仍在處理中
  • valid—聯絡人檢查完成,可以處理訊息傳送
  • failed—處理此項檢查項目時出錯

wa_id

v2.41 及以下版本

可以在其他呼叫中使用的 WhatsApp 用戶編號。只在 statusvalid 時傳回

wa_id

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 呼叫支援下列參數:

設定說明

reason

此為選用項目。

以自由格式輸入的封鎖原因,在封鎖其他 WhatsApp 帳戶時使用。上限為 60 個字元。

phone_number

此為必要項目。

這些號碼可以採用任何標準電話號碼格式。推薦採用以加號(+)和國碼/區碼開頭的格式來提供聯絡人手機號碼。如要了解更多資訊,請參閱手機號碼格式部分。

解除封鎖聯絡人

傳送此呼叫以解除封鎖聯絡人

範例

傳送 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 呼叫支援下列參數:

設定說明

phone_number

此為必要項目。

這些號碼可以採用任何標準電話號碼格式。推薦採用以加號(+)和國碼/區碼開頭的格式來提供聯絡人手機號碼。如要了解更多資訊,請參閱手機號碼格式部分。

封鎖名單

獲取已封鎖聯絡人名單的方式。

範例

傳送 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 呼叫支援下列參數:

設定說明

limit

此為選用項目。

可接受的範圍為 (0;200]。預設值:100。

offset

此為選用項目。

預設值: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 呼叫支援下列參數:

設定說明

reason

此為選用項目。

以自由格式輸入的封鎖原因,在封鎖其他 WhatsApp 帳戶時使用。上限為 60 個字元。

block

此為選用項目。

預設為 False

選擇要一併封鎖聯絡人,還是只舉報聯絡人。

message_id

此為選用項目。

要舉報的訊息編號。如未有指定編號,系統會將最近 5 則訊息傳送至 WhatsApp。

phone_number

此為必要項目。

這些號碼可以採用任何標準電話號碼格式。推薦採用以加號(+)和國碼/區碼開頭的格式來提供聯絡人手機號碼。如要了解更多資訊,請參閱手機號碼格式部分。