

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用訊息範本協助程式
<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) 上的[內建協助程式](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}}` 傳回  
+ {{r}}ed
+ {{藍色}}
+ {{黃色}}
true 陳述式。

*如*  
評估某件事是否是 true，並根據評估傳回回應。  
**用途**  
`{{#if {{value}}}}`  
值未定義  
`{{else}}`  
值未定義  
`{{/if}}`  
在區塊陳述式中，`if` 必須以井字號 (`#`) 開頭，並以 `{{/if}}` 結尾。  
**範例**  
就本範例而言，`if` 協助程式用於評估是否是使用者的名字。如果找到名稱，會傳回問候語，並在回應中傳遞使用者的名字。否則 `else` 陳述式會傳回替代問候語。  
`{{#if User.UserAttributes.FirstName.[0]}}`  
`{{Hello}} {{User.UserAttributes.FirstName.[0]}}{{,}}`  
`{{else}}`  
{{您好，}}  
`{{/if}}`  
如果 `if` 協助程式是 true，則傳回{{您好，簡}}。

## 條件式協助程式
<a name="conditionhelpers"></a>

本節介紹**條件式**協助程式。

條件式協助程式可以在單行或區塊陳述式中使用。不論使用哪種協助程式，都可以自訂回應。您可以在單行和區塊陳述式中傳遞額外的條件式協助程式。以下條件式協助程式先顯示單行的使用方法，然後顯示使用了選用 `else` 子句的區塊陳述式。這些是條件式協助程式：
+ `and` – 比較所有傳遞的元素是否相等。
+ `eq` – 測試兩個元素是否相等。
+ `gt` – 測試某個元素是否大於另一個。
+ `gte` – 測試某個元素是否大於或等於另一個。
+ `if` – 評估某個條件是否為 true。
+ `lt` – 測試一個元素是否小於另一個元素。
+ `lte` – 測試一個元素是否小於或等於另一個元素。
+ `neq` – 評估兩個元素是否不相等。
+ `not` – 反轉布林值運算的回應。
+ `or` – 比較引數中的任何元素是否相等。

*及*  
比較引數中傳遞的*所有*元素是否相等，然後根據結果傳回回應。這個協助程式可用於非布林值。您必須為條件傳遞至少兩個元素。  
**用途**  
+ `{{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*  
測試兩個元素是否相等，或者一個元素的值是否等於傳遞的字串。  
**用途**  
+ `{{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}}`

*如*  
評估某件事是否是 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*  
測試兩個元素是否*不*相等。  
**用途**  
+ `{{neq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  您可以將 {{y}} 和 {{n}} 取代為其他值，例如 {{yes}} 和 {{no}}，或者您想傳回的任何其他字串，視條件而定。
+ `{{#neq {{valuea}} {{valueb}}}}`

  條件為 true。

  `{{else}}`

  條件為 false。

  `{{/neq}}`

  在區塊陳述式中，`neq` 必須以井字號 (`#`) 開頭，並以 `{{/neq}}` 結尾。
**範例**  
在本區塊陳述式中，對照字串 `{{Red}}` 檢查 `User.UserAttributes.FavoriteColors.[0]` 屬性。如果回應是 `true`，將傳回 true 陳述式。如果回應是 `false`，將傳回 `else` 陳述式。  
`{{#neq User.UserAttributes.Favorite.Colors.[0] "{{red}}"}}`  
{{您不喜歡紅色。}}  
`{{else}}`  
{{您喜歡紅色。}}  
`{{/neq}}`

*非*  
反轉布林值運算的回應，如果 `not` 是正比較，則傳回 `true` 陳述式。如果回應是 false，將傳回 else 陳述式。  
**用途**  
+ `{{not {{value}} yes='{{y}}' no='{{n}}'}}`

  您可以將 {{y}} 和 {{n}} 取代為其他值，例如 {{yes}} 和 {{no}}，或者您想傳回的任何其他字串，視條件而定。
+ `{{#not {{value}}}}`

  條件為 true。

  `{{else}}`

  條件為 false。

  `{{/not}}`

  在區塊陳述式中，`not` 必須以井字號 (`#`) 開頭，並以 `{{/not}}` 結尾。
**範例**  
在本區塊陳述式中，使用 `eq` 協助程式對照字串 {{red}} 檢查 `User.UerAttributes.FavoriteColors.[0]` 屬性。然後 `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}}，或者您想傳回的任何其他字串，視條件而定。您必須為條件傳遞至少兩個元素。
+ `{{#or {{valuea}} {{valueb}}}}`

  條件為 true。

  `{{else}}`

  條件為 false。

  `{{/or}}`

  在區塊陳述式中，`or` 必須以井字號 (`#`) 開頭，並以 `{{/or}}` 結尾。
**範例**  
就本 `or` 區塊陳述式而言，將使用 `eq` 協助程式，另外比較 `Location.City` 屬性的兩個字串。如果其中一個屬性是 `true`，將傳回 true 陳述式。如果一個或多個回應是 `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) 個字元。回應包含省略符號，共計為六個字元數。  
`{{abbreviate {{User.UserAttributes.LastName.[0]}} {{6}}}}` 傳回  
{{Ale...}} 如果 `[0]` 的值是 {{Alejandro}}。

*大寫*  
將空白字元之間的每個單字變成大寫。  
**用途**  
 `{{capitalize {{value}}}}`  
**範例**  
就本範例而言，`Attributes.description.[0]` 項目每個字的開頭字母大寫。  
`{{capitalize {{Attributes.description.[0]}}}}`  
如果 `Attributes.description.[0]` 傳回   
 {{我的第一篇文章}}，如果 `Attributes.description.[0]` 的值是{{我的第一篇文章}}。

*capitalizeFirst*  
將值的第一個字元變成大寫。  
**用途**  
`{{capitalizeFirst {{value}}}}`  
**範例**  
就本範例而言，`Attributes.description.[0]` 項目第一個字的第一個字元大寫。  
`{{capitalizeFirst {{Attributes.description.[0]}}}}` 傳回  
 {{我的第一篇文章}}，如果 `{{Attributes.description.[0]}}` 的值是{{我的第一篇文章}}。  
**範例**

*center*  
將指定寬度欄位中的值，依指定的數字置中。您可以傳遞要顯示的填補字元，或將欄位留空 (選用)。如果沒有傳遞任何字元，則使用空白字元。  
**用途**  
 `{{center {{value}} size={{X}} [pad=" "}}`，將 {{X}} 替換成一個數值。  
如果將 `pad` 留空，會在回應中使用空白字元當作填補。如果您傳遞一個字元，該字元會顯示在填補的每個空間中。不支援負數。  
**範例**  
就本範例而言，`Location.City ` 的值是尺寸 {{19}}。  
`{{center {{Location.City}} size={{19}}}}` 傳回   
如果 `Location.City` 是{{洛杉磯}}，傳回 {{"    Los Angeles    "}}。請注意，範例輸出中顯示的引號，只是用來表示強調。

*剪下*  
從字串移除指定的值。  
**用途**  
 `{{cut {{value}} [{{" "}}]}}`，將引號參數中的空格，替換成要剪下的值。如果沒有傳遞任何參數值，會使用空白字元。  
**範例**  
此範例從 `Location.City` 屬性刪除字母 {{e}}。  
`{{cut Location.City "{{e}}"}}` 傳回  
如果 `[Location.City` 是{{洛杉磯}}，傳回 {{Los Angls}}。

*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*  
根據計數值傳回單數或複數字串。  
**用途**  
 `{{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`，回應是  
{{感謝您購買 3 顆蘋果。}}

*join*  
連接陣列、迭代器或可迭代物件。回應傳回一個清單，清單中的每個值都由您在 `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}}}}` 傳回  
如果 `Location.City` 的值是{{洛杉磯}}，傳回 {{"Los Angeles    "}}。請注意，範例輸出中顯示的引號，只是用來表示強調。

*小寫*  
將值轉換為全部小寫。  
**用途**  
`{{lower {{value}}}}`  
**範例**  
在本範例中，`User.UserAttributes.LastName.[0]` 的 `[0]` 項目已改為小寫。  
`{{lower {{User.UserAttributes.LastName.[0]}}}}` 傳回  
{{santos}} 如果 {{Santos}} 是 `[0]` 的值。

*立即*  
根據傳遞的時區 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`。  
**範例**  
就本範例而言，依 `medium` 格式傳回洛杉磯目前的日期。  
`{{now "medium" tz={{America/Los_Angeles}}}}` 傳回   
{{2020 年 9 月 19 日}}。

*序數化*  
將引數中傳遞的數值序數化。例如，{{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}} {{" " "_"}}}}` 傳回  
如果 `Location.City ` 是{{洛杉磯}}，傳回 {{Los\_Angeles}}。

*rjust*  
將值與右邊界對齊，並在左邊增加空格，讓值的長度與號碼相符。不支援負數。  
您可以傳遞要顯示的 `pad` 字元，或將欄位留空 (選用)。如果將 `pad` 值留空，預設值是空白字元。  
**用途**  
`{{rjust {{value}} size={{X}} [pad=" "]}}`，{{X}} 是值的總長度，包括空白字元。  
**範例**  
就本範例而言，對 `Location.City` 屬性套用向右對齊值 {{15}}。  
`{{rjust {{Location.City}} size={{15}}}}` 傳回  
如果 `Location.City` 是{{洛杉磯}}，傳回 {{"    Los Angeles"}}。請注意，輸出中顯示的引號，只是用來表示強調。

*slugify*  
將傳遞的值替換成小寫，移除非單字字元 (英數字元和底線)，將空白字元轉替換成連字號，並移除任何前置或後置空白字元。  
**用途**  
`{{slugify {{value}}}}`  
**範例**  
就本範例而言，對 `Location.City` 屬性執行 slugify。  
`{{slugify {{Location.City}}}}` 傳回  
如果 `Location.City` 是{{洛杉磯}}，傳回 {{los-angeles}}。

*stripTags*  
從值刪除 [X]HTML 標籤。  
**用途**  
 `{{stripTags {{value}}}}`  
**範例**  
就本範例而言，移除 User.UserAttributes.interest.[0] 的 HTML 標籤。  
`{{stripTags {{User.UserAttributes.interests.[0]}}}}` 傳回  
如果 `User.UserAttributes.interests.[0]` 是 `<h1>Art</h1>`，傳回 {{Art}}。

*substring*  
傳回新字串，當作傳遞值的子字串。長度和位置由 `startOffset` 和 `endOffset` 參數決定，這些參數必須是整數。不支援負數。如果未傳遞 `endOffset`，子字串會使用字串的原始結尾值。  
**用途**  
`{{substring {{value}} {{startOffset}} {{[endOffset]}}}}`  
**範例**  
就本範例而言，為 Location.City 屬性套用偏移量 4 和 endOffset 9。  
`{{substring {{Location.City 4 9}}}} `傳回  
如果洛杉磯是 `Location.City` 的值，`{{Angel}}` 就是{{洛杉磯}}。

*大寫*  
將傳遞值轉換為大寫。  
**用途**  
`{{upper {{value}}}}`  
**範例**  
就本範例而言，`User.UserAttributes.LastName` 屬性的 `[0] ` 項目會轉換為全部大寫。  
`{{upper User.UserAttributes.LastName.[0]}}`傳回  
如果 `User.UserAttributes.LastName.[0]` 值是 {{Roe}}，傳回 {{ROE}}。

*yesno*  
將 `true`、`false` 和 `NULL` 替換成 `Yes`、`No` 和 `Maybe`。  
**用途**  
`{{yesno value [yes="yes"] [no="no"] maybe=["maybe"]}}`  
**範例**  
就本範例而言，`IsUserSubscribed` 屬性會傳回使用者是否已訂閱特定清單。  
`{{yesno Attributes.IsUserSubscribed}}` 傳回   
如果 `Attributes.IsUserSubscribed` 是 {{true}}，傳回 {{yes}}。

## 數學和編碼協助程式
<a name="mathhelpers"></a>

本節介紹**數學和編碼**協助程式。
+ `add` – 傳回兩個數字的總和。
+ `ceiling` – 將整數向上取整。
+ `decode64` – 將 base64 編碼值解碼為字串。
+ `divide` – 傳回兩個數字的商數。
+ `encode64` – 使用 base64 編碼字串。
+ `floor` – 將整數四捨五入，向下取整。
+ `md5` – 使用 MD5 演算法對傳遞的字串進行雜湊處理。
+ `modulo` – 使用浮點數傳回兩個數字的餘數。
+ `multiply` – 傳回兩個數字的乘積。
+ `round` – 將小數四捨五入到最接近的整數。
+ `sha256` – 使用 SHA-256 對傳遞的字串進行雜湊處理。
+ `sha512` – 使用 SHA-512 對傳遞的字串進行雜湊處理。
+ `subtract` – 傳回兩個數字的差值。
+ `uuid` – 隨機產生 128 位元格式的 UUID。

*add*  
傳回兩個數字的總和及浮點數。  
**用途**  
`{{add {{arg1}} {{arg2}}}}`  
**範例**  
`{{add {{5 2.3}}}} `傳回  
{{7.3}}

*向上取整*  
將整數向上取整，也就是最接近傳遞值的最高整數。  
**用途**  
`{{ceiling {{value}}}}`  
**範例**  
`{{ceiling {{5.23}}}}` 傳回  
{{6}}

*decode64*  
將 base64 編碼值解碼為字串。  
**用途**  
`{{decode64 "{{string}}"}}`  
**範例**  
`{{decode64 "{{SGVsbG8gd29ybGQ}}="}}` 傳回  
{{Hello World}}

*除*  
傳回兩個數字的商數，包括浮點數。  
**用途**  
 `{{divide {{arg1}} {{arg2}}}}`  
**範例**  
`{{divide {{5 2.3}}}}` 傳回  
{{2.17391304}}

*encode64*  
使用 base64 編碼引數中傳遞的字串。  
**用途**  
`{{encode64 "{{string}}"}}`  
**範例**  
`{{encode64 "{{Hello World"}}}}`  
{{SGVsbG8gd29ybGQ=}}

*向下取整*  
將整數四捨五入，向下取整，也就是最接近傳遞值的最低整數。  
**用途**  
`{{floor {{value}}}}`  
**範例**  
`{{floor {{5.23}}}}` 傳回  
{{5}}

*md5*  
使用 MD5 演算法對傳遞的字串進行雜湊處理。  
**用途**  
`{{md5 "{{string}}"}}`  
**範例**  
`{{md5 "{{Hello World}}"}}`  
{{3e25960a79dbc69b674cd4ec67a72c62}}

*模數*  
使用浮點數傳回兩個數字的餘數。  
**用途**  
`{{modulo {{arg1}} {{arg2}}}}`  
**範例**  
`{{modulo {{7 2}}}}` 傳回  
{{1}}

*乘*  
傳回兩個數字的總和及浮點數。  
**用途**  
`{{multiply {{arg1}} {{arg2}}}}`  
**範例**  
`{{multiply {{5 2.3}}}}` 傳回  
{{11.5}}

*四捨五入*  
將小數位向上或向下捨入到最接近的整數。  
**用途**  
`{{round {{value}}}}`  
**範例**  
`You spent an average of {{round {{19.21}}}} minutes on our website each day.` 傳回：  
{{您每天平均在我們的網站上花費 19 分鐘。}}

*sha256*  
使用 SHA-256 密碼編譯安全性，對傳遞的字串進行雜湊處理。  
**用途**  
`{{sha256 "{{string}}"}}`  
**範例**  
`{{sha256 "{{Hello World}}"}}` 傳回  
{{a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e}}

*sha512*  
使用 SHA-512 密碼編譯安全性，對傳遞的字串進行雜湊處理。  
**用途**  
`{{sha512 "{{string}}"}}`  
**範例**  
`{{sha512 "{{Hello World}}"}}` 傳回  
{{2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b}}

*減*  
傳回兩個數字的差值及浮點數。  
**用途**  
`{{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/guide/partials.html#inline-partials) 上的[內嵌部分](https://handlebarsjs.com)。

**用途**

`{{#* 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，傳回使用者的名字和姓氏 – 例如{{蔡小英，您好}}。如果找不到姓氏，則傳回{{小英，您好}}。

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>

 您可以將多個訊息範本協助程式套疊在一起。以下範例說明如何格式化兩個協助程式：`{{ first helper (second helper)}}`。先處理第二個協助程式，再處理第一個協助程式。請記住，一律由第一個協助程式決定輸出。後一個協助程式必須套疊在前一個協助程式內，如下所示：`{{ first helper (second helper (third helper) )}}`。

以下範例說明如何套疊兩個協助程式，將 **JANE** 變成 **Jane**: `{{capitalizeFirst (lower "JANE")}}`。`lower` 先將 **JANE** 轉換為 **jane**。然後 `capitalizeFirst` 將 **jane** 轉換為 **Jane**。