對話型定價已變更。請參閱定價,瞭解新對話型定價模式的運作方式。

此外,自 2023 年 7 月 1 日起,metric_types 的能見度已變更。如需詳細資訊,請參閱對話分析資料表

建立及管理範本

驗證範本

從 2024 年 4 月 1 日開始,任何現有驗證範本若不是具有一次性密碼按鈕的驗證範本,都將無法傳送、編輯或申訴。

驗證範本將於 2024 年 7 月 1 日在印度提供使用。


使用雲端 API(Meta 託管)或內部部署 API 傳送範本訊息時,系統會使用範本。雲端 API 使用機器學習來審核範本和變數參數,可保護雲端 API 服務的安全性和完整性。當雲端 API 審核範本和變數文字時,不會與 WhatsApp 分享任何資訊。

您可以使用 Business Management API 或 WhatsApp 企業管理平台建立範本。WhatsApp Business 帳號可擁有的範本數量由其母商家決定。若母商家尚未認證,其每個 WhatsApp Business 帳號僅限擁有 250 個範本。但若母商家已通過認證,且其至少一個 WhatsApp Business 帳號具有已核准顯示名稱的商家電話號碼,其每個 WhatsApp Business 帳號最多可擁有 6,000 個範本。

準備工作

必備資料:

  • 連結商家的系統用戶存取權杖
  • 商家的 WhatsApp Business 帳號編號
  • 要包含在媒體範本中的任何文件、圖像或影片檔案的媒體資產用戶名稱。若要取得媒體資產用戶名稱,您必須使用可續傳的上傳 API 上傳媒體資產。

限制

  • 訊息範本名稱欄位不能超過 512 個字元。
  • 訊息範本內容欄位不能超過 1024 個字元。
  • 只有在範本處於「已核准」、「已拒絕」或「已暫停」狀態時,才能對其進行編輯。您每天可以編輯一次範本,每個月最多可以編輯 10 次。
  • WhatsApp Business 帳號每小時只能建立 100 個訊息範本。
  • 範本若是由 4 個以上按鈕,或是一個快速回覆按鈕和一個以上其他類型按鈕所組成,您將無法在 WhatsApp 桌面版用戶端查看。收到這些範本訊息的 WhatsApp 用戶將收到提示,告知改為在手機上查看。

本地化

您可以在建立範本時,新增特定語言的訊息範本。這些範本會計入您的限制中。提供翻譯時,請保持一致性。請參閱為什麼在我的回呼中會顯示「結構無法使用」錯誤?使用說明文章,以瞭解詳情。

建立範本

請傳送 POST 要求至 WhatsApp Business 帳號 > 訊息範本端點建立範本。

要求語法

POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates

貼文內容

{
  "name": "<NAME>",
  "category": "<CATEGORY>",
  "allow_category_change": <ALLOW_CATEGORY_CHANGE>,
  "language": "<LANGUAGE>",
  "components": [<COMPONENTS>]
}

內文屬性

預留位置說明範例值

<NAME>

字串

必要項目。


範本名稱。

最多 512 個字元。

order_confirmation

<CATEGORY>

列舉

必要項目。


範本類別。

請參閱下文的範本類別

UTILITY

<ALLOW_CATEGORY_CHANGE>

布林值

選用項目。


設為 true,允許我們自動指派類別。如果省略,範本可能因分類錯誤而遭拒。

true

<LANGUAGE>

列舉

必要項目。


範本語言和地區設定代碼

en_US

<LIBRARY_TEMPLATE_NAME>

字串

選用項目。


「公用範本庫」範本的確切名稱。

瞭解如何使用公用範本庫來建立範本

delivery_update_1

<LIBRARY_TEMPLATE_BUTTON_INPUTS>

物件陣列

選用項目。


範本中使用的商家網站和/或電話號碼。


注意:對於包含按鈕的公用範本,這不是選用屬性。

瞭解如何使用公用範本庫來建立範本

“[ {'type': 'URL', 'url': {'base_url' : 'https://www.example.com/{{1}}', 'url_suffix_example' : 'https://www.example.com/demo'}}, {type: 'PHONE_NUMBER', 'phone_number': '+16315551010'} ]"

<COMPONENTS>

物件陣列

必要項目。


組成範本的元件。

請參閱下文的範本元件

請參閱下文的範本元件

範本類別

必須使用下列類別其中之一將範本分類。類別會影響定價,且建立範本的同時將驗證您指定的類別。

  • AUTHENTICATION
  • MARKETING
  • UTILITY

請參閱我們的範本類別文件,以決定建立範本時要使用的類別。

範本元件

範本由各種文字、影音素材和互動式元件組成,具體取決於您的商家需求。請參閱範本元件文件,瞭解所有可能的元件清單及其必備條件以及範例和範例查詢。

建立範本時,可以透過將元件物件的陣列指派給要求本文中的 components 屬性來定義其元件。

例如,以下是一個陣列,內容包含一個具有兩個變數和範例值的內文主體元件、一個電話號碼按鈕元件和一個網址按鈕元件:

[
  {
    "type": "BODY",
    "text": "Thank you for your order, {{1}}! Your confirmation number is {{2}}. If you have any questions, please use the buttons below to contact support. Thank you for being a customer!",
    "example": {
      "body_text": [
        [
          "Pablo","860198-230332"
        ]
      ]
    }
  },
  {
    "type": "BUTTONS",
    "buttons": [
      {
        "type": "PHONE_NUMBER",
        "text": "Call",
        "phone_number": "15550051310"
      },
      {
        "type": "URL",
        "text": "Contact Support",
        "url": "https://www.luckyshrub.com/support"
      }
    ]
  }
]

請參閱範本元件文件,瞭解所有可能的元件清單及其必備條件以及範例和範例查詢。

請注意,分類為 AUTHENTICATION 的範本具有不重複的元件必備條件。請參閱驗證範本

類別驗證

傳送範本建立要求時,我們會立即使用範本分類指南驗證其類別。

  • 如果我們同意您指定的類別,我們將建立範本並將其 status 設為 PENDING。接著對範本進行範本審查
  • 如果我們不同意您的指定,我們會建立範本,但將其 status 設為 REJECTED,然後觸發訊息範本狀態更新 Webhook,並將 reason 設為 INCORRECT_CATEGORY。建議您偵聽此 Webhook 以識別遭拒的範本,或要求新建立的範本上的 rejected_reason 欄位,欄位的值將是 TAG_CONTENT_MISMATCH

在這兩種情況下,範本的初始狀態都會作為 API 回應的一部分傳回。

如果您的範本狀態已作為類別驗證的一部分設定為 REJECTED,則您有幾個選擇:

自動分類

您可以在要求中包含 allow_category_change 屬性,讓我們可以根據範本的內容和範本分類指南自動指定類別。這樣做可避免因分類錯誤立即將您的範本狀態設定為 REJECTED

注意,自動分類只能在建立範本時使用。

範本審查

擁有 PENDING 狀態的範本表示正在進行範本審查。我們會審查每個新建立或編輯的範本的內容,確保其符合我們的內容指南和政策。根據審查結果,我們會自動將其狀態變更為 APPROVEDREJECTED,這會觸發 訊息範本狀​​態更新 Webhook。

範本狀態

根據類別驗證和範本審查的結果,我們會將您範本的 status 設定或變更為下列其中一個值:

  • APPROVED — 此範本已通過範本審查並獲得核准,現在可以在範本訊息中傳送
  • PENDING — 範本已通過類別驗證,正在進行範本審查。
  • REJECTED — 範本未通過類別驗證或範本審查。您可要求範本上的 rejected_reason 欄位,以取得原因。

請參閱 WhatsApp 訊息範本端點參考資料,以取得所有可能的欄位和狀態。

回應

成功後,API 會使用新建的範本編號、狀態和類別回覆。有三種可能的結果:

  • 我們同意您指定的類別,範本現正進行範本審查(statusPENDING)。
  • 我們不同意您指定的類別(statusREJECTED
  • 我們自動核准範本(statusAPPROVED)。這只適用於含一次性密碼按鈕的驗證範本
{
    "id": "<ID>",
    "status": "<STATUS>",
    "category": "<CATEGORY>"
}

回應屬性

預留位置說明範例值

<ID>

範本編號。

572279198452421

<STATUS>

範本狀態

PENDING

<CATEGORY>

您指定或我們指定範本類別

MARKETING

要求範例

這是建立季節性促銷活動範本的要求範例,由下列元件組成:

  • 文字標頭
  • 內文主體
  • 頁尾
  • 兩個快速回覆按鈕

如需其他範例,請參閱範例要求

curl 'https://graph.facebook.com/v19.0/102290129340398/message_templates' \
-H 'Authorization: Bearer EAAJB...' \
-H 'Content-Type: application/json' \
-d '
{
  "name": "seasonal_promotion",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Our {{1}} is on!",
      "example": {
        "header_text": [
          "Summer Sale"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
      "example": {
        "body_text": [
          [
            "the end of August","25OFF","25%"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "Use the buttons below to manage your marketing subscriptions"
    },
    {
      "type":"BUTTONS",
      "buttons": [
        {
          "type": "QUICK_REPLY",
          "text": "Unsubscribe from Promos"
        },
        {
          "type":"QUICK_REPLY",
          "text": "Unsubscribe from All"
        }
      ]
    }
  ]
}'

回應範例

{
    "id": "572279198452421",
    "status": "PENDING",
    "category": "MARKETING"
}

傳送範本

使用雲端 API內部部署 API 在範本訊息中傳送範本。

行銷範本的最佳作法

「選擇不接收行銷訊息」按鈕

建議您在分類為 MARKETING 的範本中新增「快速回覆」按鈕,讓顧客可以輕鬆選擇不接收行銷訊息。如此可讓您的顧客選擇不接收行銷訊息,而不需封鎖您的商家。您因此可以更快速地擴展傳訊數量。請參閱本文章,詳細瞭解在行銷範本中新增選擇不接收按鈕的好處。

商家必須採取必要措施,停止傳送行銷訊息給選擇不接收行銷訊息的顧客。否則,將會對您的封鎖率和品質評分產生負面影響。

取得範本

傳送 GET 要求至 WhatsApp Business 帳號 > 訊息範本端點,可取得 WhatsApp Business 帳號擁有的範本清單。

要求語法

GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates
  ?fields=<FIELDS>
  &limit=<LIMIT>

查詢字串參數

預留位置說明範例值

<FIELDS>

逗號分隔的清單

選用項目。


要傳回的範本欄位清單。

name,status

<LIMIT>

整數

選用項目。


要在每頁結果中傳回的最大範本數量。

10

要求範例

curl 'https://graph.facebook.com/v19.0/102290129340398/message_templates?fields=name,status&limit=3' \
-H 'Authorization: Bearer EAAJB...'

回應範例

{
  "data": [
    {
      "name": "seasonal_promotion_text_only",
      "status": "APPROVED",
      "id": "564750795574598"
    },
    {
      "name": "seasonal_promotion_video",
      "status": "PENDING",
      "id": "1252715608684590"
    },
    {
      "name": "seasonal_promotion_image_header",
      "status": "PENDING",
      "id": "1372429296936443"
    }
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MgZDZD"
    },
    "next": "https://graph.facebook.com/v19.0/102290129340398/message_templates?fields=name%2Cstatus&limit=3&after=MgZDZD"
  }
}

要求範例(已拒絕的範本)

透過在要求中包含欄位和所需值,您可以僅傳回具有特定欄位值的範本。例如,包含 status=REJECTED 可以僅取得已拒絕的範本。

curl 'https://graph.facebook.com/v19.0/104996122399160/message_templates?fields=name,status&status=REJECTED' \
-H 'Authorization: Bearer EAAJB...'

回應範例

{
  "data": [
    {
      "name": "seasonal_promotion_text_only_v4",
      "status": "REJECTED",
      "id": "564750795574598"
    },
    {
      "name": "discount_qualifier",
      "status": "REJECTED",
      "id": "163917509772674"
    },
    {
      "name": "limited_time_offer_tuscan_getaway_2023",
      "status": "REJECTED",
      "id": "202389039167147"
    },
    {
      "name": "2023_mar_promo_2",
      "status": "REJECTED",
      "id": "1116034925734553"
    },
    {
      "name": "2023_mar_promo",
      "status": "REJECTED",
      "id": "952600926095321"
    }
  ]
}

擷取範本命名空間

必須要有訊息範本命名空間,才能使用訊息範本來傳送訊息。

若要取得範本的命名空間,請傳送 GET 要求至 /{whatsapp-business-account-ID} 端點,並包含 message_template_namespace 欄位。

要求範例

格式化使讀取更為方便。
curl -i -X GET "https://graph.facebook.com/v19.0/{whatsapp-business-account-ID}
  ?fields=message_template_namespace
  &access_token={system-user-access-token}"

如果成功,系統會傳回 JSON 物件以及 WhatsApp Business 帳號編號和命名空間:

{
    "id": "1972385232742141",
    "message_template_namespace": "12abcdefghijk_34lmnop" 
}

編輯範本

請傳送 POST 要求至 WhatsApp 訊息範本端點編輯範本。您也可以使用 WhatsApp 管理工具 > 帳號工具 > 訊息範本面板手動編輯範本。

限制

  • 只能編輯狀態為 APPROVEDREJECTEDPAUSED 的範本。
  • 只能編輯範本的 categorycomponents
  • 無法編輯已核准範本的 category
  • 已核准的範本在 30 天的時限內最多可以編輯 10 次,或在 24 小時的時限內可以編輯 1 次。已拒絕或已暫停的範本可以無限次編輯。
  • 已核准或已暫停的範本在編輯之後,除非未通過範本審查,否則將自動獲得核准。

要求語法

POST /<WHATSAPP_MESSAGE_TEMPLATE_ID>

張貼內容

{
  "category": "<CATEGORY>",
  "components": [<COMPONENTS>]
}

屬性

預留位置說明範例值

<CATEGORY>

字串

若省略元件屬性,則為必要項目。


範本類別。

AUTHENTICATION

<COMPONENTS>

陣列

若省略類別屬性,則為必要項目。


範本元件物件的陣列。

請參閱下文的要求範例(編輯元件)

要求範例(編輯元件)

此要求範例為同時包含行銷和公用內容的範本本文,以僅包含行銷內容。

curl 'https://graph.facebook.com/v19.0/564750795574598' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Our {{1}} is on!",
      "example": {
        "header_text": [
          "Spring Sale"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
      "example": {
        "body_text": [
          [
            "the end of April",
            "25OFF",
            "25%"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "Use the buttons below to manage your marketing subscriptions"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "QUICK_REPLY",
          "text": "Unsubcribe from Promos"
        },
        {
          "type": "QUICK_REPLY",
          "text": "Unsubscribe from All"
        }
      ]
    }
  ]
}'

要求範例(僅編輯類別)

將範本的類別從 UTILITY 變更為 MARKETING 的要求範例。

curl 'https://graph.facebook.com/v19.0/1252715608684590' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
  "category": "MARKETING"
}'

回應範例

成功後的回應範例。

{
  "success": true
}

刪除範本

請使用 WhatsApp Business 帳號 > 訊息範本端點依名稱或依編號刪除範本。

備註

  • 如果您刪除已在範本訊息中傳送但尚未送達的範本(例如,因為顧客的電話已關機),則該範本的狀態將設為 PENDING_DELETION,我們將嘗試在 30 天內投遞該訊息。在此時間之後,您將收到「結構無法使用」的錯誤,且顧客不會收到訊息。
  • 已刪除之已核准範本的名稱會有 30 天無法再次使用。

依名稱刪除

依名稱刪除範本會刪除與該名稱相符的所有範本(這表示名稱相同但語言不同的範本也將遭刪除)。

要求語法

DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates
  ?name=<NAME>

要求範例

curl -X DELETE 'https://graph.facebook.com/v16.0/102290129340398/message_templates?name=order_confirmation' \
-H 'Authorization: Bearer EAAJB...'

回應範例

{
  "success": true
}

依編號刪除

若要依編號刪除範本,請在要求中包含範本的編號及其名稱;只有具備相符範本編號的範本才會遭刪除。

要求語法

DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates
  ?hsm_id=<HSM_ID>,
  &name=<NAME>

要求範例

curl -X DELETE 'https://graph.facebook.com/v19.0/102290129340398/message_templates?hsm_id=1407680676729941&name=order_confirmation' \
-H 'Authorization: Bearer EAAJB...'

回應範例

{
  "success": true
}