

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar assistentes de modelos de mensagem
<a name="message-template-helpers"></a>

Com os modelos do Amazon Connect, os clientes podem criar modelos de mensagem reutilizáveis com base na linguagem Handlebars.js. Os assistentes fornecem uma variedade de recursos, como formatar um preço para a moeda de uma Região específica ou adicionar um local com base no fuso horário. Um assistente pode usar uma string ou número inteiro específico para o valor ou para uma variável de mensagem específica do Amazon Connect.

As categorias de assistentes estão descritas nas seções a seguir.

## Assistentes padrão
<a name="defaulthelpers"></a>

Esta seção descreve os assistentes **integrados** fornecidos pelo Handlebars. 

**Importante**  
O auxiliar `with` integrado fornecido pelo Handlebars não é aceito. No entanto, todos os outros auxiliares do Handlebars são totalmente aceitos. Para ver a lista completa, consulte [Built-in Helpers](https://handlebarsjs.com/guide/builtin-helpers.html) em [handlebarsjs.com](https://handlebarsjs.com). 

 Os assistentes integrados são os seguintes:
+ `each`: itera uma lista.
**nota**  
O tamanho máximo da lista é de 15 itens.
+ `if`: avalia uma declaração.

*cada*  
Itera uma lista. Esse assistente usa somente uma declaração de bloco. Você pode, opcionalmente:   
+ Passar `@index` na solicitação para fazer referência ao índice de loop atual.
+ Usar o assistente `this` para referenciar o elemento atual que está sendo iterado.
+ Retornar a resposta do assistente em uma lista, usando a tag `<li>`.
**Uso**  
`{{#each {{value}}}}`  
O valor na posição `{{@index}}` é `{{this}}`.  
`{{else}}`  
A condição é falsa.  
`{{/each}}`  
`each` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/each}}` na declaração de bloco.  
**Exemplo**  
Neste exemplo, `each` é usado para retornar uma lista das cores favoritas de um usuário. Para `false`, uma declaração `else` é retornada. Se a solicitação for essa:  
`{{#each User.UserAttributes.FavoriteColors}}`  
`<li>{{this}}</li>`  
`{{else}}`  
{{You have no favorite colors.}}  
`{{/each}}` retorna  
+ {{red}}
+ {{blue}}
+ {{yellow}}
para uma declaração verdadeira.

*se*  
Avalia se algo é verdadeiro e retorna uma resposta com base na avaliação.   
**Uso**  
`{{#if {{value}}}}`  
O valor é indefinido  
`{{else}}`  
O valor é indefinido  
`{{/if}}`  
`if` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/if}}` na declaração de bloco.  
**Exemplo**  
Neste exemplo, o assistente `if` é usado para avaliar o primeiro nome de um usuário. Se o nome for encontrado, será retornada uma saudação que passa o primeiro nome do usuário na resposta. Caso contrário, a declaração `else` retornará uma saudação alternativa.  
`{{#if User.UserAttributes.FirstName.[0]}}`  
`{{Hello}} {{User.UserAttributes.FirstName.[0]}}{{,}}`  
`{{else}}`  
{{Hello,}}  
`{{/if}}`  
retorna {{Hello, Jane}} se o `if` auxiliar for verdadeiro.

## Assistentes condicionais
<a name="conditionhelpers"></a>

Esta seção descreve os assistentes **condicionais**. 

Os assistentes condicionais podem ser usados em uma única linha ou em uma declaração de bloco. Você pode personalizar a resposta independentemente do método assistente usado. Você pode passar assistentes condicionais adicionais em declarações de linha única e de bloco. Os seguintes assistentes condicionais mostram, primeiramente, o uso de uma única linha e, depois, de uma declaração de bloco usando uma cláusula opcional `else`. Os assistentes condicionais são os seguintes:
+ `and`: compara se todos os elementos passados são iguais.
+ `eq`: testa se dois elementos são iguais.
+ `gt`: testa se um elemento é maior que outro.
+ `gte`: testa se um elemento é maior ou igual a outro.
+ `if`: avalia se algo é verdadeiro.
+ `lt`: testa se um elemento é menor que outro.
+ `lte`: testa se um elemento é menor ou igual a outro.
+ `neq`: avalia se dois elementos não são iguais.
+ `not`: inverte a resposta de uma operação booleana.
+ `or`: compara se algum dos elementos do argumento é igual.

*and*  
Compara se *todos* os elementos passados em um argumento são iguais e retorna a resposta com base no resultado. Esse assistente pode ser usado para valores não booleanos. Você deve passar pelo menos dois elementos para a condição.  
**Uso**  
+ `{{and {{valuea}} {{valueb}} {{valuec}} {{valued}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#and {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/and}}`

  `and` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/and}}` na declaração de bloco.
**Exemplo**  
Neste exemplo, `eq` é usado na declaração de bloco `and` para determinar se ambas as cadeias de caracteres passadas para os atributos `Location.City ` e `Location.Country` são verdadeiras. Se as duas condições forem iguais, uma declaração verdadeira será retornada. Se algum desses atributos for falso, uma declaração `else` será retornada.  
`{{#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*  
Testa se dois elementos são iguais ou se o valor de um elemento é igual a uma cadeia de caracteres passada.  
**Uso**  
+ `{{eq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#eq {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/eq}}`

  `eq` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/eq}}` na declaração de bloco.
**Exemplo**  
Neste exemplo, `eq` é usado para avaliar se o valor de `User.UserAttributes.FavoriteColors.[0]` é{{Red}}. Se a resposta for `true`, uma declaração verdadeira será retornada. Se a resposta for `false`, uma declaração `else` será retornada.  
`{{#eq User.UserAttributes.FavoriteColors.[0] "{{red}}"}}`  
{{Your favorite color is red.}}  
`{{else}}`  
{{You don't like red.}}  
`{{/eq}}`

*gt*  
Testa se o valor de um elemento é maior que o de outro.   
**Uso**  
+ `{{gt {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#gt {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/gt}}`

  `gt` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/gt}}` na declaração de bloco.
**Exemplo**  
Neste exemplo, o auxiliar compara o valor do `User.UserAttributes.UserAge.[0]` atributo com uma string{{17}}, para verificar se a idade do usuário é maior que 17. Se a resposta for `true`, uma declaração verdadeira será retornada. Se a resposta for `false`, uma declaração `else` será retornada.  
`{{#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*  
Testa se o valor de um elemento é maior ou igual a outro.  
`Usage`  
+ `{{gte {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#gte {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/gte}}`

  `get` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/gte}}` na declaração de bloco.
**Exemplo**  
Neste exemplo, o auxiliar compara o `User.UserAttributes.UserAge.[0]` atributo com uma string{{18}}, para verificar se a idade do usuário é maior ou igual a 18. Se a resposta for `true`, uma declaração verdadeira será retornada. Se a resposta for `false`, uma declaração `else` será retornada.  
`{{#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}}`

*se*  
Avalia se algo é verdadeiro e retorna uma resposta com base na avaliação.  
**Uso**  
+ `{{#if {{value}}}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#if {{value}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/if}}`

  `if` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/if}}` na declaração de bloco.
**Exemplo**  
Neste exemplo, o assistente é usado para avaliar o primeiro nome de um usuário. Se o nome for encontrado, será retornada uma saudação que passa o primeiro nome do usuário na resposta. Caso contrário, a declaração else retornará uma saudação alternativa.  
`{{#if User.UserAttributes.FirstName.[0]}}`  
{{Hello}} `{{User.UserAttributes.FirstName.[0]}}`{{,}}  
`{{else}}`  
{{Hello,}}  
`{{/if}}`  
retorna {{Hello Jane,}} se o auxiliar for verdadeiro.

*lt*  
Testa se o valor de um elemento é menor que o valor de outro.  
**Uso**  
+ `{{lt {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#lt {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/lt}}`

  `lt` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/lt}}` na declaração de bloco.
**Exemplo**  
Neste exemplo, o auxiliar compara o `User.UserAttributes.UserAge.[0]` atributo com uma string {{18}} para verificar se a idade do usuário é menor que 18 anos. Se a resposta for `true`, uma declaração verdadeira será retornada. Se a resposta for `false`, uma declaração `else` será retornada.  
`{{#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*  
Testa se o valor de um elemento é menor ou igual a outro.  
**Uso**  
+ `{{lte {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#lte {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/lte}}`

  `lte` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/lte}}` na declaração de bloco.
**Exemplo**  
Nessa declaração de bloco, o auxiliar compara o `User.UserAttributes.UserAge.[0]` atributo com uma string {{17}} para verificar se a idade do usuário é igual a 17 anos ou menos. Se a resposta for `true`, uma declaração verdadeira será retornada. Se a resposta for `false`, uma declaração `else` será retornada.  
`{{#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*  
Teste se dois elementos *não* são iguais.  
**Uso**  
+ `{{neq {{valuea}} {{valueb}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#neq {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/neq}}`

  `neq` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/neq}}` na declaração de bloco.
**Exemplo**  
Nessa declaração de bloco, o atributo `User.UserAttributes.FavoriteColors.[0]` é verificado em relação a uma cadeia de caracteres, `{{Red}}`. Se a resposta for `true`, uma declaração verdadeira será retornada. Se a resposta for `false`, uma declaração `else` será retornada.  
`{{#neq User.UserAttributes.Favorite.Colors.[0] "{{red}}"}}`  
{{You do not like red.}}  
`{{else}}`  
{{You like red.}}  
`{{/neq}}`

*not*  
Inverte a resposta de uma operação booleana, de forma que, se `not` for uma comparação positiva, uma declaração `true` será retornada. Se a resposta for falsa, uma declaração else será retornada.   
**Uso**  
+ `{{not {{value}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição.
+ `{{#not {{value}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/not}}`

  `not` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/not}}` na declaração de bloco.
**Exemplo**  
Nessa instrução de bloco, o `User.UerAttributes.FavoriteColors.[0]` atributo é verificado em relação a uma string{{red}}, usando o `eq` auxiliar. O assistente `not` então retorna o oposto do assistente `eq`. Se a resposta retornar qualquer cor diferente de{{red}}, `true` uma declaração a será retornada. Se a resposta retornar{{red}}, uma `else` declaração será retornada indicando uma declaração falsa.  
`{{#not (eq User.UserAttributes.Favorite.Colors.[0] "{{red}}")}}`  
{{You do not like red.}}  
`{{else}}`  
{{You like red.}}  
`{{/not}}`  
**Exemplo**  
Neste exemplo,   
`{{not (eq User.UserAttributes.FavoriteColors.[0] "{{red}}")}}`  
retorna falso se `User.UserAttributes.FavoriteColors.[0]` for{{red}}.

*or*  
Compara se *algum* dos elementos no argumento é igual e retorna uma resposta com base no resultado. Esse assistente pode ser usado para valores não booleanos.  
**Uso**  
+ `{{or {{valuea}} {{valueb}} {{valuec}} {{valued}} yes='{{y}}' no='{{n}}'}}`

  Você pode {{n}} substituir {{y}} e por outros valores, como {{yes}} and{{no}}, ou qualquer outra string que você deseja retornar, dependendo da condição. Você deve passar pelo menos dois elementos para a condição.
+ `{{#or {{valuea}} {{valueb}}}}`

  A condição é verdadeira.

  `{{else}}`

  A condição é falsa.

  `{{/or}}`

  `or` deve ser precedido por um sinal de libra (`#`) e concluir com um fechamento `{{/or}}` na declaração de bloco.
**Exemplo**  
Nessa declaração de bloco `or`, duas cadeias de caracteres do atributo `Location.City`são comparadas, adicionalmente, usando o assistente `eq`. Se algum dos atributos for `true`, uma declaração verdadeira será retornada. Se uma ou mais das respostas forem `false`, uma declaração `else` será retornada.  
`{{#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}}`

## Assistentes de cadeia de caracteres
<a name="stringhelpers"></a>

Esta seção descreve os seguintes assistentes de **cadeia de caracteres**:
+ `abbreviate`: trunca um valor.
+ `capitalize`: coloca cada palavra entre espaços em branco.
+ `capitalizeFirst`: capitaliza o primeiro caractere de um valor.
+ `center`: centraliza um valor.
+ `cut`: corta um valor.
+ `dateFormat`: define o estilo da data.
+ `inflect`: retorna uma cadeia de caracteres singular ou plural com base na contagem.
+ `join`: une uma matriz, iterador ou objeto iterável.
+ `ljust`: justifica um valor na margem esquerda.
+ `lower`: converte um valor em letras minúsculas.
+ `now`: imprime a data atual.
+ `ordinalize`: transforma um valor numérico em número decimal.
+ `replace`: substitui uma cadeia de caracteres por outra.
+ `rjust`: justifica um valor na margem direita.
+ `slugify`: converte um valor em letras minúsculas e remove caracteres que não sejam palavras, converte espaços em hifens e remove o espaço em branco à direita.
+ `stripTags`: retira as tags [X]HTML de um valor.
+ `substring`: retorna uma nova cadeia de caracteres como sub-cadeia de um valor passado.
+ `upper`: converte o valor passado em letras maiúsculas.
+ `yesno`: substitui verdadeiro, falso e não por Sim, Não e Talvez.

*abreviar*  
Trunca um valor se este exceder o número especificado. Os espaços em branco estão incluídos na contagem de comprimento. Reticências são exibidas na resposta para indicar um valor truncado. As reticências contam para o valor truncado na resposta. Esse tipo de assistente é útil se você tiver uma mesa grande e espaço mínimo. Truncar valores em uma célula permite que você tenha uma aparência mais uniforme da tabela.  
**Uso**  
 `{{abbreviate {{value}} {{X}}}}`, {{X}} substituindo por um valor numérico indicando o número de caracteres a serem mantidos. Não há suporte para números negativos.  
**Exemplo**  
Neste exemplo, `abbreviate` é usado para truncar `User.UserAttributes.LastName.[0]` para seis (6) caracteres. A resposta inclui reticências, cujos pontos contam para o total de seis caracteres.  
`{{abbreviate {{User.UserAttributes.LastName.[0]}} {{6}}}}` retorna  
{{Ale...}}se {{Alejandro}} é o valor de`[0]`.

*capitalize*  
Capitaliza cada palavra entre espaços em branco.  
**Uso**  
 `{{capitalize {{value}}}}`  
**Exemplo**  
Neste exemplo, a capitalização inicial é aplicada a cada palavra da entrada `Attributes.description.[0]`.  
`{{capitalize {{Attributes.description.[0]}}}}`  
Se `Attributes.description.[0]` retornar   
 {{My First Post}}, se o valor de `Attributes.description.[0]` for{{my first post}}.

*capitalizeFirst*  
Capitaliza o primeiro caractere de um valor.  
**Uso**  
`{{capitalizeFirst {{value}}}}`  
**Exemplo**  
Neste exemplo, a capitalização é aplicada ao primeiro caractere da primeira palavra da entrada `Attributes.description.[0]`.  
`{{capitalizeFirst {{Attributes.description.[0]}}}}` retorna  
 {{My first post}}, se o valor de `{{Attributes.description.[0]}}` for{{my first post}}.  
**Exemplo**

*center*  
Centraliza o valor em um campo de uma determinada largura pelo número especificado. Opcionalmente, você pode passar um caractere para exibir no preenchimento ou deixar o campo em branco. Se nenhum caractere for passado, um espaço em branco será usado.  
**Uso**  
 `{{center {{value}} size={{X}} [pad=" "}}`, {{X}} substituindo por um valor numérico.  
Se `pad` for mantido em branco, o espaço em branco será usado como preenchimento na resposta. Se você passar um caractere, esse caractere será exibido em cada espaço do preenchimento. Não há suporte para números negativos.  
**Exemplo**  
Neste exemplo, o valor de `Location.City ` é centralizado com um tamanho de{{19}}.  
`{{center {{Location.City}} size={{19}}}}` retorna   
{{"    Los Angeles    "}}Se `Location.City` for{{Los Angeles}}. Observe que as aspas exibidas no exemplo são fornecidas apenas para dar ênfase.

*cut*  
Remove o valor especificado de uma cadeia de caracteres.   
**Uso**  
 `{{cut {{value}} [{{" "}}]}}`, substituindo o espaço dentro do parâmetro de aspas pelo valor a ser cortado. Se nenhum valor de parâmetro for passado, um espaço em branco será usado.   
**Exemplo**  
Este exemplo remove a letra {{e}} do `Location.City` atributo.  
`{{cut Location.City "{{e}}"}}` retorna  
{{Los Angls}}se `[Location.City` é{{Los Angeles}}.

*dateFormat*  
Define o estilo de data padrão para a data em qualquer resposta. Para obter uma lista do fuso horário 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]}}`  
O parâmetro `format` deve ser:  
+ “`full`“: formato de data completo. Por exemplo: {{Tuesday, September 19, 2020}}
+ “`long`“: formato de data longo. Por exemplo: {{September 19, 2020}}
+ “`medium`“: formato de data médio. Por exemplo: {{Sept 19, 2020}}
+ “`short`“: formato de data abreviada. Por exemplo: {{9/19/20}}
+ “`pattern`“: usa um formato de padrão de data personalizado. Para obter mais informações sobre padrões de datas, 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`“: usa um formato de data baseado em uma determinada localidade. Para mais informações sobre esses locais, 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-).  
Se um formato não for passado, `medium` será usado por padrão.   
**Exemplo**  
Neste exemplo, a `[0]` entrada para `{{User.UserAttributes.StartDate.[0]}}` é **09/19/2020** e uma mensagem é enviada a um usuário usando o formato de `full` data com base no fuso {{America/Los\_Angeles}} horário.  
`We can meet with you any time on ``{{dateFormat User.UserAttributes.StartDate.[0] inputFormat="MM/dd/yyyy" outputFormat="full" tz=America/Los_Angeles}}.` retorna  
{{We can meet with you any time on Tuesday, September 19, 2020.}}

*inflect*  
Retorna uma cadeia de caracteres singular ou plural com base no valor de contagem.  
**Uso**  
 `{{inflect {{count}} {{singular}} {{plural}} [includeCount=false]}}`  
+ Insira as formas singular e plural da cadeia de caracteres que você deseja passar no argumento.
+ Se `includeCount` estiver definido como `false`, nenhuma contagem será retornada na resposta. Se definido como `true`, o `count` é incluído na resposta.
**Exemplo**  
Os exemplos a seguir mostram a inflexão de uma compra de maçãs, com e sem `includeCount`.  
`Thank you for your purchase of {{inflect {{3}} {{apple}} {{apples}} includeCount={{false}}}}.` retorna:  
{{Thank you for your purchase of apples.}}  
Se `includeCount` estiver definido como `true`, a resposta será  
{{Thank you for your purchase of 3 apples.}}

*ingressar*  
Une uma matriz, um iterador ou um objeto iterável. A resposta retorna uma lista, com cada valor na lista concatenado pelo caractere que você passa no `join`. Por exemplo, você pode separar valores usando uma vírgula (`,`). O valor nesse assistente deve ser uma lista sem um índice de posição do atributo. Por exemplo, pode ser `Attributes.custom_attribute`.  
**Uso**  
`{{join {{value}} " // " [prefix=""] [suffix=""]}}`  
**Exemplo**  
Neste exemplo, uma lista de cores é retornada, com a lista separada por uma vírgula e um espaço (`", "`):  
`{{join {{Attributes.favorite_colors}} "{{, }}"}}` retorna   
{{blue, red, green}}se `Attributes.favorite_colors` é a lista{{blue,red,green}}.

*ljust*  
Justifica o valor na margem esquerda e adiciona espaço à direita, para que o comprimento do valor corresponda ao número. Não há suporte para números negativos.  
Opcionalmente, você pode passar um caractere para exibir no `pad` ou deixar o campo em branco. Se você deixar o valor `pad` em branco, o valor padrão será um espaço em branco.  
**Uso**  
`{{ljust {{value}} size={{X}} [pad=" "]}}`, onde {{X}} é o comprimento total do valor, incluindo espaço em branco.   
**Exemplo**  
Neste exemplo, um valor de justificação à esquerda de {{15 }} é aplicado ao Location.City.  
`{{ljust {{Location.City}} size={{15}}}}` retorna  
{{"Los Angeles    "}}se o valor de `Location.City` for{{Los Angeles}}. Observe que as aspas exibidas no exemplo são fornecidas apenas para dar ênfase.

*lower*  
Converte um valor em todas as letras minúsculas.  
**Uso**  
`{{lower {{value}}}}`  
**Exemplo**  
Neste exemplo, a entrada `[0]` para `User.UserAttributes.LastName.[0]` é alterada para minúscula.  
`{{lower {{User.UserAttributes.LastName.[0]}}}}` retorna  
{{santos}}se {{Santos}} é o valor de`[0]`.

*agora*  
Imprime a data atual com base no ID de fuso horário aprovado. Para obter uma lista do fuso horário 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"] [tz=timeZoneId] [locale=localeID]}}`  
O parâmetro `format` deve ser:  
+ “`full`“: formato de data completo. Por exemplo: {{Tuesday, September 19, 2020}}
+ “`long`“: formato de data longo. Por exemplo: {{September 19, 2020}}
+ “`medium`“: formato de data médio. Por exemplo: 19 de set de 2020
+ “`short`“: formato de data abreviada. Por exemplo: 19/09/20
+ “`pattern`“: um padrão de data. Para obter mais informações sobre padrões de datas, 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`“: usa um formato de data baseado em uma determinada localidade. Para mais informações sobre esses locais, 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-).  
Se um formato não for passado, `medium` será usado por padrão.  
**Exemplo**  
Neste exemplo, a data atual em Los Angeles é retornada com um formato `medium`.  
`{{now "medium" tz={{America/Los_Angeles}}}}` retorna   
{{Sept 19, 2020}}.

*ordinalize*  
Ordena o valor numérico passado no argumento. Por exemplo, {{1}} é ordinalizado como {{1st}} e {{2}} como{{2nd}}. Somente valores numéricos são compatíveis.  
**Uso**  
`{{ordinalize [{{number}}]}} `  
**Exemplo**  
Neste exemplo, a entrada `[0]` de `User.UserAttributes.UserAge` é transformada em número ordinal e retornada junto com uma mensagem.   
`Congratulations on your {{ordinalize User.UserAttributes.UserAge.[0]}} birthday!`retorna {{22}} ordinalizado como{{22nd}}.  
{{Congratulations on your 22nd birthday\!}}

*subtituir*  
Substitui uma cadeia de caracteres por outra. Uma cadeia de caracteres ou um valor numérico deve ser literal. Caracteres curinga não são compatíveis.  
**Uso**  
`{{replace {{stringToReplace}} {{replacementValue}}}}`  
**Exemplo**  
Neste exemplo, um sublinhado (\_) substitui um espaço em branco.  
`{{replace {{Location.City}} {{" " "_"}}}}` retorna  
{{Los\_Angeles}}se `Location.City ` for o caso{{Los Angeles}}.

*rjust*  
Justifica o valor na margem esquerda e adiciona espaço à esquerda, para que o comprimento do valor corresponda ao número. Não há suporte para números negativos.  
Opcionalmente, você pode passar um caractere para exibir no `pad` ou manter o campo em branco. Se você deixar o valor `pad` em branco, o valor padrão será um espaço em branco.  
**Uso**  
`{{rjust {{value}} size={{X}} [pad=" "]}}`, onde {{X}} é o comprimento total do valor, incluindo espaço em branco.   
**Exemplo**  
Neste exemplo, um valor de justificação correta de {{15}} é aplicado ao `Location.City` atributo.  
`{{rjust {{Location.City}} size={{15}}}}` retorna  
{{"    Los Angeles" }}. se `Location.City` for{{Los Angeles}}. Observe que as aspas exibidas no resultado são fornecidas apenas para dar ênfase.

*slugify*  
Converte o valor passado em letras minúsculas, remove caracteres que não são palavras (alfanuméricos ou sublinhados), converte espaços em hifens e remove espaços em branco à direita e à esquerda.  
**Uso**  
`{{slugify {{value}}}}`  
**Exemplo**  
Neste exemplo, o slugify é executado para o atributo `Location.City`.   
`{{slugify {{Location.City}}}}` retorna  
{{los-angeles}}se `Location.City` é{{Los Angeles}}.

*stripTags*  
Retira as tags [X]HTML de um valor.  
**Uso**  
 `{{stripTags {{value}}}}`  
**Exemplo**  
Neste exemplo, as tags HTML para o usuário. UserAttributes.interest. [0] são removidos.   
`{{stripTags {{User.UserAttributes.interests.[0]}}}}` retorna  
{{Art}}, se `User.UserAttributes.interests.[0]` for`<h1>Art</h1>`.

*substring*  
Retorna uma nova cadeia de caracteres como sub-cadeia do valor passado. O comprimento e a posição são determinados pelos parâmetros `startOffset` e `endOffset`, que devem ser números inteiros. Não há suporte para números negativos. Se um `endOffset` não for passado, a sub-cadeia usará o valor final original da cadeia de caracteres.  
**Uso**  
`{{substring {{value}} {{startOffset}} {{[endOffset]}}}}`  
**Exemplo**  
Neste exemplo, um offset de 4 e endOffset de 9 são aplicados ao atributo Location.City.   
`{{substring {{Location.City 4 9}}}} ` retorna  
`{{Angel}}`se Los Angeles é o valor de `Location.City` é{{Los Angeles}}.

*upper*  
Converte o valor passado em letras maiúsculas.  
**Uso**  
`{{upper {{value}}}}`  
**Exemplo**  
Neste exemplo, todas as letras da entrada `[0] ` do atributo `User.UserAttributes.LastName` são convertidas em maiúsculas.  
`{{upper User.UserAttributes.LastName.[0]}}` retorna  
{{ROE}}se o `User.UserAttributes.LastName.[0]` valor for{{Roe}}.

*yesno*  
Substitui `true`, `false` e `NULL` por `Yes`, `No` e `Maybe`.  
**Uso**  
`{{yesno value [yes="yes"] [no="no"] maybe=["maybe"]}}`  
**Exemplo**  
Neste exemplo, o atributo `IsUserSubscribed` retorna se um usuário está inscrito em uma lista específica.  
`{{yesno Attributes.IsUserSubscribed}}` retorna   
{{yes}}se `Attributes.IsUserSubscribed` é{{true}}.

## Assistentes de matemática e codificação
<a name="mathhelpers"></a>

Esta seção descreve os assistentes de **matemática e codificação**.
+ `add`: retorna a soma de dois números.
+ `ceiling`: arredonda um número inteiro até seu teto matemático.
+ `decode64`: decodifica um valor codificado em base64 em uma cadeia de caracteres.
+ `divide`: retorna o quociente de dois números.
+ `encode64`: codifica uma cadeia de caracteres usando base64.
+ `floor`: arredonda um número inteiro até seu piso matemático.
+ `md5`— Faz o hash de uma string passada usando o MD5 algoritmo.
+ `modulo`: retorna o resto de dois números usando pontos flutuantes.
+ `multiply`: retorna o produto de dois números.
+ `round`: arredonda um decimal para o número inteiro mais próximo.
+ `sha256`: faz o hash de uma cadeia de caracteres passada usando SHA-256.
+ `sha512`: faz o hash de uma cadeia de caracteres passada usando SHA-512.
+ `subtract`: retorna a diferença de dois números.
+ `uuid`: gera aleatoriamente um UUID em um formato de 128 bits.

*add*  
Retorna a soma de dois números junto com vírgulas flutuantes.  
**Uso**  
`{{add {{arg1}} {{arg2}}}}`  
**Exemplo**  
`{{add {{5 2.3}}}} ` retorna  
{{7.3}}

*ceiling*  
Arredonda um inteiro até seu teto matemático, que é o maior número inteiro mais próximo do valor passado.  
**Uso**  
`{{ceiling {{value}}}}`  
**Exemplo**  
`{{ceiling {{5.23}}}}` retorna  
{{6}}

*decode64*  
Decodifica um valor codificado em base64 em uma cadeia de caracteres.  
**Uso**  
`{{decode64 "{{string}}"}}`  
**Exemplo**  
`{{decode64 "{{SGVsbG8gd29ybGQ}}="}}` retorna  
{{Hello World}}

*divide*  
Retorna o quociente de dois números, incluindo vírgulas flutuantes.  
**Uso**  
 `{{divide {{arg1}} {{arg2}}}}`  
**Exemplo**  
`{{divide {{5 2.3}}}}` retorna  
{{2.17391304}}

*encode64*  
Codifica a cadeia de caracteres passada no argumento usando base64.  
**Uso**  
`{{encode64 "{{string}}"}}`  
**Exemplo**  
`{{encode64 "{{Hello World"}}}}`  
{{SGVsbG8gd29ybGQ=}}

*floor*  
Arredonda um número inteiro para seu piso matemático, que é o menor número inteiro mais próximo do valor passado.  
**Uso**  
`{{floor {{value}}}}`  
**Exemplo**  
`{{floor {{5.23}}}}` retorna  
{{5}}

*md5*  
Faz o hash de uma string passada usando o MD5 algoritmo.  
**Uso**  
`{{md5 "{{string}}"}}`  
**Exemplo**  
`{{md5 "{{Hello World}}"}}`  
{{3e25960a79dbc69b674cd4ec67a72c62}}

*modulo*  
Retorna o resto de dois números usando vírgulas flutuantes.  
**Uso**  
`{{modulo {{arg1}} {{arg2}}}}`  
**Exemplo**  
`{{modulo {{7 2}}}}` retorna  
{{1}}

*multiply*  
Retorna o produto de dois números junto com vírgulas flutuantes.  
**Uso**  
`{{multiply {{arg1}} {{arg2}}}}`  
**Exemplo**  
`{{multiply {{5 2.3}}}}` retorna  
{{11.5}}

*round*  
Arredonda uma casa decimal para cima ou para baixo para o número inteiro mais próximo.  
**Uso**  
`{{round {{value}}}}`  
**Exemplo**  
`You spent an average of {{round {{19.21}}}} minutes on our website each day.` retorna:  
{{You spent an average of 19 minutes on our website each day.}}

*sha256*  
Faz o hash de uma cadeia de caracteres passada usando a segurança criptográfica SHA-256.  
**Uso**  
`{{sha256 "{{string}}"}}`  
**Exemplo**  
`{{sha256 "{{Hello World}}"}}` retorna  
{{a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e}}

*sha512*  
Faz o hash de uma cadeia de caracteres passada usando a segurança criptográfica SHA-512.  
**Uso**  
`{{sha512 "{{string}}"}}`  
**Exemplo**  
`{{sha512 "{{Hello World}}"}}` retorna  
{{2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b}}

*subtract*  
Retorna a diferença de dois números junto com vírgulas flutuantes.  
**Uso**  
`{{subtract {{arg1}} {{arg2}}}}`  
**Exemplo**  
`{{subtract {{5 2.3}}}} ` retorna  
{{2.7}}

*uuid*  
Gera aleatoriamente um UUID em um formato padrão de 128 bits. Nenhum valor precisa ser passado no argumento.  
**Uso**  
`{{uuid}}`  
**Exemplo**  
`{{uuid}} ` retorna  
{{{{95f36680-152c-4052-99ec-cc3cdf7ca594}}}}

## Parciais em linha
<a name="inlinepartials"></a>

Embora tecnicamente não sejam assistentes, as parciais em linha são uma forma do Handlebar de simplificar modelos que incluem cadeias de caracteres repetidas, facilitando a reutilização. Para obter mais informações, consulte [Inline partials](https://handlebarsjs.com/guide/partials.html#inline-partials) em [handlebarsjs.com](https://handlebarsjs.com). 

**Uso**

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

Para referenciar o conteúdo da parcial em linha em outro lugar, use:

` {{> inlineName}}`

**Exemplo**

O seguinte exemplo cria uma parcial em linha que inclui o nome do destinatário e, se disponível, o sobrenome, adicionando o seguinte código no início do modelo:

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

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

`{{/inline}}`

Depois de criar a parcial `fullName`, você pode incluí-la em qualquer lugar em seu modelo colocando antes do nome da parcial um sinal de `>` (maior que), seguido por um espaço, como no exemplo a seguir: `{{> fullName}}`.

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

retorna o nome e o sobrenome do usuário, se verdadeiros — por exemplo,{{Hello Jane Doe}}. Caso contrário, se nenhum sobrenome for encontrado, {{Hello Jane}} será retornado.

O Handlebars inclui atributos adicionais além dos documentados aqui. Para obter mais informações, consulte [handlebarsjs.com](https://handlebarsjs.com/).

## Usar variáveis com assistentes de modelo de mensagem
<a name="template-helpers-variables"></a>

Os nomes de atributos personalizados do Amazon Connect comportam espaços. Para ter um atributo personalizado chamado `"Last Name"`, você precisa formatar o atributo como `Attributes.[Last Name]`. 

## Usar assistentes aninhados
<a name="template-helpers-nesting"></a>

 Você pode agrupar vários assistentes de modelos de mensagens dentro uns dos outros. O exemplo a seguir mostra como formatar dois assistentes: `{{ first helper (second helper)}}`. O segundo assistente é processado primeiro, seguido pelo primeiro. Lembre-se de que o primeiro assistente sempre determina a saída. Os assistentes subsequentes devem estar aninhados no assistente anterior da seguinte forma: `{{ first helper (second helper (third helper) )}}`.

O exemplo a seguir mostra como reunir dois assistentes para alterar **JANE** para **Jane**:`{{capitalizeFirst (lower "JANE")}}`. `lower` primeiro converte **JANE** em **jane**. Em seguida, `capitalizeFirst` converte **jane** em **Jane**.