メッセージテンプレート

メッセージテンプレートは、マーケティング、ユーティリティ、認証のスレッドを開くために必要です。こうしたスレッドには、顧客ケアメッセージや予約リマインダー、支払いや配送の最新情報、アラートなどがあります。

要件

  • メッセージテンプレートを使ってスレッドを開く前に、そのメッセージテンプレートの承認を得る必要があります。詳しくはこちら。
  • 顧客とのマーケティング、ユーティリティ、認証のスレッドを開くには、顧客がビジネスからのメッセージの受信をオプトインしている必要があります。詳しくはこちら。

サポートされているテンプレートカテゴリ

カテゴリをご覧ください。

翻訳

メッセージテンプレートを送信する際には、languageフィールドを使って言語を指定する必要があります。使用するすべての翻訳に関して、事業者側が責任を負います。

サポートされている言語

サポートされている言語

メッセージテンプレートでサポートされている言語を以下に示します。

言語コード

アフリカーンス語

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

ドイツ語

de

ギリシャ語

el

グジャラート語

gu

ハウサ語

ha

ヘブライ語

he

ヒンディー語

hi

ハンガリー語

hu

インドネシア語

id

アイルランド語

ga

イタリア語

it

日本語

ja

カンナダ語

kn

カザフ語

kk

韓国語

ko

ラオ語

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

言語パック

メッセージテンプレートは、言語パックに保管されます。言語パックとは、特定の言語やロケールのメッセージテンプレート要素のバンドルです。ある言語またはロケールに対して少なくとも1つの翻訳をビジネスでサポートする場合、その言語またはロケール用のパックが作成されます。

メッセージテンプレートのネームスペースは、特定のビジネスのための言語パックのバンドルです。

言語ポリシーオプション

language: policyフィールドをdeterministic (デフォルト値)に設定してメッセージテンプレートを送信すると、WhatsAppはメッセージテンプレートを要求されたとおりの言語とロケールで配信します。次にデバイスが、その特定の言語パックをサーバー上でクエリします。

このメッセージがデバイスに配信されると、デバイスは以下を実行します。

  • ポリシー/コードチェック - "policy": "deterministic""code": "en"が指定されている場合、キャッシュされたenパックがデバイスに存在するかどうかを調べます。
    • 存在する場合は、エレメントチェックに進みます。
    • 存在しない場合は、enパックがサーバー上に存在するかどうかを調べます。
      • 存在する場合は、ローカルキャッシュを更新してエレメントチェックに進みます。
      • 存在しない場合は、エラーをログに記録します。サーバーはWebhookを介してstructure_unavailableエラーを返し、デバイスにメッセージは表示されません。

  • エレメントチェック - "element": "hello_world"エレメントが存在するかどうかを調べます。
    • 存在する場合は、パラメーターをアンパックし、デバイスにメッセージを表示します。
    • 存在しない場合は
      • 言語パックがローカルキャッシュから取得されたものである場合は、最新のenパックをサーバーからダウンロードして、エレメントチェックを繰り返します。
      • 言語パックが最近サーバーからダウンロードされたものである場合は、エラーをログに記録します。サーバーはWebhookを介してstructure_unavailableエラーを返し、デバイスにメッセージは表示されません。

デバイス上の言語/ロケール設定は完全に無視されます。

deterministicポリシーを使用する場合、リクエストする対象が存在しないという問題が発生する可能性があります。次の点を確認します。

  • ネームスペースが正しい
  • エレメント名が正しい
  • そのエレメントに対する言語/ロケールの翻訳が存在する
  • 送信されるパラメーターの数が、メッセージテンプレートで指定されている数と一致する

ローカリゼーション

メッセージテンプレートでは、デバイスのロケール設定に応じてメッセージをローカライズする、すぐに利用可能なローカリゼーションサポートが提供されています。

ローカライズ可能なパラメーター

テンプレートには、メッセージに動的に組み込まれるパラメーターが含まれています。このドキュメントの使用例では、メッセージテンプレートは次のようになります。

"You made a purchase for {{1}} using a credit card ending in {{2}}."

"namespace": "cdb2df51_9816_c754_c5a4_64cdabdcad3e"および"element_name": "purchase_with_credit_card"の場合、リストの最初の値がテンプレートメッセージ内の{{1}}変数と置き換えられ、リストの2つ目の値が{{2}}変数と置き換えられます。

ペイロードに渡されるパラメーターの数は、templateオブジェクト内のパラメーターの数と一致しなければなりません。一致しない場合、メッセージテンプレートの表示に問題があったことを通知するコールバックが返されます。

これらのパラメーターの一部(date_timecurrencyなど)はローカライズ可能であり、カスタマーの言語およびロケールの設定に合わせて表示できます。デバイスがパラメーターのローカライズに失敗すると、デフォルト値としてfallback_valueが使われます。

fallback_valueに加えてさらに通貨と日付を指定することが必要な場合は、currencyオブジェクトとdate_timeオブジェクトを使います。その場合、クライアントはできる限り最適な方法で該当データをローカライズし、データをローカライズできない場合にのみ、デフォルトのfallback_valueが使われます。

以下の表にlocalizable_paramsオプションを示します。

パラメーター

名前説明

fallback_value

型: 文字列

必須。

ローカライズが失敗した場合のデフォルトテキスト。すべてのローカリゼーションパラメーターにはフォールバック値が必要です。テキストを指定する場合に必要なのは、フォールバック値だけです。

currency

型: currencyオブジェクト

任意。

currencyオブジェクトを使用する場合は、必須パラメーターcurrency_codeおよびamount_1000を使用します。

date_time

型: date_timeオブジェクト

任意。

date_timeオブジェクトを使用する場合は、日付と時刻も定義する必要があります。後述の例で2つのオプションをご覧ください。

currencyオブジェクト

Whatsapp Business APIクライアントは、指定されたローカリゼーションに基づいて通貨のフォーマットを設定しようと試みます。

名前説明

currency_code

型: 文字列

必須。

ISO 4217で定義されている通貨コード。

amount_1000

型: 整数

必須。

金額に1000を掛けた値。

{
    "type": "currency",
    "currency" : {
        "fallback_value": "$230.99",
        "code": "USD",
        "amount_1000": 230990
    }
}  

date_timeオブジェクト

Whatsapp Business APIクライアントは、指定されたローカリゼーションに基づいて日付/時刻のフォーマットを設定しようと試みます。サポートされる日付と時刻の形式は以下のとおりです。

  • コンポーネント時間: 時間は構成要素(曜日、月、時間など)の組み合わせから生成されます。指定される時間は、クライアントの所在地の時間帯に関係なく同じになります。
  • Unix時間: 表示される時間は、クライアントの所在地の時間帯に依存します。

DateTime

名前説明

component

型: DateTimeComponent

unix_epochが存在しない場合は必須。

コンポーネントによる日付/時刻。

unix_epoch

型: DateTimeUnixEpoch

componentが存在しない場合は必須。

Unixエポックによる日付/時刻。

少なくともcomponentまたはunix_epochのいずれかのフィールドが必要です。指定すると、指定したものだけが表示できます。

DateTimeComponent

名前説明

day_of_week

型: 文字列

任意。

日付(指定されている場合)から導出された値と異なる場合は、導出された値を使用します。文字列と数字のどちらも指定できます。
オプション: "MONDAY"1"TUESDAY"2"WEDNESDAY"3"THURSDAY"4"FRIDAY"5"SATURDAY"6"SUNDAY"7

year

型: 整数

任意。

month

型: 整数

任意。

day_of_month

型: 整数

任意。

hour

型: 整数

任意。

時間

minute

型: 整数

任意。

calendar

型: 文字列

任意。

暦の種類
オプション:GREGORIANSOLAR_HIJRI

{
    "type": "date_time",
    "date_time" : {
        "fallback_value": "October 25, 2020",
        "day_of_week": "Saturday",
        "day_of_month": 25,
        "year": 2020,
        "month": 10,
        "hour": 12,
        "minute": 0
    }
}

DateTimeUnixEpoch

DateTimeUnixEpochは廃止される予定です。廃止後はDateTimeComponentがデフォルトになります。問題を回避するため、コードを変更してください。

名前説明

timestamp

型: 整数

必須。

秒単位のエポックタイムスタンプ。このフィールドは廃止される予定です。

次のステップ

このドキュメントには、メッセージテンプレートに関する参照情報が含まれています。テンプレートを作成して送信する方法については、メッセージテンプレートの送信をご覧ください。メッセージテンプレートで使用できるすべてのパラメーターについては、メッセージ、メッセージテンプレートをご覧ください。

https://developers.facebook.com/docs/whatsapp/message-templates/creation#step-1--create-template-using-the-whatsapp-manager