電話號碼

本指南註明手機號碼驗證方式以及必要的雲端 API 格式。

可以新增至 WhatsApp Business 帳號(WABA)的手機號碼必須符合特定條件。詳情請參閱手機號碼

清單中的部分 API 呼叫必須用到手機號碼的編號。請參閱取得所有手機號碼,瞭解如何取得與 WABA 相關的所有手機號碼。API 呼叫回應包含與您 WhatsApp Business 帳號相關的每一個手機號碼編號。請儲存您要用於任何 /PHONE_NUMBER_ID 呼叫的手機編號。

驗證手機號碼

您需驗證您要用於發送訊息給顧客的手機號碼。驗證手機號碼時必須使用透過簡訊/語音通話發送的代碼。您可以使用下方指定的圖形 API 完成驗證流程。

若要使用圖形 API 驗證手機號碼,請向 PHONE_NUMBER_ID/request_code 發出 POST 要求。在呼叫中包含您選擇的驗證方式和語言。

端點驗證

/PHONE_NUMBER_ID/request_code

使用系統用戶存取權杖自行驗證。


若您代表另一個商家要求驗證碼,存取權杖要有 whatsapp_business_management 權限的 Advanced Access。

參數

名稱 說明(點擊左欄中的箭頭可查看支援的選項。)

code_method

字串

必要項目。

選定的驗證方式。

支援的選項

  • SMS
  • VOICE

language

字串

必要項目。

您語言的二字元語言代碼。例如:"en"

範例

要求範例:

curl -X POST \
  'https://graph.facebook.com/v13.0/FROM_PHONE_NUMBER_ID/request_code' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -F 'code_method=SMS' 
  -F 'locale=en_US'

發出 API 呼叫後,您會透過所選的方式收到驗證碼。若要完成驗證流程,請在您向 PHONE_NUMBER_ID/verify_code 發出的 POST 要求中加入您的代碼。

端點 驗證

/PHONE_NUMBER_ID/verify_code

使用系統用戶存取權杖自行驗證。


若您代表另一個商家要求驗證碼,存取權杖要有 whatsapp_business_management 權限的 Advanced Access。

參數

名稱說明

code

數字字串

必要項目。

您呼叫 FROM_PHONE_NUMBER_ID/request_code 之後收到的代碼。

範例

要求範例:

curl -X POST \
  'https://graph.facebook.com/v13.0/FROM_PHONE_NUMBER_ID/verify_code' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -F 'code=000000'

成功時的回應如下:

{
  "success": true
}

WhatsApp User Phone Number Formats

Plus signs (+), hyphens (-), parenthesis ((,)), and spaces are supported in send message requests.

We highly recommend that you include both the plus sign and country calling code when sending a message to a customer. If the plus sign is omitted, your business phone number's country calling code is prepended to the customer's phone number. This can result in undelivered or misdelivered messages.

For example, if your business is in India (country calling code 91) and you send a message to the following customer phone number in various formats:

Number In Send Message RequestNumber Message Delivered ToOutcome

+16315551234

+16315551234

Correct number

+1 (631) 555-1234

+16315551234

Correct number

(631) 555-1234

+916315551234

Potentially wrong number

1 (631) 555-1234

+9116315551234

Potentially wrong number

身分變更檢查

您可能希望我們在向顧客傳送訊息之前驗證顧客的身分。您只需在商業電話號碼啟用身分變更檢查設定,就可以讓我們執行此操作。

如果顧客在 WhatsApp 中執行我們認為是身分變更的操作,我們就會為該用戶產生新的身分雜湊。您只需在商業電話號碼啟用身分變更檢查設定,就可以在向顧客傳送訊息時取得此雜湊。啟用之後,每當顧客向您傳送訊息或您向不具身分雜湊的顧客傳送訊息時,我們都會在任何傳入訊息 Webhooks 或傳送狀態 Webhooks 中包含其雜湊。然後,您便可以擷取並儲存此雜湊以供下次使用。

若要使用雜湊,請將其包含在傳送訊息要求中。我們會將要求中的雜湊與顧客的現有雜湊進行比對。如果雜湊配對相符,系統將傳送訊息。如果配對不符,表示顧客自您上次向其傳送訊息到現在已變更身分,因此我們將不會傳送訊息。取而代之的,我們將向您傳送包含錯誤代碼 137000 的訊息狀態 Webhook,通知您失敗且配對不符。

當您收到配對不符的雜湊 Webhook 時,請假設顧客的手機號碼已不再可信。若要重新建立信任,請使用其他非 WhatsApp 管道再次驗證顧客的身分。重新建立信任後,請將失敗的訊息重新傳送到新身分(如有的話),且不包含雜湊。接著儲存訊息狀態傳送 Webhook 中所包含的顧客新雜湊。

要求語法

WhatsApp Business 手機號碼 > 設定端點傳送 POST 要求,可啟用或停用身分變更檢查設定。

POST /<WHATSAPP_BUSINESS_PHONE_NUMBER>/settings

張貼內容

{
  "user_identity_change" : {
    "enable_identity_key_check": <ENABLE_IDENTITY_KEY_CHECK>
}

<ENABLE_IDENTITY_KEY_CHECK> 設定為 true 以啟用身分檢查,或設定為 false 以停用身分檢查。

啟用要求範例

curl 'https://graph.facebook.com/v21.0/106850078877666/settings' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
  "user_identity_change": {
    "enable_identity_key_check": true
  }
}'

啟用回應範例

{
  "success": true
}

傳送檢查訊息範例

只有當 recipient_identity_key_hash 雜湊值與顧客的現有雜湊配對相符時,系統才會傳送此訊息範例。

curl 'https://graph.facebook.com/v21.0/106850078877666/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
    "messaging_product": "whatsapp",
    "recipient_type": "individual",
    "to": "+16505551234",
    "recipient_identity_key_hash": "DF2lS5v2W6x=",
    "type": "text",
    "text": {
        "preview_url": false,
        "body": "Your latest statement is attached. See... "
    }
}'

傳入訊息 Webhook 範例

在傳入訊息 Webhooks 中,系統會將顧客的雜湊指派給 identity_key_hash 屬性。

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "102290129340398",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "15550051310",
              "phone_number_id": "106540352242922"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Pablo Morales"
                },
                "wa_id": "16505551234",
                "identity_key_hash": "DF2lS5v2W6x="
              }
            ],
            "messages": [
              {
                "from": "16505551234",
                "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgASGBQzQUMyNTA4M0VGN0Q4RjdDNDVCMAA=",
                "timestamp": "1686591695",
                "text": {
                  "body": "Your latest statement is attached. See... "
                },
                "type": "text"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}

傳送狀態 Webhook 範例

在傳送狀態 Webhooks 中,系統會將顧客的雜湊指派給 recipient_identity_key_hash 屬性。

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "102290129340398",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "15550051310",
              "phone_number_id": "106540352242922"
            },
            "statuses": [
              {
                "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBJGODlDQjZBNjUxMUQ5NEU0MEUA",
                "status": "delivered",
                "timestamp": "1686591922",
                "recipient_id": "16505551234",
                "recipient_identity_key_hash": "DF2lS5v2W6x=",
                "conversation": {
                  "id": "6c84493f3de086c7c68d5a39248f72c0",
                  "origin": {
                    "type": "service"
                  }
                },
                "pricing": {
                  "billable": true,
                  "pricing_model": "CBP",
                  "category": "service"
                }
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}

失敗的傳送狀態 Webhook 範例

在傳送狀態 Webhooks 中,系統會將顧客的雜湊指派給 recipient_identity_key_hash 屬性。

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "102290129340398",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "15550051310",
              "phone_number_id": "106540352242922"
            },
            "statuses": [
              {
                "id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgARGBJDQzA0OEU4OTdEQUE5REVCQTgA",
                "status": "failed",
                "timestamp": "1686594665",
                "recipient_id": "16505551234",
                "errors": [
                  {
                    "code": 137000,
                    "title": "Confirm the correct Recipient Identity Key Hash or send without any identity key hash"
                  }
                ]
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}

取得傳送量層級

使用 WhatsApp Business 電話號碼端點來取得電話號碼的目前傳送量層級

GET /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>?fields=throughput