

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# メッセージテンプレートヘルパーを使用する
<a name="message-template-helpers"></a>

Amazon Connect テンプレートを使用すると、Handlebars.js 言語に基づいて再利用可能なメッセージテンプレートを作成できます。ヘルパーは、料金を特定の地域の通貨にフォーマットしたり、タイムゾーンに基づいたロケーションを追加するなど、さまざまな機能を提供します。ヘルパーでは、値または特定の Amazon Connect メッセージ変数に、文字列や整数を使用できます。

次のセクションで、以下のヘルパーのカテゴリについて説明します。

## デフォルトヘルパー
<a name="defaulthelpers"></a>

このセクションでは、Handlebars が提供する**組み込み**ヘルパーについて説明します。

**重要**  
Handlebars が提供する組み込みの `with` ヘルパーはサポートされていません。ただし、他のすべての Handlebars ヘルパーについては完全にサポートされています。完全な一覧については、[handlebarsjs.com](https://handlebarsjs.com) の「[Built-in Helpers](https://handlebarsjs.com/guide/builtin-helpers.html)」を参照してください。

 組み込みヘルパーは次のとおりです。
+ `each` — リストを反復処理します。
**注記**  
リストの最大サイズは 15 項目です。
+ `if` — 文を評価します。

*each*  
リストを反復処理します。このヘルパーはブロック文のみを使用します。オプションで、次の操作も行えます。  
+ 現在のループインデックスを参照するために、リクエストで `@index` を渡します。
+ `this` ヘルパーを使用して、反復処理されている現在の要素を参照します。
+ `<li>` タグを使用して、ヘルパー応答をリストで返します。
**使用方法**  
`{{#each {{value}}}}`  
`{{@index}}` ポジションでの値は `{{this}}` です。  
`{{else}}`  
条件が false です。  
`{{/each}}`  
`each` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/each}}` を閉じなければなりません。  
**例**  
この例では、ユーザーの好きな色のリストを返すために `each` を使用しています。`false` の場合、`else` 文が返されます。リクエストがこれである場合  
`{{#each User.UserAttributes.FavoriteColors}}`  
`<li>{{this}}</li>`  
`{{else}}`  
{{好きな色はありません。}}  
`{{/each}}` が返す  
+ {{赤色}}
+ {{青色}}
+ {{黄色}}
true 文のために。

*if*  
true であるかどうかを評価し、その評価に基づいた応答を返します。  
**使用方法**  
`{{#if {{value}}}}`  
値は未定義ではない  
`{{else}}`  
値は未定義である  
`{{/if}}`  
`if` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/if}}` を閉じなければなりません。  
**例**  
この例では、`if` ヘルパーを使用して、ユーザーのファーストネームがあるかどうかを評価します。名前が見つかった場合は、ユーザーのファーストネームを渡す挨拶文がレスポンスとして返されます。そうでない場合、`else` 文は、代替えの挨拶文を返します。  
`{{#if User.UserAttributes.FirstName.[0]}}`  
`{{Hello}} {{User.UserAttributes.FirstName.[0]}}{{,}}`  
`{{else}}`  
{{ようこそ}}  
`{{/if}}`  
`if` ヘルパーが true のとき、{{Hello, Jane}} を返します。

## 条件付きヘルパー
<a name="conditionhelpers"></a>

このセクションでは**条件付き**ヘルパーについて説明します。

条件付きヘルパーは、1 行またはブロック文で使用できます。どのヘルパーメソッドを使用しても、レスポンスをカスタマイズすることができます。一行文とブロック文の両方で、追加の条件付きヘルパーを渡すことができます。以下の条件付きヘルパーは、まず 1 行で使用し、次にオプションの `else` 句を使用したブロック文での使用法を示しています。条件付きヘルパーは次のとおりです。
+ `and` — 渡されたすべての要素が等しいかどうか比較します。
+ `eq` — 2 つの要素が等しいかどうかをテストします。
+ `gt` — ある要素が別の要素よりも大きいかどうかをテストします。
+ `gte` — ある要素が別の要素よりも大きいかどうかまたは等しいかどうかをテストします。
+ `if` — ある事象が true かどうかを評価します。
+ `lt` — ある要素が別の要素よりも小さいかどうかをテストします。
+ `lte` — ある要素が別の要素よりも小さいかどうかまたは等しいかどうかをテストします。
+ `neq` — 2 つの要素が等しいかどうかを評価します。
+ `not` — ブール演算の応答を反転します。
+ `or` — 引数内の要素のいずれかが等しいかどうかを比較します。

*と*  
引数で渡された*すべて*の要素が等しいかどうかを比較し、その結果に基 づいて応答を返す。このヘルパーは、ブール値以外の値に対して使用することができます。条件として、少なくとも 2 つの要素を渡す必要があります。  
**使用方法**  
+ `{{and {{valuea}} {{valueb}} {{valuec}} {{valued}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#and {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/and}}`

  `and` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/and}}` を閉じなければなりません。
**例**  
この例では、`and` ブロック文内で `eq` を使用して、`Location.City ` と`Location.Country` 属性に渡された両方の文字列が true であるかどうかを判断しています。両方の条件が等しければ、true 文が返されます。これらの属性のいずれかが false の場合、`else` 文が返されます。  
`{{#and (eq Location.City "Los Angeles") (eq Location.Country "US")}}`  
{{アメリカのロサンゼルスに住んでいます。}}  
`{{else}}`  
{{アメリカのロサンゼルスに住んでいません。}}  
`{{/and}}`

*eq*  
2 つの要素が等しいかどうか、または、1 つの要素の値が、渡された文字列と等しいかどうかをテストします。  
**使用方法**  
+ `{{eq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#eq {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/eq}}`

  `eq` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/eq}}` を閉じなければなりません。
**例**  
この例では、`eq` は `User.UserAttributes.FavoriteColors.[0]` の値が{{赤色}}であるかどうかを評価するために使用されます。応答が `true` の場合は、true 文が返されます。応答が `false` の場合は、`else` 文が返されます。  
`{{#eq User.UserAttributes.FavoriteColors.[0] "{{red}}"}}`  
{{好きな色は赤色です。}}  
`{{else}}`  
{{赤色は嫌いな色です。}}  
`{{/eq}}`

*gt*  
ある要素の値が別の要素の値よりも大きいかどうかをテストします。  
**使用方法**  
+ `{{gt {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#gt {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/gt}}`

  `gt` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/gt}}` を閉じなければなりません。
**例**  
この例では、ヘルパーは `User.UserAttributes.UserAge.[0]` 属性の値を文字列 {{17}} と比較し、ユーザーの年齢が 17 より大きいかどうかを検証します。応答が `true` の場合は、true 文が返されます。応答が `false` の場合は、`else` 文が返されます。  
`{{#gt User.UserAttributes.UserAge.[0] "{{17}}"}}`  
{{車を借りるのに十分な年齢です。}}  
`{{else}}`  
{{車を借りるのに十分な年齢ではありません。}}  
`{{/gt}}`

*gte*  
ある要素の値が別の要素の値よりも大きいかどうか、等しいかどうかをテストします。  
`Usage`  
+ `{{gte {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#gte {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/gte}}`

  `get` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/gte}}` を閉じなければなりません。
**例**  
この例では、ヘルパーは `User.UserAttributes.UserAge.[0]` 属性を文字列 {{18}} と比較し、ユーザーの年齢が 18 より大きいかどうか、等しいかどうかを検証します。応答が `true` の場合は、true 文が返されます。応答が `false` の場合は、`else` 文が返されます。  
`{{#gte User.UserAttributes.UserAge.[0] "{{18}}"}}`  
{{車を借りるのに十分な年齢です。}}  
`{{else}}`  
{{車を借りるのに十分な年齢ではありません。}}  
`{{/gte}}`

*if*  
true であるかどうかを評価し、その評価に基づいた応答を返します。  
**使用方法**  
+ `{{#if {{value}}}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#if {{value}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/if}}`

  `if` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/if}}` を閉じなければなりません。
**例**  
この例では、 ヘルパーを使用して、ユーザーのファーストネームがあるかどうかを評価します。名前が見つかった場合は、ユーザーのファーストネームを渡す挨拶文がレスポンスとして返されます。それ以外の場合は、else 文で代替の挨拶文を返します。  
`{{#if User.UserAttributes.FirstName.[0]}}`  
{{ようこそ}} `{{User.UserAttributes.FirstName.[0]}}`{{、}}  
`{{else}}`  
{{ようこそ}}  
`{{/if}}`  
ヘルパーが true のとき、{{Hello Jane}} を返します。

*lt*  
ある要素の値が別の要素の値よりも小さいかどうかをテストします。  
**使用方法**  
+ `{{lt {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#lt {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/lt}}`

  `lt` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/lt}}` を閉じなければなりません。
**例**  
この例では、ヘルパーは `User.UserAttributes.UserAge.[0]` 属性を文字列 {{18}} と比較し、ユーザーの年齢が 18 より小さいかどうか、等しいかどうかを検証します。応答が `true` の場合は、true 文が返されます。応答が `false` の場合は、`else` 文が返されます。  
`{{#lt User.UserAttributes.UserAge.[0] "{{18}}"}}`  
{{車を借りるのに十分な年齢ではありません。}}  
`{{else}}`  
{{車を借りるのに十分な年齢です。}}  
`{{/lt}}`

*lte*  
要素の値が別の要素の値より小さいかどうかをテストします。  
**使用方法**  
+ `{{lte {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#lte {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/lte}}`

  `lte` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/lte}}` を閉じなければなりません。
**例**  
このブロック文では、ヘルパーは `User.UserAttributes.UserAge.[0]` 属性を文字列 {{17}} と比較し、ユーザーの年齢が 17 より小さいかどうか、等しいかどうかを検証します。応答が `true` の場合は、true 文が返されます。応答が `false` の場合は、`else` 文が返されます。  
`{{#lte User.UserAttributes.Age.[0] "{{17}}"}}`  
{{車を借りるのに十分な年齢ではありません。}}  
`{{else}}`  
{{車を借りるのに十分な年齢です。}}  
`{{/lte}}`

*neq*  
2 つの要素が等しく*ない*かどうかをテストします。  
**使用方法**  
+ `{{neq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#neq {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/neq}}`

  `neq` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/neq}}` を閉じなければなりません。
**例**  
このブロック文では、`User.UserAttributes.FavoriteColors.[0]` 属性が文字列 `{{Red}}` と照合されます。応答が `true` の場合は、true 文が返されます。応答が `false` の場合は、`else` 文が返されます。  
`{{#neq User.UserAttributes.Favorite.Colors.[0] "{{red}}"}}`  
{{赤色が嫌いです。}}  
`{{else}}`  
{{赤色が好きです。}}  
`{{/neq}}`

*not*  
ブール演算の応答を反転させ、`not` が正比較の場合、`true` 文を返します。応答が false の場合、else 文が返されます。  
**使用方法**  
+ `{{not {{value}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。
+ `{{#not {{value}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/not}}`

  `not` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/not}}` を閉じなければなりません。
**例**  
このブロック文では、`User.UerAttributes.FavoriteColors.[0]` 属性と文字列の{{赤色}}を `eq` ヘルパーで照合しています。`not` ヘルパーは、`eq` ヘルパーとは逆の値を返します。{{赤色}}以外が返された場合は、`true` 文が返されます。レスポンスが{{赤色}}を返した場合は、false 文の `else` 文が返されます。  
`{{#not (eq User.UserAttributes.Favorite.Colors.[0] "{{red}}")}}`  
{{赤色が嫌いです。}}  
`{{else}}`  
{{赤色が好きです。}}  
`{{/not}}`  
**例**  
この例では、  
`{{not (eq User.UserAttributes.FavoriteColors.[0] "{{red}}")}}`  
`User.UserAttributes.FavoriteColors.[0]` が{{赤色}}の場合は false を返します。

*または*  
引数の要素の*いずれか*が等しいかどうかを比較し、その結果に基づいて応答を返します。このヘルパーは、ブール値以外の値に対して使用することができます。  
**使用方法**  
+ `{{or {{valuea}} {{valueb}} {{valuec}} {{valued}} yes='{{y}}' no='{{n}}'}}`

  {{y}} と {{n}} は、条件によって、{{yes}} や {{no}} など他の値や、戻り値にしたい文字列に置き換えることができます。条件として、少なくとも 2 つの要素を渡す必要があります。
+ `{{#or {{valuea}} {{valueb}}}}`

  条件が true です。

  `{{else}}`

  条件が false です。

  `{{/or}}`

  `or` は、ブロック文の前にポンド記号（`#`）をつけ、最後に `{{/or}}` を閉じなければなりません。
**例**  
加えて、この `or` ブロック文では、`Location.City` 属性の 2 つの文字列を `eq` ヘルパーを使って比較します。いずれかの属性が `true` の場合、true 文が返されます。1 つ以上の回答が `false` であった場合、`else` 文が返されます。  
`{{#or (eq Location.City "Los Angeles") (eq Location.City "Seattle")}}`  
{{アメリカ西海岸に住んでいます。}}  
`{{else}}`  
{{アメリカ西海岸に住んでいません。}}  
`{{/or}}`

## 文字列ヘルパー
<a name="stringhelpers"></a>

このセクションでは、以下の**文字列**ヘルパーについて説明します。
+ `abbreviate` — 値を切り捨てます。
+ `capitalize` — 空白の間にある各単語を大文字にします。
+ `capitalizeFirst` — 値の先頭の文字を大文字にします。
+ `center` — 値を中央に配置します。
+ `cut` — 値を切り取ります。
+ `dateFormat` — 日付のスタイルを設定します。
+ `inflect` — カウントに応じた単数または複数の文字列を返します。
+ `join` — 配列、イテレーター、または反復可能なオブジェクトを結合します。
+ `ljust` — 値を左余白に揃えます。
+ `lower` — 値を小文字に変換します。
+ `now` — 現在の日付を印刷します。
+ `ordinalize` — 数値の順序付けをします。
+ `replace` — ある文字列を別の文字列に置き換えます。
+ `rjust` — 値を右余白に揃えます。
+ `slugify` - 値を小文字に変換し、単語以外の文字を削除し、スペースをハイフンに変換し、末尾の空白を削除します。
+ `stripTags` — 値から [X] HTML タグを削除します。
+ `substring` — 新しい文字列を、渡された値の部分文字列として返します。
+ `upper` — 渡された値を大文字に変換します。
+ `yesno` — True、False、No を Yes、No、Maybe に置き換えます。

*省略*  
値が指定された数値を超える場合、値を切り捨てます。空白は文字列の長さに含まれます。省略記号が応答に表示され、切り捨てられた後の値を示します。省略記号は、応答で切り捨てられた値にカウントされます。このタイプのヘルパーは、大きなテーブルがあり、最小限のスペースがある場合に有用です。セル内の値を切り捨てると、テーブル内の値をより統一して表示することができます。  
**使用方法**  
 `{{abbreviate {{value}} {{X}}}}`で、{{X}} を保持する文字数を示す数値に置き換えます。負の数には対応していません。  
**例**  
この例では、`abbreviate` を使用して `User.UserAttributes.LastName.[0]` を 6桁に切り捨てます。応答には省略記号が含まれ、そのドットには 6 文字の合計にカウントされます。  
`{{abbreviate {{User.UserAttributes.LastName.[0]}} {{6}}}}` が返す  
{{Ale...}}{{Alejandro}} が `[0]` の値の場合。

*大文字にする*  
空白の間にある各単語を大文字にします。  
**使用方法**  
 `{{capitalize {{value}}}}`  
**例**  
この例では、`Attributes.description.[0]` エントリーの各単語の先頭文字を大文字にします。  
`{{capitalize {{Attributes.description.[0]}}}}`  
`Attributes.description.[0]` が返す場合   
 {{My First Post}}、`Attributes.description.[0]`の値が {{my first post}} の場合。

*capitalizeFirst*  
値の先頭の文字を大文字にします。  
**使用方法**  
`{{capitalizeFirst {{value}}}}`  
**例**  
この例では、`Attributes.description.[0]` エントリーの最初の単語の先頭の文字を大文字にします。  
`{{capitalizeFirst {{Attributes.description.[0]}}}}` が返す  
 {{My First Post}}、`{{Attributes.description.[0]}}`の値が {{my first post}} の場合。  
**例**

*center*  
指定された幅のフィールドの値を、指定された数だけ中央揃えします。オプションで、パディングに表示する文字を渡すか、フィールドを空白にすることができます。文字が渡されない場合、空白が使用されます。  
**使用方法**  
 `{{center {{value}} size={{X}} [pad=" "}}`で、{{X}} を数値で置き換えます。  
`pad` を空白にした場合、空白がレスポンスのパディングとして使用されます。文字を渡すと、その文字がパディングの各空間に表示されます。負の数は対応していません。  
**例**  
この例では、`Location.City ` をサイズ {{19}} で中央揃えします。  
`{{center {{Location.City}} size={{19}}}}` が返す   
{{「    Los Angeles    」}}、`Location.City` が {{Los Angeles}} の場合。出力例で表示される引用符は強調のためにのみ提供されます。

*切り取る*  
指定された値を文字列から削除します。  
**使用方法**  
 `{{cut {{value}} [{{" "}}]}}`で、引用符パラメータ内のスペースを切り取る値で置き換えます。パラメータ値が渡されない場合は、空白が使用されます。  
**例**  
この例では、`Location.City` 属性から文字 {{e}} を削除します。  
`{{cut Location.City "{{e}}"}}` が返す  
{{Los Angls}}、`[Location.City` が {{Los Angeles}} の場合。

*dateFormat*  
任意の応答における日付のデフォルトスタイルを設定します。タイムゾーン ID のリストについては、[https://en.wikipedia.org/wiki/List_of_tz_database_time_zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) を参照してください。  
**使用方法**  
`{{dateFormat date [inputFormat="format1"] [outputFormat="format2"] [tz=timeZoneId] [locale=localeID]}}`  
`format` パラメータは、以下のいずれかを設定しなければなりません。  
+ `full`: 完全な日付形式。例: {{Tuesday, September 19, 2020}}
+ `long`: 長い日付形式。例: {{September 19, 2020}}
+ `medium`: 中間の日付の形式。例: {{Sept 19, 2020}}
+ `short`: 短い日付形式。例: {{9/19/20}}
+ `pattern`: カスタム日付形式を使用します。日付のパターンの詳細については、「[https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html](https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)」を参照してください。
`locale`: 特定のロケールに基づく日付形式を使用します。ロケールの詳細については、「[https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/LocaleUtils.html#toLocale-java.lang.String-](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/LocaleUtils.html#toLocale-java.lang.String-)」を参照してください。  
形式が渡された場合、デフォルトでは、`medium` を使用します。  
**例**  
この例では、`{{User.UserAttributes.StartDate.[0]}}` の `[0]` エントリが **09/19/2020** であり、{{America/Los\_Angeles}} のタイムゾーンに基づく `full` 日付形式を用いてメッセージをユーザーに送信します。  
`We can meet with you any time on ``{{dateFormat User.UserAttributes.StartDate.[0] inputFormat="MM/dd/yyyy" outputFormat="full" tz=America/Los_Angeles}}.` が返す  
{{2020年9月19日（火）はいつでもお会いできます。}}

*インフレクト*  
カウントの値に応じた単数または複数の文字列を返します。  
**使用方法**  
 `{{inflect {{count}} {{singular}} {{plural}} [includeCount=false]}}`  
+ 引数に渡す文字列の単数形および複数形を入力します。
+ `includeCount` を `false` に設定した場合、応答ではカウントを返しません。`true`に 設定すると、`count` が応答に含まれます。
**例**  
次の例では、リンゴを購入する際の編曲を、`includeCount` 有るか無いかで表示します。  
`Thank you for your purchase of {{inflect {{3}} {{apple}} {{apples}} includeCount={{false}}}}.` を返す。  
{{りんごをご購入いただきありがとうございました。}}  
`includeCount` が `true` に設定されている場合、応答は  
{{りんごを ３ つご購入いただきありがとうございました。}}

*結合*  
配列、イテレーター、または反復可能なオブジェクトを結合します。応答はリストを返し、リストの各値は `join` で渡した文字で連結されます。例えば、カンマ (`,`) で値を区切ります。このヘルパーの値は、属性位置インデックスを持たないリストでなければなりません。例えば、`Attributes.custom_attribute` のようなものです。  
**使用方法**  
`{{join {{value}} " // " [prefix=""] [suffix=""]}}`  
**例**  
この例では、コンマとスペース (`", "`) で区切った色のリストを返しています。  
`{{join {{Attributes.favorite_colors}} "{{, }}"}}` が返す   
{{青色、赤色、緑色}}、`Attributes.favorite_colors` が{{青色、赤色、緑色}}リストの場合。

*ljust*  
値を左余白に揃え、値の長さが数値と一致するように、右に余白を追加します。負の数には対応していません。  
オプションで `pad` に表示する文字を渡すか、フィールドを空白にすることができます。`pad` の値を空白にした場合、デフォルト値は空白になります。  
**使用方法**  
`{{ljust {{value}} size={{X}} [pad=" "]}}`、{{X}} は空白を含む値の全長です。  
**例**  
この例では、Location.City を {{15}} で左揃えします。  
`{{ljust {{Location.City}} size={{15}}}}` が返す  
{{「Los Angeles    」}}、`Location.City` の値が {{Los Angeles}} の場合。出力例に表示される引用符は、強調のためにのみ提供されます。

*lower*  
値を小文字に変換します。  
**使用方法**  
`{{lower {{value}}}}`  
**例**  
この例では、`User.UserAttributes.LastName.[0]` の `[0]` エントリーを小文字に変更します。  
`{{lower {{User.UserAttributes.LastName.[0]}}}}` が返す  
{{santos}}、{{Santos}} が `[0]` の値の場合。

*now*  
渡されたタイムゾーン ID に基づいて、現在の日付を出力します。タイムゾーン ID のリストについては、[https://en.wikipedia.org/wiki/List_of_tz_database_time_zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) を参照してください。  
**使用方法**  
`{{now ["format"] [tz=timeZoneId] [locale=localeID]}}`  
`format` パラメータは、以下のいずれかを設定しなければなりません。  
+ `full`: 完全な日付形式。例: {{Tuesday, September 19, 2020}}
+ `long`: 長い日付形式。例: {{September 19, 2020}}
+ `medium`: 中間の日付の形式。例: Sept 19, 2020
+ `short`: 短い日付形式。例: 9/19/20
+ `pattern`: 日付パターン。日付のパターンの詳細については、「[https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html](https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)」を参照してください。
`locale`: 特定のロケールに基づく日付形式を使用します。ロケールの詳細については、「[https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/LocaleUtils.html#toLocale-java.lang.String-](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/LocaleUtils.html#toLocale-java.lang.String-)」を参照してください。  
形式が渡された場合、デフォルトでは、`medium` を使用します。  
**例**  
この例では、Los Angeles の現在の日付を `medium` の形式で返します。  
`{{now "medium" tz={{America/Los_Angeles}}}}` が返す   
{{Sept 19, 2020}}。

*順序付け*  
引数に渡される数値を順序付けします。例えば、{{1}} は {{1st}}、{{2}} は {{2nd}} というように順序付けします。数値のみサポートします。  
**使用方法**  
`{{ordinalize [{{number}}]}} `  
**例**  
この例では、`User.UserAttributes.UserAge` の `[0]` エントリーを順序付けし、メッセージと一緒に返します。  
`Congratulations on your {{ordinalize User.UserAttributes.UserAge.[0]}} birthday!` は {{22}} を {{22nd}} として順序付けした値を返します。  
{{22歳の誕生日おめでとうございます！}}

*置換*  
ある文字列を別の文字列に置き換えます。文字列または数値はリテラルでなければなりません。ワイルドカード文字はサポートされていません。  
**使用方法**  
`{{replace {{stringToReplace}} {{replacementValue}}}}`  
**例**  
この例では、アンダースコア (\_) を空白に置き換えます。  
`{{replace {{Location.City}} {{" " "_"}}}}` が返す  
{{Los\_Angeles}}、 `Location.City ` が {{Los Angeles}} の場合。

*rjust*  
値を右余白に揃え、値の長さが数値と一致するように、左に余白を追加します。負の数は対応していません。  
オプションで `pad` に表示する文字を渡すか、フィールドを空白にできます。`pad` の値を空白にした場合、デフォルト値は空白になります。  
**使用方法**  
`{{rjust {{value}} size={{X}} [pad=" "]}}`、{{X}} は空白を含む値の全長です。  
**例**  
この例では、`Location.City` 属性を {{15}} で右揃えします。  
`{{rjust {{Location.City}} size={{15}}}}` が返す  
{{「Los Angeles」}}、`Location.City` が {{Los Angeles}} の場合。出力に表示される引用文は、強調のためにのみ提供されます。

*slugify*  
渡された値を小文字に変換し、単語以外の文字 (英数字とアンダースコア) を削除し、空白をハイフンに変換し、先頭または末尾の空白を削除します。  
**使用方法**  
`{{slugify {{value}}}}`  
**例**  
この例では、`Location.City` 属性に対して slugify を実行します。  
`{{slugify {{Location.City}}}}` が返す  
{{los\_angeles}}、 `Location.City` が {{Los Angeles}} の場合。

*stripTags*  
値から [X] HTML タグを除去します。  
**使用方法**  
 `{{stripTags {{value}}}}`  
**例**  
この例では、user.userAttributes.interest.[0] の HTML タグを削除します。  
`{{stripTags {{User.UserAttributes.interests.[0]}}}}` が返す  
{{Art}}、`User.UserAttributes.interests.[0]` が `<h1>Art</h1>` の場合。

*substring*  
新しい文字列を、渡された値の部分文字列として返します。長さと位置は整数値の `startOffset` と `endOffset` のパラメータで決定します。負の数は対応していません。`endOffset` が渡されない場合、部分文字列は元の文字列の最後の文字を使用します。  
**使用方法**  
`{{substring {{value}} {{startOffset}} {{[endOffset]}}}}`  
**例**  
この例では、Location.City 属性にオフセットを 4、EndOFFset を 9 に設定します。  
`{{substring {{Location.City 4 9}}}} ` が返す  
`{{Angel}}`、Los Angeles が `Location.City` の値 である「{{Los Angeles}}」の場合。

*UPPER*  
渡された値を大文字に変換します。  
**使用方法**  
`{{upper {{value}}}}`  
**例**  
この例では、`User.UserAttributes.LastName` 属性の `[0] ` のエントリをすべて大文字に変換します。  
`{{upper User.UserAttributes.LastName.[0]}}` が返す  
{{ROE}}、`User.UserAttributes.LastName.[0]` 値が {{Roe}} の場合。

*yesno*  
`true`、`false`、および `NULL` を `Yes`、`No`、および`Maybe` と置き換えます。  
**使用方法**  
`{{yesno value [yes="yes"] [no="no"] maybe=["maybe"]}}`  
**例**  
この例では、`IsUserSubscribed` 属性が、あるユーザーが特定のリストに登録されているかどうかを返します。  
`{{yesno Attributes.IsUserSubscribed}}` が返す   
{{yes}}、`Attributes.IsUserSubscribed` が {{true}} の場合。

## 数学およびエンコーディングのヘルパー
<a name="mathhelpers"></a>

このセクションでは**数学およびエンコーディング**のヘルパーについて説明します。
+ `add` — 2 つの数の加算結果を返します。
+ `ceiling` — 最も近い整数に切り上げます。
+ `decode64` – base64 でエンコードされた値を文字列にデコードします。
+ `divide` — 2 つの数の除算結果を返します。
+ `encode64` — base64 を使用して文字列をエンコードします。
+ `floor` — 最も近い整数に切り下げます。
+ `md5` — MD5 アルゴリズムを使用して、渡された文字列をハッシュ化します。
+ `modulo` — 浮動小数点を使用して 2 つの数値の余りを返します。
+ `multiply` — 2 つの数の乗算結果を返します。
+ `round` — 10 進数を四捨五入して、最も近い整数にします。
+ `sha256` — SHA-256 を使用して、渡された文字列をハッシュ化します。
+ `sha512` — SHA-512 を使用して、渡された文字列をハッシュ化します。
+ `subtract` — 2 つの数値の減算結果を返します。
+ `uuid` — 128 ビット形式の UUID をランダムで生成します。

*追加*  
浮動小数点数とともに 2 つの数値の加算結果を返します。  
**使用方法**  
`{{add {{arg1}} {{arg2}}}}`  
**例**  
`{{add {{5 2.3}}}} ` が返す  
{{7.3}}

*ceiling*  
渡された整数値を最も近い整数に切り上げます。  
**使用方法**  
`{{ceiling {{value}}}}`  
**例**  
`{{ceiling {{5.23}}}}` が返す  
{{6}}

*decode64*  
base64 でエンコードされた値を文字列にデコードします。  
**使用方法**  
`{{decode64 "{{string}}"}}`  
**例**  
`{{decode64 "{{SGVsbG8gd29ybGQ}}="}}` が返す  
{{Hello World}}

*除算*  
浮動小数点を含む 2 つの数値の除算結果を返します。  
**使用方法**  
 `{{divide {{arg1}} {{arg2}}}}`  
**例**  
`{{divide {{5 2.3}}}}` が返す  
{{2.17391304}}

*encode64*  
base64 を使用して、引数で渡された文字列をエンコードします。  
**使用方法**  
`{{encode64 "{{string}}"}}`  
**例**  
`{{encode64 "{{Hello World"}}}}`  
{{sgvsbg8gd29ybgq=}}

*floor*  
渡された整数値を最も近い整数に切り下げます。  
**使用方法**  
`{{floor {{value}}}}`  
**例**  
`{{floor {{5.23}}}}` が返す  
{{5}}

*md5*  
MD5 アルゴリズムを使用して、渡された文字列をハッシュ化します。  
**使用方法**  
`{{md5 "{{string}}"}}`  
**例**  
`{{md5 "{{Hello World}}"}}`  
{{3e25960a79dbc69b674cd4ec67a72c62}}

*モジュロ*  
浮動小数点を使用して 2 つの数値の余りを返します。  
**使用方法**  
`{{modulo {{arg1}} {{arg2}}}}`  
**例**  
`{{modulo {{7 2}}}}` が返す  
{{1}}

*multiply*  
浮動小数点数とともに 2 つの数値の乗算結果を返します。  
**使用方法**  
`{{multiply {{arg1}} {{arg2}}}}`  
**例**  
`{{multiply {{5 2.3}}}}` が返す  
{{11.5}}

*round*  
小数点以下を四捨五入して、最も近い整数にします。  
**使用方法**  
`{{round {{value}}}}`  
**例**  
`You spent an average of {{round {{19.21}}}} minutes on our website each day.` を返す。  
{{毎日平均 19 分をウェブサイトを閲覧しています。}}

*sha256*  
SHA-512 暗号化セキュリティを使用して、渡された文字列をハッシュ化します。  
**使用方法**  
`{{sha256 "{{string}}"}}`  
**例**  
`{{sha256 "{{Hello World}}"}}` が返す  
{{a591a6d40bf420404a011733cfb7b190d62c65bf0bda32b57b277d9ad9d9f146e}}

*sha512*  
SHA-512 暗号化セキュリティを使用して、渡された文字列をハッシュ化します。  
**使用方法**  
`{{sha512 "{{string}}"}}`  
**例**  
`{{sha512 "{{Hello World}}"}}` が返す  
{{2c74fd17edafd80e8447b0d467b0d461e243b7eb74d2149a0ab1b74d2149a0ab1b9246f30382f27e857e85719ee67cbda0da8f51671064615d6d6b459b}}

*減算*  
浮動小数点数とともに 2 つの数値の減算結果を返します。  
**使用方法**  
`{{subtract {{arg1}} {{arg2}}}}`  
**例**  
`{{subtract {{5 2.3}}}} ` が返す  
{{2.7}}

*uuid*  
標準 128 ビット形式の UUID をランダムで生成します。引数に値を渡す必要はありません。  
**使用方法**  
`{{uuid}}`  
**例**  
`{{uuid}} ` が返す  
{{{{95f36680-152c-4052-99ec-cc3cdf7ca594}}}}

## インラインパーシャル
<a name="inlinepartials"></a>

技術的にはヘルパーではありませんが、インラインパーシャルは、繰り返される文字列を含むテンプレートを効率化するための再利用に適した Handlebars の方法です。詳細については、「[handlebarsjs.com](https://handlebarsjs.com)」の「[Inline partials](https://handlebarsjs.com/guide/partials.html#inline-partials)」を参照してください。

**使用方法**

`{{#* inline "inlineName"}}Content to reuse{{/inline}}`

インラインパーシャルの内容を他の場所で参照するには、以下を使用します。

` {{> inlineName}}`

**例**

例えば、テンプレートの先頭に以下のコードを追加することで、受信者の名前と名字 (存在する場合) を含むインラインパーシャルを作成します。

`{{#* inline "{{fullName}}"}}`

`{{User.UserAttributes.FirstName.[0]}} {{#if User.UserAttributes.LastName.[0]}} {{User.UserAttributes.LastName.[0]}} {{/if}}`

`{{/inline}}`

次の例 `{{> fullName}}` のように、`fullName` パーシャルを作成したら、パーシャルの名前の前に `>` (大文字) 記号をつけ、その後に空白を入れることで、テンプレートのどこにでも挿入できます。

{{` Hello {{> fullName}}`}}

true の場合、ユーザーの名前と名字を返します。例: {{Hello Jane Doe}}。それ以外の場合、苗字が見つからなければ、{{Hello Jane}} が返されます。

ここに記載されている機能の他にも、Handlebars はさまざまな機能を提供します。詳細については、「[handlebarsjs.com](https://handlebarsjs.com/)」を参照してください。

## メッセージテンプレートヘルパーで変数を使用する
<a name="template-helpers-variables"></a>

Amazon Connect カスタム属性名はスペースをサポートします。`"Last Name"` というカスタム属性を使用するには、属性を `Attributes.[Last Name]` の形式にする必要があります。

## ネストされたヘルパーを使用する
<a name="template-helpers-nesting"></a>

 複数のメッセージテンプレートヘルパーを互いにネストすることができます。次に、2 つの `{{ first helper (second helper)}}` ヘルパーをフォーマットする例を示します。2 番目のヘルパーが最初に処理され、その後に 1 番目のヘルパーが処理されます。最初のヘルパーが常に出力を決定することを留意してください。後続のヘルパーは、`{{ first helper (second helper (third helper) )}}` のように、最初のヘルパー内にネストする必要があります。

次の例 `{{capitalizeFirst (lower "JANE")}}` は、**JANE** を **Jane** に変更するために 2 つのヘルパーをネストさせる方法を示しています。`lower` はまず **JANE** を **jane** に変換します。その後、`capitalizeFirst` は **jane** を **Jane** に変換します。