

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á.

# Tipo de slot de gramática
<a name="building-srgs"></a>

Com o tipo de slot de gramática, você pode criar sua própria gramática no formato XML de acordo com a especificação SRGS para coletar informações em uma conversa. O Amazon Lex V2 reconhece expressões que correspondem às regras especificadas na gramática. Você também pode fornecer regras de interpretação semântica usando ECMAScript tags nos arquivos gramaticais. O Amazon Lex retorna propriedades definidas nas tags como valores resolvidos quando ocorre uma correspondência.

Só é possível criar tipos de slots de gramática nos idiomas inglês (Austrália), inglês (Reino Unido) e inglês (EUA).

Há duas partes em um tipo de slot de gramática. A primeira é a própria gramática escrita usando o formato de especificação SRGS. A gramática interpreta o enunciado do usuário. Se o enunciado for aceito pela gramática, ele será correspondido, caso contrário, será rejeitado. Se um enunciado for correspondido, ele será encaminhado para o script, se houver.

O segundo faz parte de um tipo de slot gramatical e é um script opcional escrito em ECMAScript que transforma a entrada nos valores resolvidos retornados pelo tipo de slot. Por exemplo, você pode usar um script para converter números falados em dígitos. ECMAScript as declarações estão incluídas no <tag>elemento. 

O exemplo a seguir está no formato XML de acordo com a especificação SRGS que mostra uma gramática válida aceita pelo Amazon Lex V2. Ele define um tipo de slot de gramática que aceita números de cartão e determina se eles são para contas regulares ou premium. Para mais informações sobre a sintaxe aceitável, consulte os tópicos [Definição de gramática](grammar-srgs-spec.md) e [Formato do script](grammar-ecmascript-spec.md).

```
<grammar version="1.0" xmlns="http://www.w3.org/2001/06/grammar"
         xml:lang="en-US" tag-format="semantics/1.0" root="card_number">

   <rule id="card_number" scope="public">
        <item repeat="0-1">
            card number
        </item>
        <item>
            seven
            <tag>out.value = "7";</tag>
         </item>
         <item>
            <one-of>
               <item>
                  two four one
                  <tag> out.value = out.value + "241"; out.card_type = "premium"; </tag>
               </item>
               <item>
                  zero zero one
                  <tag> out.value = out.value + "001"; out.card_type = "regular";</tag>
               </item>
            </one-of>
         </item>
   </rule>
</grammar>
```

A gramática acima aceita apenas dois tipos de números de cartão: 7241 ou 7001. Opcionalmente, ambos podem ser prefixados com “número do cartão”. Ele também contém ECMAScript tags que podem ser usadas para interpretação semântica. Com a interpretação semântica, o enunciado “cartão número sete, dois, quatro, um” retornaria o seguinte objeto:

```
{
    "value": "7241",
    "card_type": "premium"
}
```

Esse objeto é retornado como uma string serializada em JSON no `resolvedValues` objeto retornado pelas operações [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html), e. [RecognizeUtterance[StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)

## Adicionar um tipo de slot de gramática
<a name="adding-grammar-slot-type"></a>

**Adicionar um tipo de slot de gramática**

1. Faça upload da definição XML do tipo de slot para um bucket do S3. Anote o nome do bucket e o caminho para o arquivo.
**nota**  
O tamanho máximo do arquivo é 100 KB.

1. Faça login no AWS Management Console e abra o console do Amazon Lex em [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. No menu à esquerda, selecione **Bots** e escolha o bot ao qual adicionar o tipo de slot de gramática.

1. Selecione **Exibir idiomas** e escolha o idioma ao qual adicionar o tipo de slot de gramática.

1. Escolha **Exibir tipos de slots**.

1. Escolha **Adicionar tipo de slot** e selecione **Adicionar tipo de slot de gramática**.

1. Dê um nome ao tipo de slot e selecione **Adicionar**.

1. Escolha o bucket do S3 que contém o arquivo de definição e insira o caminho para o arquivo. Selecione **Salvar tipo de slot**.