範本管理 API
概述
使用範本管理 API 可以對 WABA 的範本進行增刪改查操作。
調用驗證
EngageLab REST API 採用 HTTP 基本認證 的驗證方式:HTTP Header(頭)裏加 Authorization:
Authorization: Basic ${base64_auth_string}
上述 base64_auth_string 的生成算法為:base64(dev_key:dev_secret)
- Header 名稱是 "Authorization",值是 base64 轉換過的 "username:password" 對(中間有個冒號)。
- 在 WhatsApp API 的場景裏,username 是 DevKey,password 是 DevSecret。請在控製台-配置管理- API 金鑰 頁面獲取。
獲取範本列表
調用地址
GET https://wa.api.engagelab.cc/v1/templates
请求参数
| 参数 | 类型 | 选项 | 说明 |
|---|---|---|---|
| name | String | 選填 | 範本名稱,注意該字段使用的是模糊匹配 |
| language_code | String | 選填 | 範本語言,參見 語言代碼 |
| category | String | 選填 | 範本類別。 ● AUTHENTICATION:驗證碼 ● MARKETING:市場營銷 ● UTILITY:服務通知 |
| status | String | 選填 | 範本狀態: 開發者需要關注的主要是 APPROVED/PENDING/REJECTED/DISABLED |
返回參數
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| id | String | 必填 | 範本 ID |
| name | String | 必填 | 範本名字 |
| language | String | 必填 | 範本語言,參見 語言代碼 。 |
| category | String | 必填 | 範本類別。 註意:範本類別最晚在 2023 年 5 月 1 日更新為: |
| components | Object Array | 必填 | 範本內容的組件,參考 創建範本中的 components 對象 |
| status | String | 必填 | 範本狀態: 開發者需要關注的主要是 APPROVED/PENDING/REJECTED/DISABLED |
返回示例
// 一個 json 數組,數組中每一個對象都是模板信息
[
{
"id": "406979728071589", // 模板id
"name": "code", // 模板名稱
"language": "zh_CN", // 模板語言
"status": "APPROVED", // 狀態,APPROVED為審核通過可用
"category": "OTP", // 類別,目前支持 OTP/TRANSACTIONAL/MARKETING
"components": [ // 模板具體內容,可包含 HEADER/BODY/FOOTER/BUTTON
{
"type": "HEADER",
"format": "text", // 類型,支持 text/image/location/video/document,默認TEXT
"text": "註冊驗證碼" // 文本內容,當format為text時,為必選項
},
{
"type": "BODY",
"text": "您的驗證碼是 {{1}},請於 5 分鐘內輸入。" // 兩個大括號{{}}括起來的表示模板變量
}
]
},
......
]
查詢範本資訊
調用地址
GET https://wa.api.engagelab.cc/v1//{template_id}
其中 {template_id} 為需要查詢範本ID。
請求參數
無
請求示例
GET https://wa.api.engagelab.cc/v1/templates/406979728071589
返回參數
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| id | String | 必填 | 範本 ID |
| name | String | 必填 | 範本名稱 |
| language | String | 必填 | 範本語言,參見 語言代碼 。 |
| category | String | 必填 | 範本類別。 注意:範本類別最晚在 2023 年 5 月 1 日更新為: |
| components | Object Array | 必填 | 範本內容的組件,參考 建立範本中的 components 物件 |
| status | String | 必填 | 範本狀態: APPROVED, IN_APPEAL, PENDING, REJECTED, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED |
返回示例
{
"id": "406979728071589", // 範本id
"name": "code", // 範本名稱
"language": "zh_TW", // 範本語言
"status": "APPROVED", // 狀態,APPROVED為審核通過可用
"category": "OTP", // 類別,目前支持 OTP/TRANSACTIONAL/MARKETING
"components": [ // 範本具體內容,可包含 HEADER/BODY/FOOTER/BUTTON
{
"type": "HEADER",
"format": "text", // 類型,支持 text/image/location/video/document,默認為TEXT
"text": "註冊驗證碼" // 文本內容,當format為text時,為必選項
},
{
"type": "BODY",
"text": "您的驗證碼是 {{1}},請於 5 分鐘內輸入。" // 兩個大括號{{}}括起來的表示範本變數
}
]
}
創建範本
調用地址
POST https://wa.api.engagelab.cc/v1/templates
調用示例
{
"name": "template_name", // 範本名稱,允許同名範本,僅支援小寫字母及數字及下劃線
"language": "zh_CN", // 範本語言,同名範本下不允許同語言範本
"category": "OTP", // 類別,目前支援 OTP/TRANSACTIONAL/MARKETING
"components": [
{ // 範本內容
"type": "BODY", // 內容塊,目前支援 HEADER/BODY/FOOTER/BUTTONS
"text": "define var as {{1}}" // 具體文本,當body為text時不需要傳format字段
"example": {
"body_text": [
[
"var1"
]
]
}
},
{
"type": "HEADER",
"format": "image", // 內容類型,支援 text/image/video/document/location
"example": {
"header_handle": [
"https://jiguang.cn/demopic.jpg"
]
}
},
{
"type": "FOOTER",
"text": "footer only support text without variable"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER", // 按鈕類型,支援 PHONE_NUMBER/URL/QUICK_REPLY
"text": "this is a phone number",
"phone_number": "8613800138000"
}
]
}
]
}
請求參數
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| name | String | 必填 | 模版名字,僅支援小寫字母、數字及下劃線,不超過 512 個字符。 |
| language | String | 必填 | 模版語言,參見 語言代碼 。 |
| category | String | 必填 | 模版類別。 註意:範本類別最晚在 2023 年 5 月 1 日更新為: |
| components | Object Array | 必填 | 描述範本內容的組件,參考 components 對象 說明;註意必須包含 type=BODY 的 components。 |
components 對象
本對象用於描述範本內容。範本分為「頁眉 HEADER」「正文 BODY」「頁腳 FOOTER」「按鈕 BUTTONS」幾個組件,使用 type 來指定,不同的組件類型支援的參數不同,如下:
header 頁眉組件
header 組件整體是可選的,如果不需要設定頁眉,請不要設定此組件
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| type | String | 必填 | 組件類型,取值 HEADER |
| format | String | 必填 | 頁眉格式,取值:text、image、video、document,對應著文本、圖片、視訊、文件。 |
| text | String | 可選 | 頁眉文本內容,當 format=text 時需設定此字段內容。頁眉文本內容中可以設定變數,但僅支援設定 1 個變數,用 {{1}} 進行表示。 |
| example | JSON Object | 可選 | 頁眉示例,當 text 包含變數或 format 為媒體類型時,此字段必填。參考 example 對象說明 |
example 對象說明
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| header_handle | String Array | 可選 | 當 format 為 image、video、document 時,對此字段傳入對應類型的媒體的 url,且 url 能被訪問,否則模版審核可能被拒絕。 例如:"header_handle": [" https://jiguang.cn/demopic.jpg"] |
| header_text | String Array | 可選 | 當 format 為 text 且包含變數時,對此字段傳入該變數的替換值。例如:"header_text": ["var1"] |
| header_url | String Array | 可選 | 與header_handle的用法一緻,註意此字段在 WhatsApp 未來的版本中將不再支援,盡量避免使用。 例如:"header_url": [" https://jiguang.cn/demopic.jpg"] |
body 正文組件
body 組件是必填的,必須設定正文內容。
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| type | String | 必填 | 組件類型,取值 BODY |
| text | String | 必填 | 正文內容,最長不超過 1024 個字符,支援設定多個變數,變數由兩個大括號加變數序號組成,序號序號需要從 1 開始,保持遞增,如 {{1}} 和 {{2}} 。 |
| example | JSON Object | 可選 | 正文示例,Meta 審核人員將根據示例判斷你的訊息合規性。參考 example 對象說明,當 text 包含變數時,此字段必填。 |
example 對象說明
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| body_text | String Array | 可選 | 當 text 包含變數時,需要對此字段傳入所有變數的替換值,按變數序號的順序依次填寫。例如:"body_text": [["var1","var2","var3"]] |
footer 頁腳組件
footer 組件整體是可選的,如果不需要設定頁腳,請不要設定此組件
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| type | String | 必填 | 組件類型,取值 FOOTER |
| text | String | 必填 | 頁腳內容,隻能設定純文本內容,不能定義變數。 |
buttons 按鈕組件
buttons 組件整體是可選的,如果不需要設定按鈕,請不要設定此組件
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| type | String | 必填 | 組件類型,取值 BUTTONS |
| buttons | Object Array | 必填 | 按鈕信息,參考 buttons 對象說明。 |
buttons 對象說明
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| type | String | 必填 | 按鈕類型,取值: QUICK_REPLY、URL、PHONE_NUMBER,對應:快速回複、瀏覽網站、撥打電話號碼 |
| text | String | 必填 | 按鈕上的文字說明,不能包含變數,為純文本,最長 25 個字符 |
| url | String | 可選 | 當 type=URL 時必填,可以在網址的結尾設定變數,且僅支援設定 1 個變數,用 {{1}} 進行表示。 |
| phone_number | String | 可選 | 當 type=PHONE_NUMBER 時必填,不能包含變數,內容為包含國際區號的電話號碼。 |
| example | String Array | 可選 | 當 type=QUICK_REPLY 和 type=URL 時必填 例如:"example": [" https://www.website.com/dynamic-url-example"] |
返回參數
成功返回
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| template_id | String | 必填 | 範本 ID,成功時返回 |
{
"template_id": "1275172986566180" // 範本id
}
失敗返回
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| code | int | 必填 | 錯誤碼,失敗時返回 |
| message | String | 必填 | 錯誤信息,失敗時返回 |
{
"code": 5002,
"message": "Invalid parameter. code:100:2388042"
}
更新範本
調用地址
PUT https://wa.api.engagelab.cc/v1/templates/{templateId}
調用示例
{
"components": [{ // 範本內容
"type": "BODY", // 內容塊,目前支援 HEADER/BODY/FOOTER/BUTTONS
"text": "define var as {{1}}" // 具體文本,當body為text時不需要傳format字段
"example": {
"body_text": [["var1"]]
}
},{
"type": "HEADER",
"format": "image", // 內容類型,支援 text/image/video/document/location
"example": {
"header_url": ["https://jiguang.cn/demopic.jpg"]
}
},{
"type": "FOOTER",
"text": "footer only support text without variable"
},{
"type": "BUTTONS",
"buttons": [{
"type": "PHONE_NUMBER", // 按鈕類型,支援 PHONE_NUMBER/URL/QUICK_REPLY
"text": "this is a phone number",
"phone_number": "8613800138000"
}]
}]
}
請求參數
同創建模版接口的 請求參數。
返回參數
成功返回
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| code | int | 必填 | 返回碼,固定為 0 |
| message | String | 必填 | 返回信息,固定為success |
{
"code": 0,
"message": "success"
}
失敗返回
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| code | int | 必填 | 錯誤碼,失敗時返回 |
| message | String | 必填 | 錯誤信息,失敗時返回 |
{
"code": 5002,
"message": "Invalid parameter. code:100:2593002"
}
刪除範本
調用地址
DELETE https://wa.api.engagelab.cc/v1/templates/{template_name}
註意:此處傳遞的是範本名稱並非範本 ID,將刪除該範本名稱的所有語言的範本內容
返回參數
成功返回
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| code | int | 必填 | 返回碼,固定為 0 |
| message | String | 必填 | 返回信息,固定為success |
{
"code": 0,
"message": "success"
}
失敗返回
| 參數 | 類型 | 選項 | 說明 |
|---|---|---|---|
| code | int | 必填 | 錯誤碼,失敗時返回 |
| message | String | 必填 | 錯誤信息,失敗時返回 |
{
"code": 2004,
"message": "something error"
}
錯誤碼
| 錯誤碼 | http code | 說明 |
|---|---|---|
| 1000 | 500 | 內部錯誤 |
| 2001 | 401 | EngageLab 側鑒權失敗,未攜帶有效數據格式的 token |
| 2002 | 401 | EngageLab 側鑒權失敗,token已過期或已被禁用 |
| 2003 | 400 | WhatsApp 側鑒權失敗,請聯係 EngageLab 客服處理 |
| 2004 | 403 | 無調用此 API 的權限 |
| 3001 | 400 | 請求參數格式無效,請檢查是否採用 JSON 格式 |
| 3002 | 400 | 請求參數有誤,請檢查請求參數是否符合要求 |
| 3003 | 400 | 請求參數有誤,相關業務校驗失敗 |
| 4001 | 400 | 範本不存在 |
| 5002 | 400 | 範本請求在 Meta 處理失敗,詳情參考 message 字段的錯誤描述 |
註釋
媒體訊息格式要求
| 媒體類型 | 支援的格式類型 Content-Type | 大小限製 |
|---|---|---|
| image | image/jpeg, image/png,不支援透明背景 | 5 MB |
| video | video/mp4 | 16MB |
| document | 僅支援 PDF 格式 | 100 MB |
語言代碼
| 語言 | Code |
|---|---|
| 南非荷蘭文 | af |
| 阿爾巴尼亞文 | sq |
| 阿拉伯文 | ar |
| 亞塞拜然文 | az |
| 孟加拉文 | bn |
| 保加利亞文 | bg |
| 加泰隆尼亞文 | ca |
| 中文(中國大陸) | zh_CN |
| 中文(中國香港) | zh_HK |
| 中文(中國台灣) | zh_TW |
| 克羅埃西亞文 | hr |
| 捷克文 | cs |
| 丹麥文 | da |
| 荷蘭文 | nl |
| 英文 | en |
| 英文(英國) | en_GB |
| 英文(美國) | en_US |
| 愛沙尼亞文 | et |
| 菲律賓文 | fil |
| 芬蘭文 | fi |
| 法文 | fr |
| 格魯吉亞文 | ka |
| 德文 | de |
| 希臘文 | el |
| 古吉拉特文 | gu |
| 豪沙文 | ha |
| 希伯來文 | he |
| 印度文 | hi |
| 匈牙利文 | hu |
| 印尼文 | id |
| 愛爾蘭文 | ga |
| 義大利文 | it |
| 日文 | ja |
| 康納達文 | kn |
| 哈薩克文 | kk |
| 盧安達文 | rw_RW |
| 韓文 | ko |
| 吉爾吉斯斯坦文 | ky_KG |
| 寮文 | lo |
| 拉脫維亞文 | lv |
| 立陶宛文 | lt |
| 馬其頓文 | mk |
| 馬來文 | ms |
| 馬拉雅拉姆文 | ml |
| 馬拉提文 | mr |
| 挪威文 | nb |
| 波斯文 | fa |
| 波蘭文 | pl |
| 葡萄牙文(巴西) | pt_BR |
| 葡萄牙文(葡萄牙) | pt_PT |
| 旁遮普文 | pa |
| 羅馬尼亞文 | ro |
| 俄羅斯文 | ru |
| 塞爾維亞文 | sr |
| 斯洛伐克文 | sk |
| 斯洛維尼亞文 | sl |
| 西班牙文 | es |
| 西班牙文(阿根廷) | es_AR |
| 西班牙文(西班牙) | es_ES |
| 西班牙文(墨西哥) | es_MX |
| 斯瓦西里文 | sw |
| 瑞典文 | sv |
| 坦米爾文 | ta |
| 特拉古文 | te |
| 泰文 | th |
| 土耳其文 | tr |
| 烏克蘭文 | uk |
| 晤魯都文 | ur |
| 烏茲別克文 | uz |
| 越南文 | vi |
| 祖魯文 | zu |
相關語言和對應代碼的對應關係,請下載本文件查看:
範本語言代碼.xlsx








