聯絡人

/v1/contacts

使用 contacts 節點來管理資料庫中的 WhatsApp 用戶,方法是在向他們傳送訊息之前對其進行驗證,並使用身分雜湊來驗證用戶的身分。

透過 contacts 節點,您可以:

  • 驗證資料庫中的電話號碼是否屬於有效的 WhatsApp 帳號。您必須確認 statusvalid,才能傳送訊息給用戶。
  • 取得電話號碼的 WhatsApp 編號。需要有 WhatsApp 編號,才能傳送訊息和用戶通知。

從 2.39.1 版開始,使用電話號碼即可直接使用 messages 節點,不需先使用 contacts 節點將電話號碼轉譯成 WhatsApp 編號。

我們從 2.43 版更改 contacts 節點的用途,不再提供與電話號碼相關的狀態資訊。無論用戶是否使用 WhatsApp,回應一律會傳回 validstatus,也會傳回 wa_id.

準備工作

您必須提供選項,讓顧客選擇是否要與商家進行 WhatsApp 通訊。這個選擇接收訊息的流程是由商家維護。在顧客選擇接收訊息之後,請使用 contacts 節點來驗證註冊的電話號碼。如需更多資訊,請參閱瞭解如何取得 WhatsApp 的選擇接收訊息

限制

  • 使用此端點來驗證商家資料庫中的電話號碼是否屬於有效的 WhatsApp 帳號
  • 通話次數不得超過電話號碼傳送的訊息數量

政策執行

如果商家濫用端點,我們將採取以下措施:

  • 如果疑似有濫用情形,企業管理平台中列出的所有管理員會透過電子郵件收到初步警告
  • 商家在收到警告後有 7 天的時間可調整其行為
  • 如果 7 天後未調整通話行為,電話號碼將永久停用

建議作法

建議在傳送訊息之前先檢查聯絡人,但是在回應傳入的顧客訊息時,不需要檢查聯絡人,因為您可以使用所提供的 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"
  }
}

儲存傳回 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

2.41 版和更舊版

用戶的狀態


可能的值:

  • processing — 輸入仍在處理中
  • valid — 有效的 WhatsApp 用戶
  • invalid — 非有效的 WhatsApp 用戶
  • failed — 處理此檢查時發生錯誤

status

2.43 版以上

用戶的狀態


可能的值:

  • processing — 輸入仍在處理中
  • valid — 聯絡人檢查完成,可以傳送訊息
  • failed — 處理此檢查時發生錯誤

wa_id

2.41 版和更舊版

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

wa_id

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 呼叫:

設定說明

reason

選用項目。

自行輸入封鎖的原因。要封鎖其他商家帳戶時會用到。必須少於 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

必要項目。

號碼可以是任何標準的電話號碼格式。建議使用的聯絡人電話號碼格式是加號(+)加上國碼/區碼。如需詳細資訊,請參閱電話號碼格式

Blocklist

這是取得已封鎖聯絡人名單的方法。

範例

傳送一則 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 小時內曾經傳送訊息給您的聯絡人。

範例

傳送一則 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 呼叫:

設定說明

reason

選用項目。

自行輸入封鎖的原因。要封鎖其他商家帳戶時會用到。必須少於 60 個字元。

block

選用項目。

預設為 False

要同時封鎖聯絡人,或者只要檢舉聯絡人。

message_id

選用項目。

要檢舉的訊息編號。若未指定,會將最近的 5 則訊息傳送至 WhatsApp。

phone_number

必要項目。

號碼可以是任何標準的電話號碼格式。建議使用的聯絡人電話號碼格式是加號(+)加上國碼/區碼。如需詳細資訊,請參閱電話號碼格式