Webhooks

WhatsApp Business 帳戶(WABA)及其資產均為 Facebook 社交關係圖的物件。如果以上其中一個物件遇到觸發事件,Facebook 都會得悉,並會向您在 Facebook 應用程式的管理中心中指定的 Webhook 網址傳送通知。

在內嵌註冊方面,您可以使用 Webhooks 來取得 WhatsApp Business 帳戶、電話號碼、訊息範本和傳送至您電話號碼之訊息的變更通知。

您需要根據自己希望接收哪些 WhatsApp Business 帳戶的 Webhooks,分別訂閱各個 WhatsApp Business 帳戶擷取用戶端的 WhatsApp Business 帳戶編號後,為應用程式訂閱該編號以開始接收 Webhooks。

如需進一步了解訂閱 Webhooks 的相關資訊,請參閱 WhatsApp Business 帳戶的 Webhooks

訂閱 WhatsApp Business 帳戶

首先,為您的應用程式設定 Webhooks 產品:

  1. 應用程式管理中心內載入您的應用程式,然後新增 Webhooks 產品(如果尚未新增)。
  2. 在左側選單中點擊 Webhooks 產品。
  3. 從下拉式選單中選擇 WhatsApp Business 帳戶,然後點擊訂閱此物件
  4. 加入 Webhooks 回呼網址和驗證憑證,確定資料輸入無誤後再儲存您的變更。

如需進一步了解在應用程式管理中心訂閱 Webhooks 的相關資訊,請參閱「配置 Webhooks 產品」一文。

在 Webooks 產品面板中設定 Webhooks 之後,視乎您想為哪個 WhatsApp Business 帳戶接收 Webhooks,向其 subscribed_apps 端點傳送 POST 要求。

如要獲取 WhatsApp Business 帳戶的編號,請前往企業管理平台 > 企業管理平台設定 > 帳戶 > WhatsApp Business 帳戶。找出您要使用的帳戶,然後點擊該帳戶。系統會隨即開啟一個面板,其中包含該帳戶的編號等相關資訊。

在要求標題中加入您的系統用戶存取憑證,並在前方附上 Authorization: Bearer。如需有關產生系統用戶存取憑證方面的協助,請參閱「安裝應用程式和產生憑證:系統用戶」一文。

要求語法

POST https://graph.facebook.com/<API_VERSION>/<WABA_ID>/subscribed_apps

要求範例

curl -X POST \
'https://graph.facebook.com/v19.0/102289599326934/subscribed_apps' \
-H 'Authorization: Bearer EAAJi...'

回應範例

{
   "success" : true
}

您的應用程式(透過系統用戶存取憑證識別)現在應當能夠接收描述 WhatsApp Business 帳戶變更的 Webhooks 通知。

視乎您想為哪些 WhatsApp Business 帳戶接收 Webhooks 通知,就任何其他帳戶重複此程序。請注意,如果您為您的應用程式訂閱了多個 WhatsApp Business 帳戶的 Webhooks 通知,系統會將所有 Webhooks 通知傳送至您在應用程式管理中心的 Webhooks 產品面板中指定的回呼網址。

如果您想為每個 WhatsApp Business 帳戶分別使用不同的回呼網址,您必須分別為每個 WhatsApp Business 帳戶建立單獨的應用程式,而且各自有著其專屬的回呼網址,然後再使用每個應用程式的系統用戶存取憑證在每個 WhatsApp Business 帳戶上執行查詢。如果您想使用單一應用程式,您可以改為在為每個 WhatsApp Business 帳戶訂閱 Webhooks 時覆寫回呼網址。請參閱「覆寫回呼網址」一文。

取得 WhatsApp Business 帳戶的所有訂閱

如要為 WhatsApp Business 帳戶取得已訂閱 Webhooks 的應用程式清單,請向有關 WhatsApp Business 帳戶的 subscribed_apps 端點傳送 GET 要求:

要求語法

GET https://graph.facebook.com/<API_VERSION>/<WABA_ID>/subscribed_apps

成功的回應會包含訂閱了此 WhatsApp Business 帳戶的應用程式陣列,並且附上每個應用程式的連結、名稱和編號屬性。

要求範例

curl \
'https://graph.facebook.com/v19.0/102289599326934/subscribed_apps' \
-H 'Authorization: Bearer EAAJi...'

回應範例

{
  "data" : [
    {
      "whatsapp_business_api_data" : {
        "id" : "67084...",
        "link" : "https://www.facebook.com/games/?app_id=67084...",
        "name" : "Jaspers Market"
      }
    },
    {
      "whatsapp_business_api_data" : {
        "id" : "52565...",
        "link" : "https://www.facebook.com/games/?app_id=52565...",
        "name" : "Jaspers Fresh Finds"
      }
    }
  ]
}

取消 WhatsApp Business 帳戶訂閱

如要為 WhatsApp Business 帳戶取消應用程式對 Webhooks 的訂閱,請向該 WhatsApp Business 帳戶的 subscribed_apps 端點傳送 DELETE 要求。

要求語法

DELETE https://graph.facebook.com/<API_VERSION>/<WABA_ID>/subscribed_apps

要求範例

curl -X DELETE \
'https://graph.facebook.com/v19.0/102289599326934/subscribed_apps' \
-H 'Authorization: Bearer EAAJi...'

回應範例

{
   "success" : true
}

覆寫回呼網址

請參閱 Webhooks 覆寫

設定通知

您可以設定 Webhooks 來向自己傳送有關已訂閱的 WhatsApp Business 帳戶之變更通知。可以訂閱的通知類型如下:

可用訂閱欄位

可用訂閱欄位

欄位名稱 描述

account_review_update

當 WhatsApp Business 帳戶接受審查時,您會收到通知。

account_update

當 WhatsApp Business 帳戶有所變動時,您會收到通知。這些變動可能包括電話號碼更新、違反政策行為發生,以及 WhatsApp Business 帳戶被停權等。

business_capability_update

當功能有所更新時,您會收到通知。這些更新可能包括變更每個 WhatsApp Business 帳戶可關聯的電話號碼數量上限,或者變更每個電話號碼可發起的對話數量上限。

message_template_status_update

當訊息範本獲批、被拒或被停用時,您會收到通知。

messages

當您的商家收到來自顧客的訊息、您向顧客傳送訊息、訊息已送達至顧客,以及顧客已讀取您的訊息時,您會收到通知。

phone_number_name_update

當與電話號碼關聯的名稱獲批或被拒時,您會收到通知。

phone_number_quality_update

當電話號碼的品質相關狀態有所更新時,您會收到通知。

security

發生以下情況時,您會收到通知:

  • 您要求停用雙重認證驗證碼
  • 雙重認證驗證碼遭停用
  • 雙重認證驗證碼有更新
  • 請參閱 WhatsApp Business 帳戶 Webhooks 參考資料 ,進一步了解各個裝載欄位;以及參閱 WhatsApp 雲端 API Webhooks 參考資料 ,進一步了解您會收到的不同類型 messages 通知。

    如需更多資訊,請參閱 WhatsApp Business 帳戶的 Webhooks 文件。

    Webhooks 格式

    接收的通知會採用以下一般格式:

    {
      "object": "whatsapp_business_account",
      "entry": [
        { // entry object, containing changes
          "changes": [
            { // changes object, containing value
              "value": {
                // value object
              }
            }
          ]
        }
      ]
    }

    查看有關每個欄位的更多詳情:

    範例

    電話號碼更新

    已收到名稱更新

    {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "waba-id",
          "time": 1608243053,
          "changes": [
            {
              "field": "phone_number_name_update",
              "value": {
                "display_phone_number": "16505551111",
                "decision": "APPROVED",
                "requested_verified_name": "WhatsApp",
                "rejection_reason": null
              }
            }
          ]
        }
      ]
    }
    

    已收到品質更新

    {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "waba-id",
          "time": 1608243062,
          "changes": [
            {
              "field": "phone_number_quality_update",
              "value": {
                "display_phone_number": "16505551111",
                "event": "FLAGGED",
                "current_limit": "TIER_10K"
              }
            }
          ]
        }
      ]
    }
    

    WhatsApp Business 帳戶更新

    沙箱編號升級至經驗證帳戶

    {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "whatsapp-business-account-id",
          "time": 1604703058,
          "changes": [
            {
              "field": "account_update",
              "value": {
                "phone_number": "16505551111",
                "event": "VERIFIED_ACCOUNT"
              }
            }
          ]
        }
      ]
    }
    
    

    WhatsApp Business 帳戶已停權

    {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "whatsapp-business-account-id",
          "time": 1604703058,
          "changes": [
            {
              "field": "account_update",
              "value": {
                "event": "DISABLED_UPDATE"
                "ban_info": {
                  "waba_ban_state": ["SCHEDULE_FOR_DISABLE", "DISABLE", "REINSTATE"],
                  "waba_ban_date": "January 31, 2021"
                }
              }
            }
          ]
        }
      ]
    }
    

    已完成 WhatsApp Business 帳戶審查

    {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "whatsapp-business-account-id",
          "time": 1604703141,
          "changes": [
            {
              "field": "account_review_update",
              "value": {
                "decision": "APPROVED"
              }
            }
          ]
        }
      ]
    }
    

    訊息範本更新

    通過審查

    {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "whatsapp-business-account-id",
          "time": 1604703141,
          "changes": [
            {
              "field": "message_template_status_update",
              "value": { 
                  "event": "APPROVED",
                  "message_template_id": 1234567, 
                  "message_template_name": "My message template",
                  "message_template_language": "en-US",
                  "reason": null 
             }
           }
          ]
        }
      ]
    }