テンプレート管理 API
概要
テンプレート管理APIを使用すると、WABAテンプレートの作成、読み取り、更新、削除操作を実行できます。
認証
EngageLab REST APIは、HTTP基本認証を使用して検証を行います。HTTPヘッダーにAuthorizationを追加してください:
Authorization: Basic ${base64_auth_string}
base64_auth_stringは次のように生成されます:base64(dev_key:dev_secret)
- ヘッダー名は「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 | 必須 | テンプレートカテゴリ。 |
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です。
リクエストパラメータ
NULL
リクエスト例
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_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分以内に入力してください。" // {{}}内の変数はテンプレート変数を表します
}
]
}
テンプレートの作成
エンドポイント
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オブジェクト
このオブジェクトはテンプレート内容を記述するために使用されます。テンプレートは「HEADER」、「BODY」、「FOOTER」、「BUTTONS」のコンポーネントに分かれており、typeフィールドを使用して指定します。異なるコンポーネントタイプは異なるパラメータをサポートします。以下を参照してください。
ヘッダーコンポーネント
ヘッダーコンポーネントはオプションです。ヘッダーが不要な場合は、このコンポーネントを設定しないでください。
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
type | String | 必須 | コンポーネントタイプ。値はHEADER |
format | String | 必須 | ヘッダーフォーマット。値:text, image, video, document。対応する値:テキスト、画像、ビデオ、ファイル。 |
text | String | オプション | ヘッダーテキスト内容。format=textの場合は必須。ヘッダーテキスト内容には変数を含めることができますが、1つの変数のみがサポートされます。{{1}}で表されます。 |
example | JSON Object | オプション | ヘッダー例。textに変数が含まれる場合やformatがメディアタイプの場合は必須。例オブジェクトの説明を参照してください。 |
例オブジェクトの説明
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
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 "] |
ボディコンポーネント
ボディコンポーネントは必須であり、ボディ内容を含む必要があります。
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
type | String | 必須 | コンポーネントタイプ。値はBODY |
text | String | 必須 | ボディ内容。最大1024文字。複数の変数をサポートします。変数は{{}}で表され、インデックスは1から始まり、増加します。例:{{1}}、{{2}}。 |
example | JSON Object | オプション | ボディ例。Metaレビュアーがメッセージの適合性を判断するために使用します。例オブジェクトの説明を参照してください。textに変数が含まれる場合は必須です。 |
例オブジェクトの説明
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
body_text | String Array | オプション | textに変数が含まれる場合、このフィールドにすべての変数の置換値を変数インデックスの順序で渡します。例:"body_text": [["var1","var2","var3"]] |
フッターコンポーネント
フッターコンポーネントはオプションです。フッターが不要な場合は、このコンポーネントを設定しないでください。
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
type | String | 必須 | コンポーネントタイプ。値はFOOTER |
text | String | 必須 | フッター内容。プレーンテキストのみ許可され、変数を定義することはできません。 |
ボタンコンポーネント
ボタンコンポーネントはオプションです。ボタンが不要な場合は、このコンポーネントを設定しないでください。
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
type | String | 必須 | コンポーネントタイプ。値はBUTTONS |
buttons | Object Array | 必須 | ボタン情報。ボタンオブジェクトの説明を参照してください。 |
ボタンオブジェクトの説明
パラメータ | タイプ | オプション | 説明 |
---|---|---|---|
type | String | 必須 | ボタンタイプ。値:QUICK_REPLY, URL, PHONE_NUMBER。対応する値:クイック返信、ウェブサイト閲覧、電話番号への発信 |
text | String | 必須 | ボタンのテキスト。変数を含めることはできず、プレーンテキストで最大25文字まで許可されます。 |
url | String | オプション | type=URLの場合に必須。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 "] |
認証コードタイプの特記事項
注意事項
AUTHENTICATIONカテゴリのテンプレートについて:
- ComponentsにHEADERコンポーネントを設定しないでください。
- テンプレート内容のテキストは、テンプレートのlanguageフィールドに基づいて自動的にローカライズされます。
- アプリにリダイレクトするONE_TAPモードの場合、現在はAndroidアプリのみをサポートしており、アプリ内で関連するハンドシェイク処理を実行する必要があります。詳細な使用方法については、 公式ドキュメント - 認証テンプレートを参照してください。
- テンプレート作成時に送信されたパラメータと、作成成功後にWhatsApp側で記録されるフィールドは一致しません。本質的に、WhatsAppはこのカテゴリのテンプレートでBODY、FOOTER、BUTTONSを置き換えます。 テンプレートメッセージ
COPY_CODE 例
送信されたデータ:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
// bodyは必須
"type": "BODY",
"add_security_recommendation": true // セキュリティ推奨説明を追加するかどうか
},
{
// footerは任意
"type": "FOOTER",
"code_expiration_minutes": 2 // 有効期限の表示を追加、範囲[1,90]、追加しない場合はこのフィールドを渡さない
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "OTP",
"otp_type": "copy_code",
"text": "コピーする" // 文字数制限25文字
}
]
}
]
}
WhatsApp側で作成後に実際に取得されたテンプレート内容:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
"type": "BODY",
"text": "{{1}} はあなたの認証コードです。セキュリティ上の理由から、このコードを共有しないでください。",
"example": {
"body_text": [
["123456"]
]
}
},
{
"type": "FOOTER",
"text": "この認証コードは2分後に期限切れになります。"
},
{
"type": "BUTTONS",
"buttons": [{
"type": "URL",
"text": "コードをコピー",
"url": "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp{{1}}",
"example": [
"https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp123456"
]
}]
}
]
}
ONE_TAP 例
送信されたデータ:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
// bodyは必須
"type": "BODY",
"add_security_recommendation": true // セキュリティ推奨説明を追加するかどうか
},
{
// footerは任意
"type": "FOOTER",
"code_expiration_minutes": 2 // 有効期限の表示を追加、範囲[1,90]、追加しない場合はこのフィールドを渡さない
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "OTP",
"otp_type": "one_tap",
"text": "auto1", // 文字数制限25文字
"autofill_text": "auto1", // 文字数制限25文字
"package_name": "ppssd",
"signature_hash": "asds"
}
]
}
]
}
WhatsApp側で作成後に実際に取得されたテンプレート内容:
{
"name": "copycodetmpl",
"language": "zh_CN",
"category": "AUTHENTICATION",
"components": [
{
"type": "BODY",
"text": "{{1}} はあなたの認証コードです。セキュリティ上の理由から、このコードを共有しないでください。",
"example": {
"body_text": [
["123456"]
]
}
},
{
"type": "FOOTER",
"text": "この認証コードは2分後に期限切れになります。"
},
{
"type": "BUTTONS",
"buttons": [{
"type": "URL",
"text": "copy1",
"url": "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP\u0026cta_display_name=auto1\u0026package_name=ppssd\u0026signature_hash=asds\u0026code=otp{{1}}",
"example": ["https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP\u0026cta_display_name=auto1\u0026package_name=ppssd\u0026signature_hash=asds\u0026code=otp123456"]
}]
}
]
}
戻り値のパラメータ
成功時の戻り値
パラメータ | 型 | オプション | 説明 |
---|---|---|---|
template_id | String | 必須 | テンプレートID、成功時に返される |
{
"code": 5002,
"message": "無効なパラメータ。code:100:2388042"
}
テンプレートの更新
APIエンドポイント
PUT https://wa.api.engagelab.cc/v1/templates/{templateId}
リクエスト例
{
"components": [{ // テンプレート内容
"type": "BODY", // コンテンツブロック、現在HEADER/BODY/FOOTER/BUTTONSをサポート
"text": "変数を{{1}}として定義" // 特定のテキスト、bodyがテキストの場合は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": "フッターは変数なしのテキストのみをサポート"
},{
"type": "BUTTONS",
"buttons": [{
"type": "PHONE_NUMBER", // ボタンタイプ、PHONE_NUMBER/URL/QUICK_REPLYをサポート
"text": "これは電話番号です",
"phone_number": "8613800138000"
}]
}]
}
リクエストパラメータ
テンプレート作成用のリクエストパラメータと同じ。
戻り値のパラメータ
成功時の戻り値
パラメータ | 型 | オプション | 説明 |
---|---|---|---|
code | int | 必須 | 戻りコード、固定値0 |
message | String | 必須 | 戻りメッセージ、固定値success |
{
"code": 0,
"message": "success"
}
失敗時の戻り値
パラメータ | 型 | オプション | 説明 |
---|---|---|---|
code | int | 必須 | エラーコード、失敗時に返される |
message | String | 必須 | エラーメッセージ、失敗時に返される |
{
"code": 5002,
"message": "無効なパラメータ。code:100:2593002"
}
テンプレートの削除
APIエンドポイント
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": "何らかのエラーが発生しました"
}
エラーコード
エラーコード | HTTPコード | 説明 |
---|---|---|
1000 | 500 | 内部エラー |
2001 | 401 | EngageLab認証失敗、無効なデータ形式のトークンが提供されていない |
2002 | 401 | EngageLab認証失敗、トークンが期限切れまたは無効化されている |
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 |
言語コード
言語 | コード |
---|---|
アフリカーンス語 | af |
アルバニア語 | sq |
アラビア語 | ar |
アゼルバイジャン語 | az |
ベンガル語 | bn |
ブルガリア語 | bg |
カタルーニャ語 | ca |
中国語 (本土) | zh_CN |
中国語 (香港) | zh_HK |
中国語 (台湾) | zh_TW |
クロアチア語 | hr |
チェコ語 | cs |
デンマーク語 | da |
オランダ語 | nl |
英語 | en |
英語 (UK) | en_GB |
英語 (US) | 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