

**Aviso de fin de soporte:** el 30 de octubre de 2026, AWS finalizará el soporte para Amazon Pinpoint. Después del 30 de octubre de 2026, ya no podrá acceder a la consola de Amazon Pinpoint ni a los recursos de Amazon Pinpoint (puntos de conexión, segmentos, campañas, recorridos y análisis). Para obtener más información, consulte [Fin de soporte de Amazon Pinpoint](https://docs.aws.amazon.com/console/pinpoint/migration-guide). **Nota: en** lo APIs que respecta a los SMS, este cambio no afecta a los mensajes de voz, a las notificaciones push móviles, a las OTP y a la validación de números de teléfono, y son compatibles con la mensajería para el usuario AWS final.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de ayudantes de plantillas de mensajes
<a name="message-template-helpers"></a>

Con las plantillas de Amazon Pinpoint, los clientes pueden crear plantillas de mensajes reutilizables basadas en el lenguaje Handlebars.js. Los ayudantes ofrecen una variedad de características, como dar formato a un precio según la moneda de una región específica o agregar una ubicación basada en la zona horaria. Un ayudante puede usar una cadena o un entero específicos para el valor o una variable de mensaje de Amazon Pinpoint específica.

Estas son las categorías de ayudantes, que se describen en las secciones siguientes:

## Ayudantes predeterminados
<a name="defaulthelpers"></a>

En esta sección se describen los ayudantes **integrados** que proporciona Handlebars. Para ver la lista completa, consulte los [ayudantes integrados](https://handlebarsjs.com/guide/builtin-helpers.html) en [handlebarsjs.com](https://handlebarsjs.com). Estos son los ayudantes integrados:
+ `each`: itera una lista.
**nota**  
El tamaño máximo de la lista es de 15 elementos.
+ `if`: evalúa una instrucción.

*cada*  
Itera una lista. Este ayudante usa solo una instrucción de bloque. Si lo desea:   
+ Pase `@index` en la solicitud para hacer referencia al índice de bucle actual.
+ Use el ayudante `this` para hacer referencia al elemento actual que está iterando.
+ Devuelva la respuesta del ayudante en una lista, con la etiqueta `<li>`.
**Uso**  
`{{#each {{value}}}}`  
El valor en la posición `{{@index}}` es `{{this}}`.  
`{{else}}`  
La condición es falsa.  
`{{/each}}`  
`each` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/each}}` de cierre en la instrucción de bloque.  
**Ejemplo**  
En este ejemplo, `each` se utiliza para devolver una lista de los colores favoritos de un usuario. Para `false`, se devuelve una instrucción `else`. Si la solicitud es esta:  
`{{#each User.UserAttributes.FavoriteColors}}`  
`<li>{{this}}</li>`  
`{{else}}`  
{{You have no favorite colors.}}  
`{{/each}}` devuelve  
+ {{red}}
+ {{blue}}
+ {{yellow}}
para una declaración verdadera.

*if*  
Evalúa si algo es cierto y devuelve una respuesta en función de la evaluación.   
**Uso**  
`{{#if {{value}}}}`  
El valor no es indefinido  
`{{else}}`  
El valor es indefinido  
`{{/if}}`  
`if` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/if}}` de cierre en la instrucción de bloque.  
**Ejemplo**  
En este ejemplo, el ayudante `if` se utiliza para evaluar si el nombre de un usuario es el primero. Si se encuentra el nombre, se devuelve un saludo que pasa por el nombre del usuario en la respuesta. De lo contrario, la instrucción `else` devuelve un saludo alternativo.  
`{{#if User.UserAttributes.FirstName.[0]}}`  
`{{Hello}} {{User.UserAttributes.FirstName.[0]}}{{,}}`  
`{{else}}`  
{{Hello,}}  
`{{/if}}`  
regresa {{Hello, Jane}} si el `if` ayudante es verdadero.

## Ayudantes condicionales
<a name="conditionhelpers"></a>

En esta sección se describen los ayudantes **condicionales**. 

Los ayudantes condicionales se pueden usar en una sola línea o en una instrucción de bloque. Puede personalizar la respuesta independientemente del método de ayudante que utilice. Puede pasar ayudantes condicionales adicionales en las instrucciones de una sola línea y en las de bloque. Los siguientes asistentes condicionales muestran el uso primero de una sola línea y, después, de una instrucción de bloque mediante una cláusula `else` opcional. Estos son los ayudantes condicionales:
+ `and`: compara si todos los elementos pasados son iguales.
+ `eq`: comprueba si dos elementos son iguales.
+ `gt`: comprueba si un elemento es mayor que otro.
+ `gte`: comprueba si un elemento es mayor que otro o igual a otro.
+ `if`: evalúa si algo es verdadero.
+ `lt`: comprueba si un elemento es inferior a otro.
+ `lte`: comprueba si un elemento es inferior o igual a otro.
+ `neq`: evalúa si dos elementos no son iguales.
+ `not`: invierte la respuesta de una operación booleana.
+ `or`: compara si alguno de los elementos del argumento es igual.

*and*  
Compara si *todos* los elementos transferidos en un argumento son iguales y, a continuación, devuelve la respuesta en función del resultado. Este ayudante se puede utilizar para valores no booleanos. Debe transferir al menos dos elementos para la condición.  
**Uso**  
+ `{{and {{valuea}} {{valueb}} {{valuec}} {{valued}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#and {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/and}}`

  `and` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/and}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En este ejemplo, `eq` se utiliza en la instrucción de bloque `and` para determinar si las dos cadenas pasadas para los atributos `Location.City ` y `Location.Country` son verdaderas. Si ambas condiciones son iguales, se devuelve una instrucción verdadera. Si alguno de esos atributos es falso, se devuelve una instrucción `else`.  
`{{#and (eq Location.City "Los Angeles") (eq Location.Country "US")}}`  
{{You live in Los Angeles and the US.}}  
`{{else}}`  
{{You don’t live in Los Angeles and the US.}}  
`{{/and}}`

*eq*  
Comprueba si dos elementos son iguales o si el valor de un elemento es igual al de una cadena pasada.  
**Uso**  
+ `{{eq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#eq {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/eq}}`

  `eq` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/eq}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En este ejemplo, `eq` se utiliza para evaluar si el valor de `User.UserAttributes.FavoriteColors.[0]` es{{Red}}. Si la respuesta es `true`, se devuelve una instrucción verdadera. Si la respuesta es `false`, se devuelve una instrucción `else`.  
`{{#eq User.UserAttributes.FavoriteColors.[0] "{{red}}"}}`  
{{Your favorite color is red.}}  
`{{else}}`  
{{You don't like red.}}  
`{{/eq}}`

*gt*  
Prueba si el valor de un elemento es mayor que otro.   
**Uso**  
+ `{{gt {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#gt {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/gt}}`

  `gt` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/gt}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En este ejemplo, el ayudante compara el valor del `User.UserAttributes.UserAge.[0]` atributo con una cadena {{17}} para comprobar si la edad del usuario es mayor de 17 años. Si la respuesta es `true`, se devuelve una instrucción verdadera. Si la respuesta es `false`, se devuelve una instrucción `else`.  
`{{#gt User.UserAttributes.UserAge.[0] "{{17}}"}}`  
{{You are old enough to rent a car.}}  
`{{else}}`  
{{You are not old enough to rent a car.}}  
`{{/gt}}`

*gte*  
Prueba si el valor de un elemento es mayor o igual que otro.  
`Usage`  
+ `{{gte {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#gte {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/gte}}`

  `get` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/gte}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En este ejemplo, el ayudante compara el `User.UserAttributes.UserAge.[0]` atributo con una cadena {{18}} para comprobar si la edad del usuario es mayor o igual a 18 años. Si la respuesta es `true`, se devuelve una instrucción verdadera. Si la respuesta es `false`, se devuelve una instrucción `else`.  
`{{#gte User.UserAttributes.UserAge.[0] "{{18}}"}}`  
{{You are old enough to rent a car.}}  
`{{else}}`  
{{You are not old enough to rent a car.}}  
`{{/gte}}`

*if*  
Evalúa si algo es cierto y devuelve una respuesta en función de la evaluación.  
**Uso**  
+ `{{#if {{value}}}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#if {{value}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/if}}`

  `if` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/if}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En este ejemplo, el ayudante se utiliza para evaluar si el nombre de un usuario es el primero. Si se encuentra el nombre, se devuelve un saludo que pasa por el nombre del usuario en la respuesta. De lo contrario, la instrucción else devuelve un saludo alternativo.  
`{{#if User.UserAttributes.FirstName.[0]}}`  
{{Hello}} `{{User.UserAttributes.FirstName.[0]}}`{{,}}  
`{{else}}`  
{{Hello,}}  
`{{/if}}`  
devuelve {{Hello Jane,}} si el ayudante es verdadero.

*lt*  
Prueba si el valor de un elemento es inferior al valor de otro.  
**Uso**  
+ `{{lt {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#lt {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/lt}}`

  `lt` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/lt}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En este ejemplo, el ayudante compara el `User.UserAttributes.UserAge.[0]` atributo con una cadena {{18}} para comprobar si el usuario tiene menos de 18 años. Si la respuesta es `true`, se devuelve una instrucción verdadera. Si la respuesta es `false`, se devuelve una instrucción `else`.  
`{{#lt User.UserAttributes.UserAge.[0] "{{18}}"}}`  
{{You are not old enough to rent a car.}}  
`{{else}}`  
{{You are old enough to rent a car.}}  
`{{/lt}}`

*lte*  
Prueba si el valor de un elemento es inferior o igual que otro.  
**Uso**  
+ `{{lte {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#lte {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/lte}}`

  `lte` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/lte}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En esta sentencia de bloque, el ayudante compara el `User.UserAttributes.UserAge.[0]` atributo con una cadena {{17}} para comprobar si el usuario tiene 17 años o menos. Si la respuesta es `true`, se devuelve una instrucción verdadera. Si la respuesta es `false`, se devuelve una instrucción `else`.  
`{{#lte User.UserAttributes.Age.[0] "{{17}}"}}`  
{{You are not old enough to rent a car.}}  
`{{else}}`  
{{You are old enough to rent a car.}}  
`{{/lte}}`

*neq*  
Pruebe si dos elementos *no* son iguales.  
**Uso**  
+ `{{neq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#neq {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/neq}}`

  `neq` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/neq}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En esta instrucción de bloque, el atributo `User.UserAttributes.FavoriteColors.[0]` se compara con una cadena, `{{Red}}`. Si la respuesta es `true`, se devuelve una instrucción verdadera. Si la respuesta es `false`, se devuelve una instrucción `else`.  
`{{#neq User.UserAttributes.Favorite.Colors.[0] "{{red}}"}}`  
{{You do not like red.}}  
`{{else}}`  
{{You like red.}}  
`{{/neq}}`

*no*  
Invierte la respuesta de una operación booleana, de modo que si `not` es una comparación positiva, se devuelve una instrucción `true`. Si la respuesta es falsa, se devuelve una instrucción else.   
**Uso**  
+ `{{not {{value}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición.
+ `{{#not {{value}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/not}}`

  `not` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/not}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En esta sentencia de bloque, el `User.UerAttributes.FavoriteColors.[0]` atributo se compara con una cadena {{red}} mediante el `eq` asistente. A continuación, el ayudante `not` devuelve lo contrario del ayudante `eq`. Si la respuesta devuelve un color que no sea{{red}}, se devuelve `true` una sentencia A. Si se devuelve la respuesta{{red}}, se devuelve una `else` declaración que indica que es falsa.  
`{{#not (eq User.UserAttributes.Favorite.Colors.[0] "{{red}}")}}`  
{{You do not like red.}}  
`{{else}}`  
{{You like red.}}  
`{{/not}}`  
**Ejemplo**  
En este ejemplo,   
`{{not (eq User.UserAttributes.FavoriteColors.[0] "{{red}}")}}`  
devuelve false si `User.UserAttributes.FavoriteColors.[0]` es así{{red}}.

*o*  
Compara si *algunos* de los elementos en el argumento son iguales y, a continuación, devuelve la respuesta en función del resultado. Este ayudante se puede utilizar para valores no booleanos.  
**Uso**  
+ `{{or {{valuea}} {{valueb}} {{valuec}} {{valued}} yes='{{y}}' no='{{n}}'}}`

  Puede reemplazar {{y}} y {{n}} con otros valores, como {{yes}} y{{no}}, o cualquier otra cadena que desee que se devuelva, según la condición. Debe transferir al menos dos elementos para la condición.
+ `{{#or {{valuea}} {{valueb}}}}`

  La condición es verdadera.

  `{{else}}`

  La condición es falsa.

  `{{/or}}`

  `or` debe ir precedido de un signo de almohadilla (`#`) y concluir con `{{/or}}` de cierre en la instrucción de bloque.
**Ejemplo**  
En esta instrucción de bloque `or`, se comparan adicionalmente dos cadenas del atributo `Location.City` mediante el ayudante `eq`. Si alguno de esos atributos es `true`, se devuelve una instrucción. Si una o más de las respuestas es `false`, se devuelve una instrucción `else`.  
`{{#or (eq Location.City "Los Angeles") (eq Location.City "Seattle")}}`  
{{You live on the West Coast of the United States.}}  
`{{else}}`  
{{You do not live on the West Coast of the United States.}}  
`{{/or}}`

## Ayudantes de cadenas
<a name="stringhelpers"></a>

En esta sección se describen los siguientes ayudantes de **cadenas**:
+ `abbreviate`: trunca un valor.
+ `capitalize`: escribe en mayúscula cada palabra entre espacios en blanco.
+ `capitalizeFirst`: pone en mayúscula el primer carácter de un valor.
+ `center`: centra un valor.
+ `cut`: recorta un valor.
+ `dateFormat`: establece el estilo de fecha.
+ `inflect`: devuelve una cadena singular o plural en función del recuento.
+ `join`: se une a una matriz, un iterador o un objeto iterable.
+ `ljust`: justifica un valor en el margen izquierdo.
+ `lower`: convierte un valor a minúsculas.
+ `now`: imprime la fecha actual.
+ `ordinalize`: ordinaliza un valor numérico.
+ `replace`: sustituye una cadena por otra.
+ `rjust`: justifica un valor en el margen derecho.
+ `slugify`: convierte un valor a minúsculas y elimina los caracteres que no son palabras, convierte los espacios en guiones y elimina los espacios en blanco del final.
+ `stripTags`: elimina las etiquetas [X]HTML de un valor.
+ `substring`: devuelve una nueva cadena como subcadena de un valor pasado.
+ `upper`: convierte el valor pasado a mayúsculas.
+ `yesno`: sustituye verdadero, falso y no por Sí, No y Quizás.

*abreviar*  
Trunca un valor si el valor supera el número especificado. Los espacios en blanco se incluyen en el recuento de longitudes. Se muestra una elipsis en la respuesta para indicar un valor truncado. La elipsis cuenta para el valor truncado de la respuesta. Este tipo de ayudante es útil si tiene una tabla grande y un espacio mínimo. Al truncar los valores de una celda, se obtiene un aspecto más uniforme de la tabla.  
**Uso**  
 `{{abbreviate {{value}} {{X}}}}`, {{X}} sustituyéndola por un valor numérico que indique el número de caracteres que se deben conservar. Los números negativos no se admiten.  
**Ejemplo**  
En este ejemplo, `abbreviate` se utiliza para truncar `User.UserAttributes.LastName.[0]` a seis (6) caracteres. La respuesta incluye una elipsis, cuyos puntos cuentan para el total de seis caracteres.  
`{{abbreviate {{User.UserAttributes.LastName.[0]}} {{6}}}}` devuelve  
{{Ale...}}si {{Alejandro}} es el valor de`[0]`.

*escribir en mayúsculas*  
Escriba en mayúsculas cada palabra entre espacios en blanco.  
**Uso**  
 `{{capitalize {{value}}}}`  
**Ejemplo**  
En este ejemplo, se aplica el uso inicial de mayúsculas a cada palabra de la entrada `Attributes.description.[0]`.  
`{{capitalize {{Attributes.description.[0]}}}}`  
Si `Attributes.description.[0]` devuelve   
 {{My First Post}}, si el valor de `Attributes.description.[0]` es{{my first post}}.

*capitalizeFirst*  
Escribe en mayúsculas el primer carácter de un valor.  
**Uso**  
`{{capitalizeFirst {{value}}}}`  
**Ejemplo**  
En este ejemplo, el uso de mayúsculas se aplica al primer carácter de la primera palabra de la entrada `Attributes.description.[0]`.  
`{{capitalizeFirst {{Attributes.description.[0]}}}}` devuelve  
 {{My first post}}, si el valor de `{{Attributes.description.[0]}}` es{{my first post}}.  
**Ejemplo**

*centro*  
Centra el valor en un campo de un ancho determinado mediante el número especificado. Si lo desea, puede pasar un carácter para que se muestre como relleno o dejar el campo en blanco. Si no se pasa ningún carácter, se utiliza un espacio en blanco.  
**Uso**  
 `{{center {{value}} size={{X}} [pad=" "}}`, {{X}} sustituyéndolo por un valor numérico.  
Si `pad` se mantiene en blanco, se utiliza un espacio en blanco como relleno en la respuesta. Si pasa un carácter, ese carácter se muestra en cada espacio del relleno. Los números negativos no se admiten.  
**Ejemplo**  
En este ejemplo, el valor de `Location.City ` se centra con un tamaño de{{19}}.  
`{{center {{Location.City}} size={{19}}}}` devuelve   
{{"    Los Angeles    "}}Si `Location.City` lo es{{Los Angeles}}. Tenga en cuenta que las comillas que se muestran en el resultado del ejemplo se proporcionan solo para enfatizar.

*cortar*  
Elimina el valor especificado de una cadena.   
**Uso**  
 `{{cut {{value}} [{{" "}}]}}`, que sustituye el espacio dentro del parámetro de comillas por el valor que se va a cortar. Si no se pasa ningún valor de parámetro, se utiliza un espacio en blanco.   
**Ejemplo**  
En este ejemplo, se elimina la letra {{e}} del `Location.City` atributo.  
`{{cut Location.City "{{e}}"}}` devuelve  
{{Los Angls}}si `[Location.City` lo es{{Los Angeles}}.

*dateFormat*  
Establece el estilo de fecha predeterminado para la fecha en cualquier respuesta. Para obtener una lista de la zona horaria IDs, consulte[https://en.wikipedia.org/wiki/List_of_tz_database_time_zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).  
**Uso**  
`{{dateFormat date [inputFormat="format1"] [outputFormat="format2"] [tz=timeZoneId] [locale=localeID]}}`  
El parámetro `format` debe ser uno de:  
+ “`full`”: formato de fecha completo. Por ejemplo: {{Tuesday, September 19, 2020}}
+ “`long`”: formato de fecha largo. Por ejemplo: {{September 19, 2020}}
+ “`medium`”: formato de fecha medio. Por ejemplo: {{Sept 19, 2020}}
+ “`short`”: formato de fecha corto. Por ejemplo: {{9/19/20}}
+ “`pattern`”: utiliza un formato de patrón de fechas personalizado. Para obtener más información acerca de patrones de fecha, consulte [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`”: utiliza un formato de fecha basado en una configuración local determinada. Para obtener más información sobre configuraciones locales, consulte [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-).  
Si no se pasa un formato, `medium` se utiliza de forma predeterminada.   
**Ejemplo**  
En este ejemplo, la `[0]` entrada `{{User.UserAttributes.StartDate.[0]}}` es **09/19/2020** y se envía un mensaje a un usuario con el formato de `full` fecha en función de la zona {{America/Los\_Angeles}} horaria.  
`We can meet with you any time on ``{{dateFormat User.UserAttributes.StartDate.[0] inputFormat="MM/dd/yyyy" outputFormat="full" tz=America/Los_Angeles}}.` devuelve  
{{We can meet with you any time on Tuesday, September 19, 2020.}}

*modular*  
Devuelve una cadena singular o plural en función del valor del recuento.  
**Uso**  
 `{{inflect {{count}} {{singular}} {{plural}} [includeCount=false]}}`  
+ Ingrese las formas singular y plural de la cadena que desee incluir en el argumento.
+ Si `includeCount` se establece en `false`, no se devuelve ningún recuento en la respuesta. Si se establece en `true`, `count` se incluye en la respuesta.
**Ejemplo**  
Los siguientes ejemplos muestran la inflexión de una compra de manzanas, con y sin `includeCount`.  
`Thank you for your purchase of {{inflect {{3}} {{apple}} {{apples}} includeCount={{false}}}}.` devuelve:  
{{Thank you for your purchase of apples.}}  
Si `includeCount` está establecido en `true`, entonces la respuesta es  
{{Thank you for your purchase of 3 apples.}}

*unirse*  
Se une a una matriz, un iterador o un objeto iterable. La respuesta devuelve una lista en la que cada valor de la lista está concatenado por el carácter que pase en `join`. Por ejemplo, es posible que separe los valores con una coma (`,`). El valor de este ayudante debe ser una lista sin un índice de posición de atributos. Por ejemplo, podría ser `Attributes.custom_attribute`.  
**Uso**  
`{{join {{value}} " // " [prefix=""] [suffix=""]}}`  
**Ejemplo**  
En este ejemplo, se devuelve una lista de colores, separada por una coma y un espacio (`", "`):  
`{{join {{Attributes.favorite_colors}} "{{, }}"}}` devuelve   
{{blue, red, green}}si `Attributes.favorite_colors` es la lista{{blue,red,green}}.

*ljust*  
Justifica el valor en el margen izquierdo y agrega espacio a la derecha para que la longitud del valor coincida con el número. Los números negativos no se admiten.  
Si lo desea, puede pasar un carácter para mostrar para `pad` o dejar el campo en blanco. Si deja en blanco el valor `pad`, el valor predeterminado es un espacio en blanco.  
**Uso**  
`{{ljust {{value}} size={{X}} [pad=" "]}}`, donde {{X}} es la longitud total del valor, incluidos los espacios en blanco.   
**Ejemplo**  
En este ejemplo, se aplica un valor de {{15 }} justificación a la izquierda de Location.City.  
`{{ljust {{Location.City}} size={{15}}}}` devuelve  
{{"Los Angeles    "}}si el valor de `Location.City` es. {{Los Angeles}} Tenga en cuenta que las comillas que se muestran en el resultado del ejemplo se proporcionan solo para enfatizar.

*lower*  
Convierte un valor a minúsculas.  
**Uso**  
`{{lower {{value}}}}`  
**Ejemplo**  
En este ejemplo, la entrada `[0]` para `User.UserAttributes.LastName.[0]` se cambia a minúscula.  
`{{lower {{User.UserAttributes.LastName.[0]}}}}` devuelve  
{{santos}}si {{Santos}} es el valor de`[0]`.

*now*  
Imprime la fecha actual en función del ID de zona horaria pasado. Para obtener una lista de la zona horaria IDs, consulte[https://en.wikipedia.org/wiki/List_of_tz_database_time_zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).  
**Uso**  
`{{now [format="format"] [tz=timeZoneId] [locale=localeID]}}`  
El parámetro `format` debe ser uno de:  
+ “`full`”: formato de fecha completo. Por ejemplo: {{Tuesday, September 19, 2020}}
+ “`long`”: formato de fecha largo. Por ejemplo: {{September 19, 2020}}
+ “`medium`”: formato de fecha medio. Por ejemplo: 19 de septiembre de 2020
+ “`short`”: formato de fecha corto. Por ejemplo: 19/9/20
+ “`pattern`”: un patrón de fechas. Para obtener más información acerca de patrones de fecha, consulte [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`”: utiliza un formato de fecha basado en una configuración local determinada. Para obtener más información sobre configuraciones locales, consulte [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-).  
Si no se pasa un formato, `medium` se utiliza de forma predeterminada.  
**Ejemplo**  
En este ejemplo, se devuelve la fecha actual de Los Ángeles con un formato `medium`.  
`{{now "medium" tz={{America/Los_Angeles}}}}` devuelve   
{{Sept 19, 2020}}.

*ordinalizar*  
Ordinaliza el valor numérico pasado en el argumento. Por ejemplo, {{1}} se ordinaliza como {{1st}} y {{2}} como{{2nd}}. Solo se admiten valores numéricos.  
**Uso**  
`{{ordinalize [{{number}}]}} `  
**Ejemplo**  
En este ejemplo, la entrada `[0]` de `User.UserAttributes.UserAge` se ordinaliza y se devuelve junto con un mensaje.   
`Congratulations on your {{ordinalize User.UserAttributes.UserAge.[0]}} birthday!`devuelve {{22}} ordinalizado como. {{22nd}}  
{{Congratulations on your 22nd birthday\!}}

*replace*  
Sustituye una cadena por otra. Una cadena o un valor numérico deben ser literales. No se admiten caracteres comodín.  
**Uso**  
`{{replace {{stringToReplace}} {{replacementValue}}}}`  
**Ejemplo**  
En este ejemplo, un guion bajo (\_) sustituye un espacio en blanco.  
`{{replace {{Location.City}} {{" " "_"}}}}` devuelve  
{{Los\_Angeles}}si lo `Location.City ` es{{Los Angeles}}.

*rjust*  
Justifica el valor en el margen derecho y agrega espacio a la derecha para que la longitud del valor coincida con el número. Los números negativos no se admiten.  
Si lo desea, puede pasar un carácter para mostrar para `pad` o mantener el campo en blanco. Si mantiene en blanco el valor de `pad`, el valor predeterminado es un espacio en blanco.  
**Uso**  
`{{rjust {{value}} size={{X}} [pad=" "]}}`, donde {{X}} es la longitud total del valor, incluidos los espacios en blanco.   
**Ejemplo**  
En este ejemplo, {{15}} se aplica un valor de justificación correcto de al `Location.City` atributo.  
`{{rjust {{Location.City}} size={{15}}}}` devuelve  
{{"    Los Angeles" }}. si el `Location.City` es{{Los Angeles}}. Tenga en cuenta que las comillas que se muestran en el resultado se proporcionan solo para enfatizar.

*slugify*  
Convierte el valor pasado a minúsculas, elimina los caracteres que no son palabras (alfanuméricos y guiones bajos), convierte los espacios en guiones y elimina los espacios en blanco del principio y del final.  
**Uso**  
`{{slugify {{value}}}}`  
**Ejemplo**  
En este ejemplo, slugify se realiza para el atributo `Location.City`.   
`{{slugify {{Location.City}}}}` devuelve  
{{los-angeles}}si `Location.City` lo es{{Los Angeles}}.

*stripTags*  
Elimina las etiquetas [X]HTML de un valor.  
**Uso**  
 `{{stripTags {{value}}}}`  
**Ejemplo**  
En este ejemplo, las etiquetas HTML del usuario. UserAttributes.interest. [0] se eliminan.   
`{{stripTags {{User.UserAttributes.interests.[0]}}}}` devuelve  
{{Art}}, si lo `User.UserAttributes.interests.[0]` es`<h1>Art</h1>`.

*subcadena*  
Devuelve una nueva cadena como subcadena del valor pasado. La longitud y la posición vienen determinadas por los parámetros `startOffset` y `endOffset`, que deben ser números enteros. Los números negativos no se admiten. Si `endOffset` no se transfiere, la subcadena utiliza el valor final original de la cadena.  
**Uso**  
`{{substring {{value}} {{startOffset}} {{[endOffset]}}}}`  
**Ejemplo**  
En este ejemplo, se aplica un desplazamiento de 4 y un endOffset de 9 al atributo Location.City.   
`{{substring {{Location.City 4 9}}}} `devuelve  
`{{Angel}}`si Los Ángeles es el valor de `Location.City` nosotros{{Los Angeles}}.

*upper*  
Convierte el valor pasado a mayúsculas.  
**Uso**  
`{{upper {{value}}}}`  
**Ejemplo**  
En este ejemplo, la entrada `[0] ` del atributo `User.UserAttributes.LastName` se convierte completamente en mayúsculas.  
`{{upper User.UserAttributes.LastName.[0]}}`devuelve  
{{ROE}}si el `User.UserAttributes.LastName.[0]` valor es{{Roe}}.

*yesno*  
Sustituye `true`, `false` y `NULL` con `Yes`, `No` y `Maybe`.  
**Uso**  
`{{yesno value [yes="yes"] [no="no"] maybe=["maybe"]}}`  
**Ejemplo**  
En este ejemplo, el atributo `IsUserSubscribed` devuelve si un usuario está suscrito a una lista determinada.  
`{{yesno Attributes.IsUserSubscribed}}` devuelve   
{{yes}}si `Attributes.IsUserSubscribed` lo es{{true}}.

## Ayudantes matemáticos y codificación
<a name="mathhelpers"></a>

En esta sección se describen los ayudantes **matemáticos y de codificación**.
+ `add`: devuelve la suma de dos números.
+ `ceiling`: redondea un entero hasta su límite matemático.
+ `decode64`: decodifica un valor codificado en base64 en una cadena.
+ `divide`: devuelve el cociente de dos números.
+ `encode64`: codifica una cadena con base64.
+ `floor`: redondea un entero hasta su límite matemático.
+ `md5`— Calcula una cadena pasada mediante el MD5 algoritmo.
+ `modulo`: devuelve el resto de dos números utilizando puntos flotantes.
+ `multiply`: devuelve el producto de dos números.
+ `round`: redondea un decimal al número entero más cercano.
+ `sha256`: coloca una cadena pasada mediante SHA-256.
+ `sha512`: coloca una cadena pasada mediante SHA-512.
+ `subtract`: devuelve la diferencia de dos números.
+ `uuid`: genera al azar un UUID en formato de 128 bits.

*adición*  
Devuelve la suma de dos números junto con los puntos flotantes.  
**Uso**  
`{{add {{arg1}} {{arg2}}}}`  
**Ejemplo**  
`{{add {{5 2.3}}}} `devuelve  
{{7.3}}

*límite*  
Redondea un entero hasta su límite matemático, que es el número entero más alto más cercano al valor pasado.  
**Uso**  
`{{ceiling {{value}}}}`  
**Ejemplo**  
`{{ceiling {{5.23}}}}` devuelve  
{{6}}

*decode64*  
Decodifica un valor codificado en base64 en una cadena.  
**Uso**  
`{{decode64 "{{string}}"}}`  
**Ejemplo**  
`{{decode64 "{{SGVsbG8gd29ybGQ}}="}}` devuelve  
{{Hello World}}

*dividir*  
Devuelve el cociente de dos números, incluidos los puntos flotantes.  
**Uso**  
 `{{divide {{arg1}} {{arg2}}}}`  
**Ejemplo**  
`{{divide {{5 2.3}}}}` devuelve  
{{2.17391304}}

*encode64*  
Codifica la cadena pasada en el argumento mediante base64.  
**Uso**  
`{{encode64 "{{string}}"}}`  
**Ejemplo**  
`{{encode64 "{{Hello World"}}}}`  
{{SGVsbG8gd29ybGQ=}}

*floor*  
Redondea un entero hasta su límite matemático, que es el número entero más bajo más cercano al valor pasado.  
**Uso**  
`{{floor {{value}}}}`  
**Ejemplo**  
`{{floor {{5.23}}}}` devuelve  
{{5}}

*md5*  
Aplica un código hash a una cadena pasada mediante el MD5 algoritmo.  
**Uso**  
`{{md5 "{{string}}"}}`  
**Ejemplo**  
`{{md5 "{{Hello World}}"}}`  
{{3e25960a79dbc69b674cd4ec67a72c62}}

*módulo*  
Devuelve el resto de dos números utilizando puntos flotantes.  
**Uso**  
`{{modulo {{arg1}} {{arg2}}}}`  
**Ejemplo**  
`{{modulo {{7 2}}}}` devuelve  
{{1}}

*multiplicar*  
Devuelve el producto de dos números, con los puntos flotantes.  
**Uso**  
`{{multiply {{arg1}} {{arg2}}}}`  
**Ejemplo**  
`{{multiply {{5 2.3}}}}` devuelve  
{{11.5}}

*round*  
Redondea un decimal al número entero más cercano.  
**Uso**  
`{{round {{value}}}}`  
**Ejemplo**  
`You spent an average of {{round {{19.21}}}} minutes on our website each day.` devuelve:  
{{You spent an average of 19 minutes on our website each day.}}

*sha256*  
Coloca una cadena pasada mediante la seguridad criptográfica SHA-256.  
**Uso**  
`{{sha256 "{{string}}"}}`  
**Ejemplo**  
`{{sha256 "{{Hello World}}"}}` devuelve  
{{a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e}}

*sha512*  
Coloca una cadena pasada mediante la seguridad criptográfica SHA-512.  
**Uso**  
`{{sha512 "{{string}}"}}`  
**Ejemplo**  
`{{sha512 "{{Hello World}}"}}` devuelve  
{{2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b}}

*restar*  
Devuelve la diferencia de dos números, con los puntos flotantes.  
**Uso**  
`{{subtract {{arg1}} {{arg2}}}}`  
**Ejemplo**  
`{{subtract {{5 2.3}}}} ` devuelve  
{{2.7}}

*uuid*  
Genera al azar un UUID en formato de 128 bits estándar. No es necesario ingresar ningún valor en el argumento.  
**Uso**  
`{{uuid}}`  
**Ejemplo**  
`{{uuid}} ` devuelve  
{{{{95f36680-152c-4052-99ec-cc3cdf7ca594}}}}

## Parciales insertados
<a name="inlinepartials"></a>

Aunque técnicamente no son una ayuda, los parciales insertados son una forma de Handlebar de optimizar las plantillas que incluyen cadenas repetidas, lo que facilita la reutilización. Para obtener más información, consulte [Parciales insertados](https://handlebarsjs.com/guide/partials.html#inline-partials) en [handlebarsjs.com](https://handlebarsjs.com). 

**Uso**

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

Para hacer referencia al contenido del parcial insertado en otro lugar, use:

` {{> inlineName}}`

**Ejemplo**

En el siguiente ejemplo se crea una función parcial insertada que incluye el nombre del destinatario y, si está disponible, los apellidos agregando el siguiente código al principio de la plantilla:

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

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

`{{/inline}}`

Después de crear la función parcial `fullName`, puede incluirla en cualquier lugar de la plantilla agregando delante del nombre de la función parcial un símbolo `>` (mayor que), seguido de un espacio, como en el siguiente ejemplo: `{{> fullName}}`.

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

devuelve el nombre y apellidos del usuario si es verdadero, por ejemplo,{{Hello Jane Doe}}. De lo contrario, si no se encuentra ningún apellido, {{Hello Jane}} se devuelve.

Los handlebars incluyen características adicionales además de las documentadas aquí. Para obtener más información, consulte [handlebarsjs.com](https://handlebarsjs.com/).

## Uso de variables con ayudantes de plantillas de mensajes
<a name="template-helpers-variables"></a>

Los atributos personalizados de Amazon Pinpoint, por ejemplo `User.UserAttributes.LastName`, se almacenan como una lista, independientemente de si hay un solo elemento o varios. Al pasar una lista a un ayudante que espera una cadena, debe especificar el valor del índice del atributo junto con el nombre del atributo. Este valor del índice de atributos indica la posición de un valor de la lista de atributos: `.[0]` para la primera entrada de la lista, `.[1]` para la segunda, `.[2]` para la tercera, etc. Por ejemplo, supongamos que está utilizando el asistente `upper` para convertir la primera entrada (`[0]`) de `User.UserAttributes.LastName` en mayúsculas. El uso del ayudante es `{{upper {{value}}}}` y el atributo tiene el formato correspondiente `User.UserAttributes.LastName`. {{value}}Sustitúyalo por el nombre del atributo y el valor del índice del atributo de la `{{.[0]}}` siguiente manera:`{{upper User.UserAttributes.LastName.[0]}}`. A continuación, la respuesta devuelve la entrada `[0]` de la lista, formateada en mayúsculas. Por ejemplo, si el valor de `[0]` es{{Santos}}, la respuesta devuelve{{SANTOS}}. 

Los nombres de los atributos personalizados de Amazon Pinpoint admiten espacios. Para tener un atributo personalizado llamado `"Last Name"`, debe formatear el atributo como `User.UserAttributes.[Last Name]`. Para acceder a la primera entrada de la lista de índices de atributos, el formato es `User.UserAttributes.[Last Name].[0]`.

Un nombre de atributo personalizado puede contener hasta 50 caracteres. Un valor de atributo puede contener hasta 100 caracteres. Al definir el nombre de un atributo personalizado, evite utilizar los siguientes caracteres: signo numérico (\#), dos puntos (:), signo de interrogación (?) , barra diagonal inversa (\\) y barra diagonal (/). La consola Amazon Pinpoint no puede mostrar nombres de atributos que contengan estos caracteres. Esta restricción no se aplica a los valores de atributo.

## Uso de ayudantes anidados
<a name="template-helpers-nesting"></a>

 Puede agrupar varios ayudantes de plantillas de mensajes uno dentro del otro. El siguiente ejemplo muestra cómo aplicar formato a dos ayudantes: `{{ first helper (second helper)}}`. El segundo ayudante se procesa primero, seguido del primer ayudante. Recuerde que el primer ayudante siempre determina el resultado. Los ayudantes posteriores deben estar anidados dentro del ayudante anterior de la siguiente manera: `{{ first helper (second helper (third helper) )}}`.

El siguiente ejemplo muestra cómo anidar dos ayudantes para cambiar **JANE** a **Jane**: `{{capitalizeFirst (lower "JANE")}}`. `lower` primero convierte **JANE** en **jane**. Luego `capitalizeFirst` convierte **jane** en **Jane**.