

**支援結束通知：**2026 年 10 月 30 日， AWS 將結束對 Amazon Pinpoint 的支援。2026 年 10 月 30 日之後，您將無法再存取 Amazon Pinpoint 主控台或 Amazon Pinpoint 資源 (端點、區段、行銷活動、旅程和分析)。如需詳細資訊，請參閱 [Amazon Pinpoint 終止支援](https://docs.aws.amazon.com/console/pinpoint/migration-guide)。**注意：**與 SMS、語音、行動推播、OTP 和電話號碼驗證相關的 APIs 不受此變更影響，並受 AWS 最終使用者傳訊支援。

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

# 使用訊息範本協助程式
<a name="message-template-helpers"></a>

透過 Amazon Pinpoint 範本，客戶可以根據 Handlebars.js 語言建立可重複使用的訊息範本。協助程式提供多種功能，包括可以將價格轉換成特定區域的貨幣，或是依時區新增地點。協助程式可以將特定字串或整數當作值，或特定的 Amazon Pinpoint 訊息變數。

這些是協助程式的類別，下節將有詳細描述：

## 預設協助程式
<a name="defaulthelpers"></a>

本節介紹 Handlebars 提供的**內建**協助程式。如需完整清單，請參閱[位於 https：// 的內建協助程式](https://handlebarsjs.com/guide/builtin-helpers.html)。 [handlebarsjs.com](https://handlebarsjs.com) 這些是內建協助程式：
+ `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\$1Angeles* 時區的 `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="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}}`  
**範例**  
就本範例而言，底線 (\$1) 將取代空白字元。  
`{{replace Location.City " " "_"}}` 傳回  
如果 `Location.City ` 是*洛杉磯*，傳回 *Los\$1Angeles*。

*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 Pinpoint 自訂屬性 (例如 `User.UserAttributes.LastName`) 儲存為清單，無論是單一項目或是多個項目。在需要字串的協助程式中傳遞清單時，必須指定屬性索引值和屬性名稱。此屬性索引值表示屬性清單中值的位置：`.[0]` 表示清單中的第一個項目，`.[1]` 表示第二個項目，`.[2]` 表示第三個項目，依此類推。假設您使用 `upper` 協助程式將 `User.UserAttributes.LastName` 的第一個 (`[0]`) 項目轉換為全部大寫。協助程式用法是 `{{upper value}}`，屬性的格式是 `User.UserAttributes.LastName`。將 *value* 替換成屬性名稱和屬性索引值 `.[0]`，如下所示：`{{upper User.UserAttributes.LastName.[0]}}`。然後回應傳回清單中的 `[0]` 項目，格式是全部大寫。假設 `[0]` 的值是 *Santos*，回應傳回 *SANTOS*。

Amazon Pinpoint 自訂屬性名稱支援空格。若要擁有名為 的自訂屬性`"Last Name"`，您必須將屬性格式化為 `User.UserAttributes.[Last Name]`。若要存取屬性索引清單中的第一個項目，格式為 `User.UserAttributes.[Last Name].[0]`。

自訂屬性名稱最多可包含 50 個字元。屬性值最多可包含 100 個字元。定義自訂屬性的名稱時，請避免使用以下字元：數字符號 (\$1)、冒號 (:)、問號 (?)、反斜線 (\$1) 和斜線 (/)。Amazon Pinpoint 主控台不能顯示包含這些字元的屬性名稱。此限制不適用於屬性值。

## 使用巢狀協助程式
<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**。