Usando um tipo de slot gramatical personalizado - Amazon Lex

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

Usando um tipo de slot gramatical personalizado

Com o tipo de slot gramatical, 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 tags ECMAScript nos arquivos gramaticais. Em seguida, o Amazon Lex retorna as propriedades definidas nas tags como valores resolvidos quando ocorre uma correspondência.

Você só pode criar tipos de slots gramaticais nos idiomas inglês (Austrália), inglês (Reino Unido) e inglês (EUA).

Há duas partes em um tipo de slot gramatical. 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 corresponder, ele será passado para o script, se houver um.

O segundo é parte de um tipo de slot gramatical, 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. As instruções ECMAScript 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 gramatical que aceita números de cartão e determina se eles são para contas regulares ou premium. Para obter mais informações sobre a sintaxe aceitável, consulteDefinição gramática e osFormato de script tópicos.

<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. Ambos podem ser opcionalmente prefixados com “número do cartão”. Ele também contém tags ECMAScript que podem ser usadas para interpretação semântica. Com a interpretação semântica, o enunciado “carta número sete dois quatro um” retornaria o seguinte objeto:

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

Esse objeto é retornado como uma string serializada em JSON noresolvedValues objeto retornado pelas StartConversationoperações RecognizeTextRecognizeUtterance, e.

Adicionar um tipo de slot gramatical

Para adicionar um tipo de slot gramatical
  1. Faça upload da definição XML do seu 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 é de 100 MB.

  2. Faça login noAWS Management Console e abra o console do Amazon Lex em https://console.aws.amazon.com/lex/.

  3. No menu à esquerda, escolha Bots e, em seguida, escolha o bot ao qual adicionar o tipo de slot gramatical.

  4. Escolha Exibir idiomas e, em seguida, escolha o idioma ao qual adicionar o tipo de slot gramatical.

  5. Escolha Exibir tipos de slots.

  6. Escolha Adicionar tipo de slot e, em seguida, escolha Adicionar tipo de slot gramatical.

  7. Dê um nome ao tipo de slot e escolha Adicionar.

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