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 da filial
Você pode usar a ramificação condicional para controlar o caminho que seu cliente percorre na conversa com seu bot. Você pode ramificar a conversa com base nos valores dos slots, nos atributos da sessão, no conteúdo do modo de entrada e nos campos de transcrição de entrada ou em uma resposta do Amazon Kendra.
Você pode definir até quatro ramificações. Cada filial tem uma condição que deve ser satisfeita para que o Amazon Lex V2 siga essa ramificação. Se nenhuma das ramificações tiver sua condição satisfeita, uma ramificação padrão será seguida.
Ao definir uma ramificação, você define a ação que o Amazon Lex V2 deve tomar se as condições correspondentes a essa ramificação forem consideradas verdadeiras. Você pode definir qualquer uma das seguintes ações:
-
Uma resposta enviada ao usuário.
-
Valores de slot a serem aplicados aos slots.
-
Valores de atributo de sessão para a sessão atual.
-
A próxima etapa da conversa. Para obter mais informações, consulte Criação de caminhos de conversação.

Cada ramificação condicional tem uma expressão booleana que deve ser satisfeita para que o Amazon Lex V2 siga a ramificação. Existem operadores, funções e operadores quantificadores e de comparação e booleanos que você pode usar para suas condições. Por exemplo, a condição a seguir retorna 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 retornará 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 condicionais da ramificação.
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 obter mais informações, consulte Entendendo o gerenciamento do fluxo de conversas. Os bots criados antes de 17 de agosto de 2022 não suportam mensagens de gancho de código de diálogo, definição de valores, configuração de próximas etapas e adição de condições.
Tópicos
Operadores de comparação
O Amazon Lex V2 oferece suporte aos seguintes operadores de comparação de condições:
-
É igual a (=)
-
Não é igual a (! =)
-
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
$.inputTranscript
e. -
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.
-
Quando você compara 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:
-
Cadeias de caracteres — as cadeias de caracteres são comparadas com base em sua representação ASCII. A comparação diferencia maiúsculas de minúsculas.
-
Números — os 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 em tempo são comparados com base na série temporal. A data ou hora anterior é considerada menor. Por períodos, períodos mais curtos são considerados menores.
Operadores boolianos
O Amazon Lex V2 oferece suporte a operadores booleanos para combinar operadores de comparação. Eles permitem que você crie declarações semelhantes às seguintes:
({number} >= 5) AND ({number} <= 10)
Você pode usar os seguintes operadores booleanos:
-
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.
-
CONTAINS — 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 stringfn.
. O argumento para a função é uma referência a um slot. O Amazon Lex V2 fornece duas funções para obter informações dos valores dos slots.
-
fn.count () — conta o número de valores em um slot de vários valores. Por exemplo, se o slot
{toppings}
contiver o valor “pepperoni, abacaxi”,fn.COUNT({toppings})
será igual a 2. -
Fn.is_set () — retorna verdadeiro se um slot estiver definido na sessão atual. Continuando com o último exemplo,
fn.IS_SET({toppings})
é verdade.
Exemplo de expressões condicionais
Aqui estão alguns exemplos de expressões condicionais.
Tipo de valor | Caso de uso | Expressão condicional |
---|---|---|
slot personalizado | pizzaSize valor de slot é igual a grande |
{pizzaSize} = "large" |
slot personalizado | pizzaSize é igual a grande ou médio |
{pizzaSize} = "large" OU{pizzaSize} = "medium" |
slot personalizado | Expressões com() eAND/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 da faixa etária é maior que 30 | {age} > 30 |
AMAZON.Number |
valor de faixa de idade é igual a 10 | {age} = 10 |
AMAZON.Date |
dateOfBirth valor do slot antes de 1990 |
{dateOfBirth} < "1990-10-01" |
AMAZON.State |
destinationState valor do slot é igual a Washington |
{destinationState} = "washington" |
AMAZON.Country |
destinationCountry o valor do slot não é dos Estados Unidos |
{destinationCountry} != "united states" |
AMAZON.FirstName |
firstName o valor do slot é John |
{firstName} = "John" |
AMAZON.PhoneNumber |
phoneNumber o valor do slot é 716767891932 |
{phoneNumer} = 716767891932 |
AMAZON.Percentage |
Verifique se o valor percentual do slot é maior ou igual a 78 | {percentage} >= 78 |
AMAZON.EmailAddress |
emailAddress o valor do slot é userA@hmail.com |
{emailAddress} = “userA@hmail.com” |
AMAZON.LastName |
lastName o valor do slot é Doe |
{lastName} = "Doe" |
AMAZON.City |
O valor de slot da cidade é igual ao de Seattle | {city} = "Seattle" |
AMAZON.Time |
O horário é depois das 20h | {time} > "20:00" |
AMAZON.StreetName |
streetName o valor do slot é Boren Avenue |
{streetName} = "boren avenue" |
AMAZON.Duration |
travelDuration o valor do slot é 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 “Eu quero uma pizza grande” | $.inputTranscript = "I want a large pizza" |
Atributo de sessão | verifique a bandeira retry_enabled | ((retry_enabled)) = true |
Resposta de Kendra | A resposta do Kendra contém perguntas frequentes | fn.IS_SET(x-amz-lex:kendra-search-response-question_answer-question-1) |