Adicione condições às conversas ramificadas - Guia do desenvolvedor

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

Adicione condições às conversas ramificadas

Você pode usar a ramificação condicional para controlar o caminho que seu cliente percorre na conversa com seu bot. As condições podem ser definidas com base nos valores dos slots, nos atributos da sessão, no modo de entrada e na transcrição da entrada ou em uma resposta da Amazon Kendra.

É possível definir até quatro ramificações. Cada ramo tem uma condição que deve ser satisfeita para que o Amazon Lex V2 o siga. Se nenhuma das ramificações tiver sua condição satisfeita, uma padrão será seguida.

Ao definir uma ramificação, você define a ação que o Amazon Lex V2 deve realizar se as condições correspondentes a essa ramificação forem avaliadas como verdadeiras. Você pode definir usando qualquer um destes métodos:

  • Uma resposta enviada ao usuário.

  • Valores de slots a serem aplicados aos slots.

  • Valores de atributo de sessão para a sessão atual.

  • A próxima etapa da conversa. Para mais informações, consulte Criação de caminhos de conversação.


                Você pode escolher opções diferentes para ramificação condicional.

Cada ramo condicional tem uma expressão booleana que deve ser satisfeita para que o Amazon Lex V2 o siga. Existem operadores booleanos, funções e operadores quantificadores e de comparação que podem ser usados para suas condições. Por exemplo, a condição a seguir retornará verdadeira se o slot {age} for menor que 24.

{age} < 24

A condição a seguir retornará verdadeira se o slot de vários valores {toppings} contiver a palavra “abacaxi”.

{toppings} CONTAINS "pineapple"

Você pode combinar vários operadores de comparação com um operador booleano para condições mais complexas. Por exemplo, a condição a seguir retorna verdadeira se o valor do slot {make} for “Honda” e o valor do slot {model} for “Civic”. Use parênteses para definir a ordem de avaliação.

({make} = "Honda") AND ({model} = "Civic")

Os tópicos a seguir fornecem detalhes sobre os operadores e funções de ramificação condicional.

nota

Em 17 de agosto de 2022, o Amazon Lex V2 lançou uma mudança na forma como as conversas são gerenciadas com o usuário. Essa alteração oferece mais controle sobre o caminho que o usuário percorre na conversa. Para mais informações, consulte Compreender o gerenciamento do fluxo de conversas. Os bots criados antes de 17 de agosto de 2022 não são compatíveis com mensagens de hook de código de diálogo, definição de valores, configuração das próximas etapas e adição de condições.

Operadores de comparação

O Amazon Lex V2 oferece suporte aos seguintes operadores de comparação de condições:

  • Igual (=)

  • Não é igual (>)

  • Menor que (<)

  • Menor ou igual a (<=)

  • Maior que (>)

  • Maior ou igual a (>=)

Ao usar um operador de comparação, ele usa as seguintes regras.

  • O lado esquerdo deve ser uma referência. Por exemplo, para referenciar um valor de slot, você usa {slotName}. Para referenciar um valor de atributo de sessão, você usa [attribute]. Para o modo de entrada e a transcrição de entrada, você usa $.inputMode e $.inputTranscript.

  • O lado direito deve ser constante e do mesmo tipo do lado esquerdo.

  • Qualquer expressão que faça referência a um atributo que não tenha sido definido é tratada como inválida e não é avaliada.

  • Ao comparar um slot de vários valores, o valor usado é uma lista separada por vírgula de todos os valores interpretados.

As comparações são baseadas no tipo de slot da referência. Eles são resolvidos da seguinte forma:

  • Strings: strings são comparados com base em sua representação ASCII. A comparação diferencia maiúsculas de minúsculas.

  • Números: slots baseados em números são convertidos da representação da string em um número e depois comparados.

  • Data/hora: os slots baseados na hora são comparados com base na série temporal. A data ou hora anterior é considerada menor. Para durações, períodos mais curtos são considerados menores.

Operadores booleanos

O Amazon Lex V2 oferece suporte a operadores booleanos para combinar operadores de comparação. Ele permite a criação declarações semelhantes às seguintes:

({number} >= 5) AND ({number} <= 10)

Você também pode usar as seguintes operações:

  • E (&&)

  • OU (||)

  • NÃO (!)

Operadores quantificadores

Os operadores quantificadores avaliam os elementos de uma sequência e determinam se um ou mais elementos satisfazem a condição.

  • CONTÉM: determina se o valor especificado está contido em um slot de vários valores e retorna verdadeiro se estiver. Por exemplo, {toppings} CONTAINS "pineapple" retorna verdadeiro se o usuário pediu abacaxi em sua pizza.

Funções

As funções devem ser prefixadas com a string fn.. O argumento para a função é uma referência a um slot, atributo de sessão ou atributo de solicitação. O Amazon Lex V2 fornece duas funções para obter informações dos valores de slots, sessionAttribute ou requestAttribute.

  • fn.COUNT(): conta o número de valores em um slot de vários valores.

    Por exemplo, se o slot {toppings} contiver o valor “calabresa, abacaxi”:

    fn.COUNT({toppings}) = 2

  • Fn.IS_SET(): o valor é verdadeiro se um slot, atributo de sessão ou atributo de solicitação estiver definido na sessão atual.

    Com base no exemplo anterior:

    fn.IS_SET({toppings})

Expressões condicionais

Aqui estão alguns exemplos de expressões condicionais. OBSERVAÇÃO: $. representa o ponto de entrada para da resposta JSON do Amazon Lex. O valor a seguir $. será analisado na resposta do Amazon Lex para recuperar o valor. Expressões condicionais usando o bloco de referência de caminho JSON para transcrições na resposta do Amazon Lex só serão suportadas nas mesmas localidades que oferecem suporte às pontuações de transcrição do ASR.

Tipo de valor Caso de uso Expressões condicionais
Slot personalizado O valor do slot pizzaSize é igual a grande {pizzaSize} = "large"
Slot personalizado pizzaSize é igual a grande ou médio {pizzaSize} = "large" OU {pizzaSize} = "medium"
Slot personalizado Expressões com () e AND/OR {pizzaType} = "pepperoni" OU {pizzaSize} = "medium" OU {pizzaSize} = "small"
Slot personalizado (slot de vários valores) Verifique se uma das coberturas é cebola {toppings} CONTAINS "Onion"
Slot personalizado (slot de vários valores) O número de coberturas é superior a 3 fn.COUNT({topping}) > 2
AMAZON.AlphaNumeric bookingID é ABC123 {bookingID} = "ABC123"
AMAZON.Number o valor do slot de idade é maior que 30 {age} > 30
AMAZON.Number o valor do slot de idade é igual a 10 {age} = 10
AMAZON.Date O valor do slot dateOfBirth anterior a 1990 {dateOfBirth} < "1990-10-01"
AMAZON.State O valor do slot destinationState é igual a Washington {destinationState} = "washington"
AMAZON.Country O valor do slot destinationCountry não é Estados Unidos {destinationCountry} != "united states"
AMAZON.FirstName O valor do slot firstName é João {firstName} = "John"
AMAZON.PhoneNumber O valor do slot phoneNumber é 716767891932 {phoneNumer} = 716767891932
AMAZON.Percentage Verifique se o valor percentual do slot é maior ou igual a 78 {percentage} >= 78
AMAZON.EmailAddress O valor do slot emailAddress é userA@hmail.com {emailAddress} = "userA@hmail.com"
AMAZON.LastName O valor do slot lastName é Fulano {lastName} = "Doe"
AMAZON.City O valor do slot da cidade é igual a Seattle {city} = "Seattle"
AMAZON.Time O horário é depois das 20h {time} > "20:00"
AMAZON.StreetName O valor do slot streetName Boren Avenue {streetName} = "boren avenue"
AMAZON.Duration O valor do slot travelDuration é inferior a 2 horas {travelDuration} < P2H
Modo de entrada O modo de entrada é fala $.inputMode = "Speech"
Transcrição de entrada A transcrição de entrada é igual a “Quero uma pizza grande” $.inputTranscript = "I want a large pizza"
Atributos da sessão verifique o atributo customer_subscription_type [customer_subcription_type] = "yearly"
Atributos de solicitação verifique o sinalizador retry_enabled ((retry_enabled)) = "TRUE"
Resposta de Kendra A resposta de Kendra contém perguntas frequentes fn.IS_SET(((x-amz-lex:kendra-search-response-question_answer-question-1)))
Expressão condicional com transcrições Expressões condicionais usando o caminho JSON de transcrições $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence > 0.5
Definir atributos de sessão Defina os atributos da sessão usando transcrições, caminho JSON e valores de slot. [sessionAttribute] = "$.transcriptions..." AND [sessionAttribute] = "{<slotName>}"
Definir valores do slot Defina os atributos da sessão usando transcrições, caminho JSON e valores de slot. {slotName} = [<sessionAttribute>] AND {slotName} = "$.transcriptions..."
nota

slotName refere-se ao nome de um slot no bot Amazon Lex. Se o slot não for resolvido (nulo) ou se o slot não existir, as atribuições serão ignoradas em runtime. sessionAttribute refere-se ao nome do atributo da sessão que é definido pelo cliente no momento da criação.