

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

# Adicionar intenções
<a name="add-intents"></a>

As intenções são as metas que seus usuários desejam alcançar, como pedir flores ou reservar um hotel. Seu bot deve ter pelo menos uma intenção.

Por padrão, todos os bots contêm uma única intenção embutida, a intenção de fallback. Essa intenção é usada quando o Amazon Lex V2 não reconhece nenhuma outra intenção. Por exemplo, se um usuário disser “Quero pedir flores” para uma intenção de agendamento de hotel, a intenção de fallback será acionada.

**Para adicionar uma intenção**

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. Na lista de bots, escolha o bot ao qual você deseja adicionar a intenção e, em **Adicionar idiomas**, escolha **Exibir idiomas**.

1. Escolha o idioma ao qual adicionar a intenção e, em seguida, escolha **Intenções**.

1. Escolha **Adicionar intenção**, dê um nome à sua intenção e escolha **Adicionar.**

1. No editor de intenção, adicione os detalhes da sua intenção.
   + **Fluxo de conversa**: use o diagrama de fluxo de conversa para ver como pode ser um diálogo com seu bot. Você pode escolher diferentes seções da conversa para ir para essa seção do editor de intenções.
   + **Detalhes da intenção**: dê um nome e uma descrição à intenção para ajudar a identificar o propósito da intenção. Você também pode ver o identificador exclusivo que o Amazon Lex V2 atribuiu à intenção.
   + **Contextos**: defina os contextos de entrada e saída para a intenção. Um contexto é uma variável de estado associada a uma intenção. Um contexto de saída é definido quando uma intenção é atendida. Uma intenção com um contexto de entrada só pode ser reconhecida se o contexto estiver ativo. Uma intenção sem contextos de entrada sempre pode ser reconhecida.
   + **Exemplos de expressões**: você deve fornecer 10 ou mais frases que espera que seus usuários usem para iniciar uma intenção. O Amazon Lex V2 generaliza essas frases para reconhecer que o usuário deseja iniciar a intenção.
   + **Resposta inicial**: a mensagem inicial enviada ao usuário após a invocação da intenção. É possível fornecer respostas, inicializar valores e definir a próxima etapa que o Amazon Lex V2 executará para responder ao usuário no início da intenção.
   + **Slots**: defina os slots, ou parâmetros, necessários para cumprir a intenção. Cada slot tem um tipo que define os valores que podem ser inseridos no slot. Você pode escolher entre os tipos de slot personalizados ou escolher um tipo de slot embutido.
   + **Confirmação**: essas solicitações e respostas são usadas para confirmar ou recusar o cumprimento da intenção. O prompt de confirmação solicita que o usuário revise os valores dos slots. Por exemplo, “Reservei um quarto de hotel para sexta-feira. Está certo?” A resposta de recusa é enviada ao usuário quando ele recusa a confirmação. Você pode fornecer respostas, definir valores e definir a próxima etapa que o Amazon Lex V2 executará, correspondendo a uma resposta de confirmação ou recusa do usuário.
   + **Atendimento**: resposta enviada ao usuário durante o processo de atendimento. Você pode definir atualizações do andamento do atendimento no seu início e periodicamente enquanto estiver em andamento. Por exemplo, “Estou alterando sua senha, isso pode levar alguns minutos” e “Ainda estou trabalhando em sua solicitação”. As atualizações de atendimento só podem ser usadas com conversas em transmissão. Você também pode definir uma mensagem de sucesso pós-atendimento, uma mensagem de falha e uma mensagem de tempo limite. Você pode enviar mensagens de pós-atendimentos tanto para conversas em transmissão como regulares. Por exemplo, se o atendimento for bem-sucedido, você poderá enviar “Eu alterei sua senha”. Se o atendimento não for bem-sucedido, você poderá enviar uma resposta com mais informações, como “Não consegui alterar sua senha, entre em contato com o suporte técnico para obter ajuda”. Se o atendimento demorar mais do que o período de tempo limite configurado, você poderá enviar uma mensagem informando ao usuário, como “Nossos servidores estão muito ocupados no momento. Tente sua solicitação novamente.” É possível fornecer respostas, configurar valores e definir a próxima etapa que o Amazon Lex V2 executará para responder ao usuário. 
   + **Respostas de encerramento**: resposta enviada ao usuário após a intenção ser cumprida e todas as outras mensagens serem reproduzidas. Por exemplo, um agradecimento por reservar um quarto de hotel. Ou pode fazer com que o usuário inicie uma intenção diferente, como: “Agradecemos por reservar um quarto, você gostaria de alugar um carro?” É possível fornecer respostas e configurar as próximas ações de atendimento após cumprir a intenção e responder com a resposta final.
   + **Hooks de código**: indique se você está usando uma função AWS Lambda para inicializar a intenção e validar a entrada do usuário. Você especifica a função do Lambda no alias usada para executar o bot.

1. Escolha **Salvar intenção** para salvar a configuração da intenção.

**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

## Configurar solicitações em uma ordem específica
<a name="configuring-prompts"></a>

Você pode configurar o bot para reproduzir mensagens em uma ordem predefinida marcando a caixa **Reproduzir mensagens em ordem**. Caso contrário, o bot reproduz a mensagem e as variações em ordem aleatória. 

Os prompts ordenados permitem que a mensagem e as variações de um grupo de mensagens sejam reproduzidas em ordem entre as novas tentativas. Você pode usar a reformulação alternativa de uma mensagem quando uma resposta inválida para a solicitação é fornecida pelo usuário ou para confirmação da intenção. Até duas variações da mensagem original podem ser definidas em cada slot. É possível escolher se deseja reproduzir as mensagens em ordem ou aleatoriamente.

O prompt solicitado oferece suporte a todos os quatro tipos de mensagens: texto, resposta personalizada de carga útil, SSML e grupo de cartões. As respostas são ordenadas dentro do mesmo grupo de mensagens. Grupos de mensagens diferentes são independentes.

**Topics**
+ [Configurar solicitações em uma ordem específica](#configuring-prompts)
+ [Enunciados de amostra](sample-utterances.md)
+ [Estrutura da intenção](intent-structure.md)
+ [Criar caminhos de conversação](building-paths.md)
+ [Usar o Visual Conversation Builder](visual-conversation-builder.md)
+ [Intenções integradas](built-in-intents.md)

# Enunciados de amostra
<a name="sample-utterances"></a>

Você cria exemplos de enunciados que são variações de frases que se espera que os usuários usem para iniciar uma intenção. Por exemplo, para uma intenção **BookFlight**, você pode incluir frases como as seguintes:

1. Quero reservar um voo

1. me ajude a pegar um voo.

1. passagens aéreas, por favor\$1

1. voo de \$1*DepartureCity*\$1 para \$1*DestinationCity*\$1

Você deve fornecer 10 ou mais enunciados de amostra. Forneça amostras que representem uma ampla variedade de estruturas de frases e palavras que os usuários possam pronunciar. Considere também frases incompletas, como nos exemplos 3 e 4 acima. *Você também pode usar espaços definidos para a intenção em um enunciado de amostra colocando colchetes ao redor do nome do slot, como em \$1DepartureCity\$1 no exemplo 4.* Se incluir nomes de slots em um exemplo de enunciado, o Amazon Lex V2 preenche os espaços da intenção com os valores que o usuário fornece no enunciado.

Uma variedade de exemplos de declarações ajuda o Amazon Lex V2 a generalizar para reconhecer efetivamente que o usuário deseja iniciar a intenção.

Você pode adicionar exemplos de expressões no editor de intenções, no Visual Conversation Builder ou com as operações da API [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) ou [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html). Também é possível gerar exemplos de enunciados automaticamente aproveitando os recursos de IA generativa do Amazon Bedrock. Para obter mais informações, consulte [Use a geração de enunciados para gerar exemplos de enunciados para reconhecimento de intenção](utterance-generation.md).

**Usar o editor de intenções ou o Visual Conversation Builder**

1. No editor de intenções, navegue até a seção **Enunciados de amostra**. No Visual Conversation Builder, encontre a seção **Enunciados de amostra** no bloco **Iniciar**.

1. Na caixa com o texto transparente **I want to book a flight**, digite um enunciado de amostra. Selecione **Adicionar enunciado** para adicionar o enunciado.

1. Visualize os exemplos de enunciados adicionados no modo **Visualização** ou **Texto sem formatação**. Em **Texto sem formatação**, cada linha é um enunciado separado. No **Modo de visualização**, passe o mouse sobre um enunciado para revelar as seguintes opções:
   + Selecione a caixa de texto para editar o enunciado.
   + Selecione o botão x à direita da caixa de texto para excluir o enunciado.
   + Arraste o botão à esquerda da caixa de texto para alterar a ordem dos exemplos de enunciados.

1. Use a barra de pesquisa na parte superior para pesquisar seus exemplos de enunciados e o menu suspenso ao lado dela para classificar pela ordem em que você adicionou os enunciados ou em ordem alfabética.

**Usar uma operação de API**

1. Crie uma nova intenção com a operação [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) ou atualize uma existente com a operação [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html).

1. A solicitação da API inclui um campo `sampleUtterances`, que mapeia para uma matriz de objetos [SampleUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SampleUtterance.html).

1. Para cada enunciado de amostra que você deseja adicionar, anexe um objeto `SampleUtterance` à matriz. Adicione o exemplo de expressão como o valor do campo `utterance`.

1. Para editar e excluir exemplos de enunciados, envie uma solicitação `UpdateIntent`. A lista de enunciados fornecida no campo `sampleUtterances` substitui os enunciados existentes.
**Importante**  
Qualquer campo que você deixar em branco na solicitação `UpdateIntent` fará com que as configurações existentes na intenção sejam excluídas. Use a operação [DescribeIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DescribeIntent.html) para retornar a configuração do bot e copiar todas as configurações que não deseja que sejam excluídas na solicitação `UpdateIntent`.

# Estrutura da intenção
<a name="intent-structure"></a>

As intenções são as metas que seus usuários desejam alcançar, como pedir flores ou reservar um hotel. Seu bot deve ter pelo menos uma intenção. Uma intenção tem os seguintes componentes:
+ **Resposta inicial**: a mensagem inicial enviada ao usuário após a invocação da intenção. É possível definir respostas, inicializar valores e definir a próxima etapa que o bot executará para responder ao usuário no início da intenção.
+ **Slots**: os parâmetros necessários para cumprir uma intenção. Cada slot tem um tipo que define os valores que podem ser inseridos no slot. Você pode escolher entre os tipos de slot personalizados ou escolher um tipo de slot embutido.
+ **Confirmação**: depois que a conversa com o usuário for concluída e os valores de slot da intenção forem atendidos, você poderá definir um prompt de confirmação para perguntar ao usuário se os valores de slot estão corretos.
+ **Atendimento**: a resposta enviada ao usuário durante o processo de atendimento. Você pode definir atualizações do andamento no início do atendimento e continuar enviando atualizações periódicas enquanto o atendimento estiver em andamento. Você também pode definir uma mensagem de sucesso pós-atendimento, uma mensagem de falha e uma mensagem de tempo limite.
+ **Resposta de encerramento**: a resposta de encerramento enviada ao usuário após sua intenção ser atendida. Ela pode ser definida para encerrar a conversa ou para informar ao usuário que ele pode continuar com outra intenção.

**Topics**
+ [Resposta inicial](intent-initial.md)
+ [Slots](intent-slots.md)
+ [Confirmação](intent-confirm.md)
+ [Cumprimento](intent-fulfillment.md)
+ [Resposta de encerramento](intent-closing.md)

# Resposta inicial
<a name="intent-initial"></a>

A resposta inicial é enviada ao usuário depois que o Amazon Lex V2 determina a intenção e antes de começar a extrair valores de slot. Você pode usar essa resposta para informar o usuário sobre a intenção que foi reconhecida e preparar para as informações coletadas para cumprir a intenção.

Por exemplo, se a intenção é agendar uma consulta de serviço para um carro, a resposta inicial pode ser:


|  | 
| --- |
| Eu posso te ajudar a agendar uma consulta. Você precisará fornecer a marca, o modelo e o ano do seu carro. | 

Uma mensagem de resposta inicial não é obrigatória. Se não fornecida, o Amazon Lex V2 continuará seguindo a próxima etapa da resposta inicial.

Você pode configurar as seguintes opções na resposta inicial: 
+ **Configurar a próxima etapa**: você pode fornecer a próxima etapa da conversa, como pular para uma ação de diálogo específica, obter um espaço específico ou pular para uma intenção diferente. Para obter mais informações, consulte [Configurar as próximas etapas na conversa](paths-nextstep.md).
+ **Definir valores**: você pode definir valores para slots e atributos de sessão. Para mais informações, consulte [Definir valores durante a conversa](paths-setting-values.md).
+ **Adicionar ramificação condicional**: você pode aplicar condições depois de reproduzir a resposta inicial. Quando uma condição é avaliada como verdadeira, as ações que você define são tomadas. Para obter mais informações, consulte [Adicionar condições às conversas ramificadas](paths-branching.md).
+ **Executar hook de código de diálogo**: você pode definir um hook de código Lambda para inicializar dados e executar a lógica de negócios. Para obter mais informações, consulte [Invocar hook de código de diálogo](paths-code-hook.md). Se a opção de executar a função do Lambda estiver habilitada para a intenção, o hook do código de diálogo será executado por padrão. Você pode desativar o hook do código de diálogo ativando o botão **Ativo**.

Na ausência de uma condição ou de uma próxima etapa explícita, o Amazon Lex V2 passa para o próximo slot em ordem de prioridade.

![\[As opções avançadas para a resposta inicial à solicitação de um usuário.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-initial.png)


**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Slots
<a name="intent-slots"></a>

Os slots são valores fornecidos pelo usuário para cumprir a intenção. Existem dois tipos de slots:
+ **Tipo de slot embutido**: você pode usar tipos de slots integrados para capturar valores padrão, como número, nome e cidade. Para obter os tipos de slot embutidos com suporte, consulte [Tipos de slot integrados](built-in-slots.md).
+ **Tipo de slot personalizado**: você pode usar tipos de slots personalizados para capturar valores personalizados específicos da intenção. Por exemplo, você pode usar um tipo de slot personalizado para capturar o tipo de conta como “Cheque” ou “Poupança”. Para obter mais informações, consulte [Tipo de slot personalizado](custom-slot-types.md).

Para definir um slot em uma intenção, você precisa configurar o seguinte:
+ **Informações do slot**: esse campo contém um nome e uma descrição opcional para o slot. Por exemplo, você pode fornecer o nome do slot como “AccountNumber” para capturar os números da conta. Se o espaço for necessário como parte do fluxo de conversação para cumprir a intenção, ele deverá ser marcado como necessário.
+ **Tipo de slot**: um tipo de slot define a lista de valores que um slot pode aceitar. Você pode criar um tipo de slot personalizado ou usar um tipo de slot predefinido.
+ **Prompt de slot**: um prompt de slot é uma pergunta feita ao usuário para coletar informações. Você pode configurar o número de novas tentativas usadas para coletar informações e a variação do prompt usado para cada nova tentativa. Também é possível ativar a invocação de uma função do Lambda após cada nova tentativa para processar a entrada capturada e tentar resolver para uma entrada válida.
+ **Esperar e continuar (opcional)**: ao ativar esse comportamento, os usuários podem dizer frases como “espere um segundo” para fazer com que o bot espere que eles encontrem as informações e as forneçam. Isso é ativado somente para streaming de conversas. Para obter mais informações, consulte [Habilitação do seu bot do Amazon Lex V2 para aguardar o usuário fornecer mais informações durante uma pausa](wait-and-continue.md).
+ **Respostas de captura de slots**: você pode configurar uma resposta de sucesso e uma resposta de falha com base no resultado da captura do valor do slot a partir da entrada do usuário.
+ **Ramificação condicional**: você pode aplicar condições depois de reproduzir a resposta inicial. Quando uma condição é avaliada como verdadeira, as ações que você define são tomadas. Para obter mais informações, consulte [Adicionar condições às conversas ramificadas](paths-branching.md).
+ **Hook de código de diálogo**: você também pode usar um hook de código Lambda para validar os valores do slot e executar a lógica de negócios. Para obter mais informações, consulte [Invocar hook de código de diálogo](paths-code-hook.md).
+ **Tipo de entrada do usuário**: você pode configurar o tipo de entrada para que o bot possa aceitar uma modalidade específica. Por padrão, as modalidades de áudio e DTMF são aceitas. É possível configurá-lo seletivamente para somente áudio ou somente DTMF.
+ **Tempos limite e durações de entrada de áudio**: você pode configurar tempos limite de áudio, incluindo tempo limite de voz e tempo limite de silêncio. Além disso, a duração máxima do áudio também pode ser definida.
+ **Tempo limite de entrada, caracteres e comprimentos do DTMF**: você pode definir o tempo limite do DTMF junto com o caractere de exclusão e o caractere final. Além disso, a duração máxima do DTMF também pode ser definida. 
+ **Tamanho do texto**: você pode definir o tamanho máximo para a modalidade de texto.

Depois que o prompt do slot é reproduzido, o usuário fornece o valor do slot como entrada. Se o Amazon Lex V2 não entender o valor de um slot fornecido pelo usuário, ele tentará extrair o slot novamente até entender um valor ou até exceder o número máximo de novas tentativas que você configurou para o slot. Usando as configurações avançadas de repetição, você pode definir os tempos limite, restringir o tipo de entrada e ativar ou desativar a interrupção da solicitação inicial e das novas tentativas. Depois de cada tentativa de capturar a entrada, o Amazon Lex V2 pode chamar a função do Lambda configurada para o bot com um rótulo de invocação fornecido para novas tentativas. Você pode usar a função do Lambda, por exemplo, para aplicar sua lógica de negócios para tentar resolvê-la com um valor válido. Essa função do Lambda pode ser ativada nas **Opções avançadas** para solicitações de slots.

![\[Configure os prompts do slot para que seu bot obtenha informações.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-slot-prompt.png)


Você pode definir as respostas que o bot deve enviar ao usuário quando o valor do slot for inserido ou se o número máximo de novas tentativas for excedido. Por exemplo, para um bot para agendar o serviço de um carro, você pode enviar uma mensagem ao usuário quando o número de identificação do veículo (VIN) for inserido:


|  | 
| --- |
| Agradecemos por fornecer o número VIN do seu carro. Agora vou agendar uma consulta. | 

Você pode criar duas respostas:
+ **Resposta de sucesso**: enviada quando o Amazon Lex V2 compreende o valor de um slot.
+ **Resposta de falha**: enviada quando o Amazon Lex V2 não consegue entender o valor de um slot do usuário após o número máximo de novas tentativas.

É possível definir valores, configurar as próximas etapas e aplicar condições que correspondem a cada resposta para criar o fluxo de conversação.

Na ausência de uma condição ou de uma próxima etapa explícita, o Amazon Lex V2 passa para o próximo slot em ordem de prioridade.

![\[As opções avançadas para respostas em slots.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-slot.png)


Você pode usar uma função do Lambda para validar um valor de slot que um usuário inseriu e determinar qual deve ser a próxima ação. Por exemplo, a função de validação pode ser usada para garantir que o valor inserido esteja no intervalo correto ou que esteja formatado corretamente. Para ativar a função do Lambda, escolha a caixa de seleção **Invocar função do Lambda** e o botão **Ativo** na seção **Hook do código de diálogo**. É possível especificar um rótulo de invocação para o hook do código de diálogo. Esse rótulo de invocação pode ser usado na função do Lambda para escrever a lógica de negócios correspondente à elicitação do slot.

![\[As opções para hook de código de diálogo.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-dialog-code-hook.png)


Os slots que não são necessários para a intenção não fazem parte do fluxo principal da conversa. No entanto, se um enunciado do usuário contiver um valor que seu bot identifique como correspondente a um slot opcional, ele poderá preencher o slot com esse valor. Por exemplo, se você configurar um bot de inteligência de negócios para ter um slot `City` opcional e a expressão do usuário **What is the sales for April in San Diego?**, o bot preencherá o slot opcional com **San Diego**. A lógica de negócios pode ser configurada para usar o valor opcional do slot, se presente.

Os slots não necessários para a intenção não podem ser obtidos usando as próximas etapas. Essas etapas podem ser preenchidas somente durante a elicitação da intenção (como no exemplo anterior) ou podem ser obtidas definindo o estado da caixa de diálogo na função do Lambda. Se o slot for obtido usando a função do Lambda, você deverá usar a função do Lambda para decidir a próxima etapa na conversa após a conclusão da elicitação do slot. Para ativar o suporte para a próxima etapa da construção do bot, você deve marcar o slot conforme necessário para a intenção.

**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

Os tópicos a seguir descrevem como configurar um bot para reativar um valor de slot que já foi preenchido e como criar um slot que consiste em vários valores:

**Topics**
+ [Escolher slots novamente](reelicit-slots.md)
+ [Usar vários valores em um slot](multi-valued-slots.md)

# Escolher slots novamente
<a name="reelicit-slots"></a>

 Você pode configurar o bot para escolher novamente um slot que já foi preenchido definindo o valor desse slot como **null** e definindo a próxima etapa na conversa para retornar à obtenção desse slot. Por exemplo, talvez você queira escolher novamente um slot depois que seu cliente recusar a confirmação da obtenção do slot com base em informações adicionais, como na conversa a seguir: 

![\[Uma conversa para obter a preferência de carne do cliente para um pedido de comida.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/slots/order-food.png)


Você pode configurar um loop a partir da resposta de confirmação para escolher novamente o slot com o editor de intenção ou com o [Usar o Visual Conversation Builder](visual-conversation-builder.md).

**nota**  
Você pode voltar para escolher um slot em qualquer ponto da conversa, desde que defina o valor desse slot como **null** com antecedência.

**Reproduzir o exemplo acima com o editor de intenção**

1. Na seção **Confirmação** do editor de intenção, selecione a seta para a direita ao lado de **Solicitações para confirmar a intenção** para expandir a seção.

1. Selecione **Opções avançadas** na parte inferior.

1. Na seção **Recusar resposta**, selecione a seta para a direita ao lado de **Definir valores** para expandir a seção. Preencha esta seção com as seguintes etapas, como na imagem abaixo:

   1. Defina o valor do slot que deseja escolher novamente como **null**. Neste exemplo, queremos escolher novamente o slot `Meat`, então inserimos **\$1Meat\$1 = null** na seção **Valores do slot**.

   1. No menu suspenso, em **Próxima etapa da conversa**, selecione **Escolher um slot**.

   1. Uma seção **Slot** aparecerá. No menu suspenso abaixo, selecione o slot que você deseja escolher novamente.

   1. Selecione **Opções de atualização** para confirmar suas alterações.  
![\[Uma conversa para obter a preferência de carne do cliente para um pedido de comida.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/slots/decline-food.png)

**Reproduzir o exemplo acima com o Visual Conversation Builder**

1. Crie uma conexão da porta **Não** do bloco **Confirmação** com a porta de entrada do bloco **Obter valor do slot: Carne**.  
![\[Uma conexão entre a negação da mensagem de confirmação e o bloco de escolha do slot Carne.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/slots/vcb-reelicit-slot-loop.png)

1. Selecione o ícone **Editar** no canto superior direito do bloco de **Confirmação**.  
![\[Ícone de edição no canto superior direito do bloco de confirmação.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/slots/vcb-reelicit-slot-confirmation-edit.png)

1. Selecione o ícone de engrenagem ao lado da resposta do bot na seção **Recusar resposta**.  
![\[Ícone de engrenagem ao lado da resposta do bot na seção de recusa de resposta\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/slots/vcb-reelicit-slot-confirmation.png)

1. Na seção **Definir valores**, adicione “\$1Meat\$1 = null” na caixa **Valores do slot**.  
![\[Defina o valor do slot a ser escolhido novamente como nulo na caixa de valores do slot da seção de valores definidos.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/slots/vcb-reelicit-slot-set-slot-null.png)

1. Selecione **Salvar intenção**.

# Usar vários valores em um slot
<a name="multi-valued-slots"></a>

**nota**  
Vários slots de valor são compatíveis somente no idioma inglês (EUA).

Para algumas intenções, talvez você queira capturar vários valores para um único slot. Por exemplo, um bot de pedido de pizza pode ter uma intenção com o seguinte enunciado:

```
I want a pizza with {toppings}
```

A intenção espera que o slot `{toppings}` contenha uma lista dos recheios que o cliente deseja em sua pizza, por exemplo, “calabresa e abacaxi”.

Para configurar um slot para capturar vários valores, defina o campo `allowMultipleValues` no slot como verdadeiro. Você pode definir o campo usando o console ou com a [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)operação [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)ou.

Só é possível marcar slots com tipos de slots personalizados como slots de vários valores.

Para um slot de vários valores, o Amazon Lex V2 retorna uma lista de valores de slot na resposta à operação [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)ou [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html). A seguir estão as informações do slot retornadas para a declaração “Quero uma pizza com calabresa e abacaxi” do bot. OrderPizza 

```
    "slots": {
        "toppings": {
            "shape": "List",
            "value": {
                "interpretedValue": "pepperoni and pineapple",
                "originalValue": "pepperoni and pineapple",
                "resolvedValues": [
                    "pepperoni and pineapple"
                ]
            },
            "values": [
                {
                    "shape": "Scalar",
                    "value": {
                        "interpretedValue": "pepperoni",
                        "originalValue": "pepperoni",
                        "resolvedValues": [
                            "pepperoni"
                        ]
                    }
                },
                {
                    "shape": "Scalar",
                    "value:": {
                        "interpretedValue": "pineapple",
                        "originalValue": "pineapple",
                        "resolvedValues": [
                            "pineapple"
                        ]
                    }
                }
            ]
        }
    }
```

Os slots com vários valores sempre retornam uma lista de valores. Quando o enunciado contém apenas um valor, a lista de valores retornados contém somente uma resposta. 

O Amazon Lex V2 reconhece vários valores separados por espaços, vírgulas (,) e a conjunção “e”. Os slots de vários valores funcionam com entrada de texto e voz.

Você pode usar slots de vários valores em prompts. Por exemplo, você pode definir a solicitação de confirmação de uma intenção como:

```
Would you like me to order your {toppings} pizza?
```

Quando o Amazon Lex V2 envia a solicitação ao usuário, ele envia “Você gostaria que eu pedisse sua pizza de pepperoni e abacaxi?”

Os slots de vários valores oferecem suporte a valores padrão únicos. Se vários valores padrão forem fornecidos, o Amazon Lex V2 preencherá o slot somente com o primeiro valor disponível. Para obter mais informações, consulte [Uso de valores de slot padrão em intenções para seu bot do Lex V2](context-mgmt-default.md).

Você pode usar a ofuscação de slots para mascarar os valores de um slot com vários valores nos logs de conversação. Ao ofuscar valores de slot, o valor de cada um dos valores de slot é substituído pelo nome do slot. Para obter mais informações, consulte [Como ocultar valores de slot nos logs de conversas do Lex V2](monitoring-obfuscate.md).

# Confirmação
<a name="intent-confirm"></a>

Depois que a conversa com o usuário for concluída e os valores de slot da intenção forem preenchidos, você poderá configurar uma solicitação de confirmação para perguntar ao usuário se os valores de slot estão corretos. Por exemplo, um bot que agenda compromissos de serviço para carros pode perguntar ao usuário o seguinte:


|  | 
| --- |
| Tenho serviço para o seu Honda Civic 2017 agendado para 25 de março às 15h. Está certo? | 

Você pode definir 3 tipos de respostas para a solicitação de confirmação:
+ **Resposta de confirmação**: essa resposta é enviada ao usuário quando ele confirma a intenção. Por exemplo, depois que o usuário responde “sim” ao prompt “você deseja fazer o pedido?”
+ **Resposta de recusa**: essa resposta é enviada ao usuário quando ele nega a intenção. Por exemplo, depois que o usuário responde “não” ao prompt “você deseja fazer o pedido?”
+ **Resposta de falha**: essa resposta é enviada ao usuário quando a solicitação de confirmação não pode ser processada. Por exemplo, se a resposta do usuário não for entendida ou não puder ser resolvida em sim ou não. 

![\[Um fluxograma mostrando os 3 tipos de respostas para respostas de confirmação e recusa.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/conditional-confirmation-flow.png)


Se uma solicitação de confirmação não for especificada, o Amazon Lex V2 passa para a etapa de atendimento ou para a resposta de encerramento. 

É possível definir valores, configurar as próximas etapas e aplicar condições correspondentes a cada resposta para criar o fluxo de conversação. Na ausência de uma condição ou de uma próxima etapa explícita, o Amazon Lex V2 passa para o passo de atendimento. 

Você também pode ativar o hook de código de diálogo para validar as informações capturadas na intenção antes de enviá-las para atendimento. Para usar um hook de código, habilite o hook de código de diálogo nas opções avançadas do prompt de confirmação. Além disso, configure a próxima etapa do estado anterior para executar o hook do código de diálogo. Para obter mais informações, consulte [Invocar hook de código de diálogo](paths-code-hook.md). 

**nota**  
 Se você usar um hook de código para acionar a etapa de confirmação em runtime, deverá marcar a etapa de confirmação como **Ativa** no momento da criação. 

![\[O console Amazon Lex V2 mostrando as opções avançadas para solicitações de confirmação.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-confirm.png)


**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

## Usar uma função do Lambda para validar uma intenção.
<a name="intent-confirm-codehook"></a>

Você pode definir um hook de código Lambda para validar a intenção antes de enviá-la para atendimento. Para usar um hook de código, habilite o hook de código de diálogo nas opções avançadas do prompt de confirmação.

Ao usar um hook de código, as ações que o Amazon Lex V2 executa podem ser definidas após a execução do hook de código. É possível criar três tipos de regras:
+ **Resposta de sucesso**: enviada ao usuário quando o hook de código é concluído com êxito.
+ **Resposta de falha**: enviada ao usuário quando o hook de código não é executado com êxito ou quando ele retorna `Failure` na resposta.
+ **Resposta de tempo limite**: enviada ao usuário quando o hook de código não é concluído no período de tempo limite configurado.

# Cumprimento
<a name="intent-fulfillment"></a>

Depois que todos os valores de slot são fornecidos pelo usuário para a intenção, o Amazon Lex V2 atende à solicitação do usuário. Você pode configurar as seguintes opções para o atendimento.
+ **Hook de código de atendimento**: você pode usar essa opção para controlar a invocação do Lambda de atendimento. Se a opção for desativada, o atendimento será bem-sucedido sem invocar a função do Lambda.
+ **Atualizações de atendimento**: você pode habilitar atualizações de atendimento para funções do Lambda que levam mais do que alguns segundos para serem concluídas, para que o usuário saiba que o processo está em andamento. Para obter mais informações, consulte [Configuração de atualizações de progresso de atendimento para seu bot do Lex V2](streaming-progress.md). Essa funcionalidade só está disponível para streaming de conversas.
+ **Respostas de atendimento**: você pode configurar uma resposta de sucesso, uma resposta de falha e uma resposta de tempo limite. A resposta apropriada é retornada ao usuário com base no status da invocação do Lambda de atendimento.

Há três respostas possíveis de atendimento:
+ **Resposta de sucesso**: uma mensagem enviada quando o Lambda de atendimento é concluído com êxito.
+ **Resposta de falha**: uma mensagem enviada se o atendimento falhar ou se o Lambda não puder ser concluído por algum motivo.
+ **Resposta de tempo limite**: uma mensagem enviada se a função do Lambda de atendimento não terminar dentro do tempo limite configurado.

É possível definir valores, configurar as próximas etapas e aplicar condições correspondentes a cada resposta para criar o fluxo de conversação. Na ausência de uma condição ou de uma próxima etapa explícita, o Amazon Lex V2 passa para a resposta de encerramento. 

![\[O console Amazon Lex V2 mostrando as opções de resposta para um hook de código de atendimento.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-fulfillment.png)


**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Resposta de encerramento
<a name="intent-closing"></a>

A resposta de encerramento é enviada ao usuário após a intenção ser atendida. A resposta de encerramento pode ser usada para encerrar a conversa ou para informar ao usuário que ele pode continuar com outra intenção. Por exemplo, em um bot de reserva de viagens, é possível definir a resposta final para reservar um quarto de hotel com a seguinte intenção:


|  | 
| --- |
| Tudo bem, reservei seu quarto de hotel. Posso ajudar você com mais alguma coisa?  | 

É possível definir valores, configurar as próximas etapas e aplicar condições após a resposta de encerramento para criar o caminho de conversação. Na ausência de uma condição ou de uma próxima etapa explícita, o Amazon Lex V2 encerra a conversação. 

Se uma resposta final não for fornecida ou se nenhuma das condições for considerada verdadeira, o Amazon Lex V2 encerrará a conversa com seu bot.

![\[O console Amazon Lex V2 mostrando as opções de resposta de encerramento.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/response-closing.png)


**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Criar caminhos de conversação
<a name="building-paths"></a>

Normalmente, o Amazon Lex V2 gerencia o fluxo de conversas com seus usuários. Para bots simples, o fluxo padrão pode ser suficiente para criar uma boa experiência para seus usuários. No entanto, para bots mais complexos, talvez você queira assumir o controle da conversa e direcionar o fluxo para caminhos mais complexos.

Por exemplo, em um bot que reserva aluguel de carros, talvez você não alugue para motoristas mais jovens. Nesse caso, você pode criar uma condição para verificar se um motorista tem menos de uma certa idade e, em caso afirmativo, pular para a resposta de encerramento. 

![\[Um fluxograma mostrando o fluxo de conversa de um bot de aluguel de carros que não aluga para motoristas com menos de 24 anos.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/conditional-flowchart.png)


Para criar essas interações, você pode configurar a próxima etapa em cada ponto da conversa, avaliar condições, definir valores e invocar hooks de código.

A ramificação condicional ajuda a criar caminhos para seus usuários por meio de interações complexas. É possível usar uma ramificação condicional a qualquer momento em que passar o controle da conversa para o seu bot. Por exemplo, você pode criar uma condição antes que o bot extraia o primeiro valor do slot, pode criar uma condição entre obter cada valor do slot ou pode criar uma condição antes que o bot encerre a conversa. Para obter uma lista dos locais em que você pode adicionar condições, consulte [Adicionar intenções](add-intents.md).

Quando você cria um bot, o Amazon Lex V2 cria um caminho padrão para a conversa com base na ordem de prioridade dos slots. Para personalizar o caminho da conversa, você pode modificar a próxima etapa em qualquer ponto da conversa. Para obter mais informações, consulte [Configurar as próximas etapas na conversa](paths-nextstep.md). 

Para criar caminhos alternativos com base nas condições, você pode usar uma ramificação condicional em qualquer ponto da conversa. Por exemplo, é possível criar uma condição antes que o bot obtenha o primeiro valor do slot. Você pode criar uma condição entre obter o valor de cada slot ou criar uma condição antes que o bot encerre a conversa. Para obter uma lista dos locais em que permitem adicionar condições, consulte [Adicionar condições às conversas ramificadas](paths-branching.md).

Você pode definir condições 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 configurar os valores de slots e dos atributos da sessão em qualquer momento da conversa. Para obter mais informações, consulte [Definir valores durante a conversa](paths-setting-values.md).

Você também pode definir a próxima ação como hook de código de diálogo para executar uma função do Lambda. Para obter mais informações, consulte [Invocar hook de código de diálogo](paths-code-hook.md). 

A imagem a seguir mostra a criação de um caminho para um slot no console. Neste exemplo, o Amazon Lex V2 exibirá o slot “age”. Se o valor do slot for menor que 24, o Amazon Lex V2 salta para a resposta de fechamento, caso contrário, o Amazon Lex V2 seguirá o caminho padrão.

![\[O console Amazon Lex V2 mostrando o editor de condições de um slot.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/conditional-slot.png)


**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Configurar as próximas etapas na conversa
<a name="paths-nextstep"></a>

Você pode configurar uma próxima etapa em cada estágio da conversa para criar conversas. Normalmente, o Amazon Lex V2 configura automaticamente as próximas etapas padrão para cada estágio da conversa de acordo com a seguinte ordem.

 Resposta inicial → Elicitação de slots → Confirmação (se ativa) → Cumprimento (se ativa) → Resposta de encerramento (se ativa) → Encerrar conversa

Você pode modificar as próximas etapas padrão e criar a conversa com base na experiência esperada do usuário. As próximas etapas a seguir podem ser configuradas em cada estágio da conversa:

**Ir para**
+ **Resposta inicial** — A conversa é reiniciada a partir do início da intenção. Você pode optar por ignorar a resposta inicial ao configurar a próxima etapa.
+ **Elicitar um espaço** — Você pode extrair qualquer espaço na intenção.
+ **Avalie as condições** — Você pode avaliar as condições e ramificar a conversa em qualquer etapa da conversa.
+ **Invocar hook de código de diálogo** — Você pode invocar a lógica de negócios em qualquer etapa.
+ **Confirme a intenção** — O usuário será solicitado a confirmar a intenção.
+ **Cumprir a intenção** — O cumprimento da intenção começará como a próxima etapa.
+ **Resposta** de encerramento — A resposta de encerramento será devolvida ao usuário.

**Mudar para**
+ **Intenção** — Você pode fazer a transição para uma intenção diferente e continuar a conversa com essa intenção. Também pode pular a resposta inicial da intenção ao fazer a transição.
+ **Intent: slot específico** — Você pode obter diretamente um slot específico em uma intenção diferente se já tiver capturado alguns valores de slot na intenção atual.

**Aguarde a entrada do usuário** — O bot espera que o usuário forneça informações para reconhecer qualquer nova intenção. Você pode configurar prompts como “Há mais alguma coisa em que eu possa ajudá-lo?” antes de definir a próxima etapa. O bot estará em estado de diálogo `ElicitIntent`.

**Encerrar conversa** — A conversa com o bot está encerrada.

**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Definir valores durante a conversa
<a name="paths-setting-values"></a>

O Amazon Lex V2 oferece a capacidade de definir valores de slots e valores de atributos de sessão em cada etapa da conversa. Em seguida, você pode usar esses valores durante a conversa para avaliar as condições ou usá-los durante o cumprimento da intenção.

É possível definir valores de slot para a intenção atual. Se a próxima etapa da conversa for invocar outra intenção, você poderá definir valores de slot da nova intenção.

Se o slot atribuído não for preenchido ou se o caminho JSON não puder ser analisado, o atributo será definido como `null`.

Use a sintaxe a seguir ao usar valores de slot e atributos de sessão:
+ **Valores do slot** — coloque o nome do slot entre chaves (“\$1 \$1”). Para valores de slot na intenção atual, é só usar o nome do slot. Por exemplo, .`{slot}` Se estiver definindo um valor na próxima intenção, você deverá usar o nome da intenção e o nome do slot para identificar o slot. Por exemplo, .`{intent.slot}`

  Exemplos:
  +  `{PhoneNumber} = "1234567890"` 
  +  `{CheckBalance.AccountNumber} = "99999999"` 
  +  `{BookingID} = "ABC123"` 
  +  `{FirstName} = "John"` 

  O valor de um slot pode ser qualquer um dos seguintes:
  + uma string constante
  + um caminho JSON que se refere ao bloco de transcrições na resposta do Amazon Lex (para inglês-EUA e inglês-REINO UNIDO)
  + um atributo da sessão

  Exemplos:
  +  `{username} = "john.doe" ` 
  +  `{username_confidence} = $.transcriptions[0].transcriptionConfidence ` 
  +  `{username_slot_value} = [username] ` 
**nota**  
Os valores do slot também podem ser definidos como `null`. Se precisar extrair novamente um valor de slot que tenha sido preenchido, defina o valor como `null` antes de solicitar ao cliente o valor do slot novamente. Se o slot atribuído não for preenchido ou se o caminho JSON não puder ser analisado, o atributo será definido como `null`.
+ **Atributos da sessão** — coloque o nome do atributo entre colchetes (“[ ]”). Por exemplo, .`[sessionAttribute]`

  Exemplos:
  +  ` [username] = "john.doe" ` 
  +  ` [username_confidence] = $.transcriptions[0].transcriptionConfidence ` 
  +  ` [username_slot_value] = {username} ` 

  O valor do atributo de sessão pode ser qualquer um dos seguintes:
  + uma string constante
  + um caminho JSON que se refere ao bloco de transcrições na resposta do Amazon Lex (para inglês-EUA e inglês-REINO UNIDO)
  + uma referência de valor de slot
**nota**  
Se o slot atribuído não for preenchido ou se o caminho JSON não puder ser analisado, o atributo será definido como `null`.

**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Adicionar condições às conversas ramificadas
<a name="paths-branching"></a>

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 obter mais informações, consulte [Criar caminhos de conversação](building-paths.md).

![\[Você pode escolher opções diferentes para ramificação condicional.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/conditional-choose.png)


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 \$1age\$1 for menor que 24.

```
{age} < 24
```

A condição a seguir retornará verdadeira se o slot de vários valores \$1toppings\$1 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 \$1make\$1 for “Honda” e o valor do slot \$1model\$1 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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

**Topics**
+ [Operadores de comparação](#branching-comparison)
+ [Operadores booleanos](#branching-boolean)
+ [Operadores quantificadores](#branching-quentifier)
+ [Funções](#branching-function)
+ [Expressões condicionais](#sample-conditional-expressions)

## Operadores de comparação
<a name="branching-comparison"></a>

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
<a name="branching-boolean"></a>

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 (\$1\$1)
+ NÃO (\$1)

## Operadores quantificadores
<a name="branching-quentifier"></a>

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
<a name="branching-function"></a>

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\$1SET()**: 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})`
+ **fn.LENGTH()**: é o tamanho do valor do atributo da sessão, do valor do slot ou do atributo do slot definido na sessão atual. Essa função não oferece suporte a slots de vários valores ou slots compostos.

  Exemplo:

  Se o slot `{credit-card-number}` contiver o valor “123456781234”:

  `fn.LENGTH({credit-card-number}) = 12`

## Expressões condicionais
<a name="sample-conditional-expressions"></a>

Aqui estão alguns exemplos de expressões condicionais. NOTA: `$.` representa o ponto de entrada para a resposta JSON do Amazon Lex V2. O valor a seguir `$.` será analisado na resposta do Amazon Lex V2 para recuperar o valor. Expressões condicionais usando a referência de caminho JSON para o bloco de transcrições na resposta do Amazon Lex V2 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 | \$1pizzaSize\$1 = "large" | 
| Slot personalizado | pizzaSize é igual a grande ou médio | \$1pizzaSize\$1 = "large" OU \$1pizzaSize\$1 = "medium"  | 
| Slot personalizado | Expressões com () e AND/OR | \$1pizzaType\$1 = "pepperoni" OU \$1pizzaSize\$1 = "medium" OU \$1pizzaSize\$1 = "small"  | 
| Slot personalizado (slot de vários valores) | Verifique se uma das coberturas é cebola | \$1toppings\$1 CONTAINS "Onion" | 
| Slot personalizado (slot de vários valores) | O número de coberturas é superior a 3 | fn.COUNT(\$1topping\$1) > 2 | 
| AMAZON.AlphaNumeric | bookingIDé ABC123 | \$1bookingID\$1 = "ABC123" | 
| AMAZON.Number | o valor do slot de idade é maior que 30 | \$1age\$1 > 30 | 
| AMAZON.Number | o valor do slot de idade é igual a 10 | \$1age\$1 = 10 | 
| AMAZON.Date | O valor do slot dateOfBirth anterior a 1990 | \$1dateOfBirth\$1 < "1990-10-01" | 
| AMAZON.State | O valor do slot destinationState é igual a Washington | \$1destinationState\$1 = "washington" | 
| AMAZON.Country | O valor do slot destinationCountry não é Estados Unidos | \$1destinationCountry\$1 \$1= "united states" | 
| AMAZON.FirstName | O valor do slot firstName é João | \$1firstName\$1 = "John" | 
| AMAZON.PhoneNumber | O valor do slot phoneNumber é 716767891932 | \$1phoneNumer\$1 = 716767891932 | 
| AMAZON.Percentage | Verifique se o valor percentual do slot é maior ou igual a 78 | \$1percentage\$1 >= 78 | 
| AMAZON.EmailAddress | O valor do slot emailAddress é userA@hmail.com | \$1emailAddress\$1 = "userA@hmail.com" | 
| AMAZON.LastName | O valor do slot lastName é Fulano | \$1lastName\$1 = "Doe" | 
| AMAZON.City | O valor do slot da cidade é igual a Seattle | \$1city\$1 = "Seattle" | 
| AMAZON.Time | O horário é depois das 20h | \$1time\$1 > "20:00" | 
| AMAZON.StreetName | O valor do slot streetName Boren Avenue | \$1streetName\$1 = "boren avenue" | 
| AMAZON.Duration | O valor do slot travelDuration é inferior a 2 horas | \$1travelDuration\$1 < P2H | 
| Modo de entrada | O modo de entrada é fala | \$1.inputMode = "Speech" | 
| Transcrição de entrada | A transcrição de entrada é igual a “Quero uma pizza grande” | \$1.inputTranscript = "I want a large pizza" | 
| Atributos da sessão | verifique o atributo customer\$1subscription\$1type | [customer\$1subcription\$1type] = "yearly" | 
| Atributos de solicitação | verifique o sinalizador retry\$1enabled | ((retry\$1enabled)) = "TRUE" | 
| Resposta de Kendra | A resposta de Kendra contém perguntas frequentes | fn.IS\$1SET(((x-amz-lex:kendra-search-response-question\$1answer-question-1))) | 
| Expressão condicional com transcrições | Expressões condicionais usando o caminho JSON de transcrições | \$1.transcriptions[0].transcriptionConfidence < 0.8 AND \$1.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] = "\$1.transcriptions..." AND [sessionAttribute] = "\$1<slotName>\$1" | 
| Definir valores do slot | Defina os atributos da sessão usando transcrições, caminho JSON e valores de slot. | \$1slotName\$1 = [<sessionAttribute>] AND \$1slotName\$1 = "\$1.transcriptions..." | 

**nota**  
`slotName`refere-se ao nome de um slot no bot Amazon Lex V2. 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.

# Invocar hook de código de diálogo
<a name="paths-code-hook"></a>

Em cada etapa da conversa, quando o Amazon Lex V2 envia uma mensagem ao usuário, você pode usar uma função Lambda como a próxima etapa da conversa. Você pode usar a função para implementar a lógica de negócios com base no estado atual da conversa.

A função do Lambda que é executada está associada ao alias do bot que você está usando. Para invocar a função do Lambda em todos os hooks de código de diálogo em sua intenção, você deve selecionar **Usar uma função Lambda para inicializar e validar** a intenção. Mais informações sobre como escolher uma função do Lambda, ver [Criação de uma AWS Lambda função para seu bot Amazon Lex V2](lambda-attach.md).

Há duas etapas para usar uma função do Lambda. Primeiro, você deve ativar o hook do código de diálogo em qualquer ponto da conversa. Segundo, você deve definir a próxima etapa da conversa para usar o hook de código de diálogo.

A imagem a seguir mostra o hook do código de diálogo ativado.

![\[Mostra que o hook do código de resposta condicional está ativo.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/code-hook-active.png)


Em seguida, defina o hook de código como a próxima ação para a etapa da conversa. Você pode fazer isso configurando a próxima etapa da conversa para Invocar o hook de código de diálogo. A imagem a seguir mostra uma ramificação condicional em que invocar o hook do código de diálogo é a próxima etapa do caminho padrão da conversa.

![\[Ramificação condicional mostrando um hook de código como a próxima etapa da conversa.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/code-hook-choose.png)


Quando os hooks de código estão ativos, você pode definir três respostas para retornar ao usuário:
+ **Sucesso**: enviado quando a função do Lambda foi concluída com sucesso.
+ **Falha**: enviado se houve um problema com a execução da função do Lambda ou se a função do Lambda retornou um valor `intent.state` de `Failed`.
+ **Tempo limite**: enviado se a função do Lambda não for concluída no período de tempo limite configurado.

![\[Fluxograma mostrando as opções disponíveis para mensagens após a execução de uma função do Lambda.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/conditional-code-hook.png)


Escolha o **hook de código de diálogo do Lambda** e, em seguida, escolha **Opções avançadas** para ver as três opções de respostas que correspondem à invocação da função do Lambda. É possível definir valores, configurar as próximas etapas e aplicar condições correspondentes a cada resposta para criar o fluxo de conversação. Na ausência de uma condição ou de uma próxima etapa explícita, o Amazon Lex V2 decide a próxima etapa com base no estado atual da conversa. 

Na página de **opções avançadas**, você também pode optar por ativar ou desativar a invocação da função do Lambda. Quando a função é ativada, o hook do código de diálogo é invocado com a invocação do Lambda, seguida pela mensagem de sucesso, falha ou tempo limite com base nos resultados da invocação do Lambda. Quando a função está desativada, o Amazon Lex V2 não executa a função do Lambda e age como se o hook do código de diálogo tivesse sido bem-sucedido.

Você também pode definir um rótulo de invocação que é enviado para a função do Lambda quando ela é invocada por essa mensagem. Isso pode ajudar a identificar a seção da sua função do Lambda a ser executada.

**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Usar o Visual Conversation Builder
<a name="visual-conversation-builder"></a>

O Visual Conversation Builder é um criador de conversas de arrastar e soltar para projetar e visualizar facilmente caminhos de conversação usando intenções em um ambiente visual rico.

**Acessar o Visual Conversation Builder**

1. No console do Amazon Lex V2, selecione um bot e selecione **Intenções** no painel de navegação à esquerda.

1. Acesse o editor de intenções de uma das seguintes formas:
   + Selecione **Adicionar intenção** no canto superior direito da seção **Intenções** e, em seguida, escolha adicionar uma intenção vazia ou uma intenção incorporada.
   + Escolha o nome de uma intenção na seção **Intenções**.

1. No editor de intenção, selecione **Construtor visual** no painel na parte inferior da tela para acessar o Visual Conversation Builder.

1. Para retornar à interface do editor de intenção do menu, selecione **Editor**.

![\[Um exemplo de fluxo de conversa com o Visual Conversation Builder.\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-sample.png)


O Visual Conversation Builder oferece uma interface de usuário mais intuitiva com a capacidade de visualizar e modificar o fluxo da conversa. Ao arrastar e soltar os blocos, você pode estender um fluxo existente ou reordenar as etapas da conversa. Você pode desenvolver um fluxo de conversação com ramificações complexas sem escrever nenhum código Lambda.

Essa mudança ajuda a dissociar o design do fluxo de conversação de outras lógicas de negócios no Lambda. O Visual Conversation Builder pode ser usado em conjunto com o editor de intenções existente para criar fluxos de conversação. No entanto, é recomendável usar a visualização do editor visual para fluxos de conversação mais complexos.

Ao salvar uma intenção, o Amazon Lex V2 pode conectar automaticamente as intenções quando determina que há conexões perdidas, o Amazon Lex V2 sugere uma conexão ou você pode selecionar sua própria conexão para o bloco.


| Ação | Exemplo | 
| --- | --- | 
|  Adicionar um bloco ao espaço de trabalho  |  ![\[Adicionar um bloco ao espaço de trabalho\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-addblock.gif)  | 
|  Fazer uma conexão entre blocos  |  ![\[Fazer uma conexão entre blocos\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-connectionblock.gif)  | 
|  Abrir o painel de configuração em um bloco  |  ![\[Abrir o painel de configuração em um bloco\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-openpanelblock.gif)  | 
|  Ampliar para caber  |  ![\[Ampliar para caber\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-zoomtofit.gif)  | 
|  Excluir um bloco do fluxo de conversa  |  ![\[Excluir um bloco do fluxo de conversa\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-deleteblock.gif)  | 
|  Limpeza automática do espaço de trabalho  |  ![\[Limpeza automática do espaço de trabalho\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-autoclean.gif)  | 

**Terminologia:**

**Bloco**: a unidade básica de construção de um fluxo de conversação. Cada bloco tem uma funcionalidade específica para lidar com diferentes casos de uso de uma conversa.

**Porta**: cada bloco contém portas, que podem ser usadas para conectar um bloco a outro. Os blocos podem conter portas de entrada e portas de saída. Cada porta de saída representa uma variação funcional específica de um bloco (como erros, tempos limite ou sucesso).

**Borda**: uma borda é uma conexão entre a porta de saída de um bloco e a porta de entrada de outro bloco. É parte de uma ramificação em um fluxo de conversação.

**Fluxo de conversação**: um conjunto de blocos conectados por bordas que descreve as interações em nível de intenção com um cliente. 

**Blocos**

Os blocos são os alicerces de um design de fluxo de conversação. Representam diferentes estados dentro da intenção, que vão desde o início da intenção até a entrada do usuário até o fechamento.

Cada bloco tem um ponto de entrada e um ou vários pontos de saída com base no tipo de bloco. Cada ponto de saída pode ser configurado com uma mensagem correspondente à medida que a conversa prossegue pelos pontos de saída. Para blocos com vários pontos de saída, eles estão relacionados ao status correspondente ao nó. Para um nó condicional, os pontos de saída representam as diferentes condições.

Cada bloco tem um painel de configuração, que abre ao clicar no ícone **Editar** no canto superior direito do bloco. O painel de configuração contém campos detalhados que podem ser configurados para corresponder a cada bloco.

Os prompts e mensagens do bot podem ser configurados diretamente no nó arrastando um novo bloco ou podem ser modificados no painel direito, junto com outros atributos do bloco.

**Tipos de bloco**: aqui estão os tipos de blocos que você pode usar com o Visual Conversation Builder.


| Tipo de bloco | Bloco | 
| --- | --- | 
|  **Início**: a raiz ou o primeiro bloco do fluxo da conversa. Esse bloco também pode ser configurado de forma que o bot possa enviar uma resposta inicial (mensagem de que a intenção foi reconhecida). Para obter mais informações, consulte [Resposta inicial](intent-initial.md).  |  ![\[Um bloco inicial no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-start.png)  | 
|  **Obter valor do slot**: esse bloco tenta extrair valor para um único slot. Esse bloco tem uma configuração para aguardar a resposta do cliente ao prompt de elicitação do slot. Para obter mais informações, consulte [Slots](intent-slots.md).  |  ![\[Um bloco inicial no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-getslotvalue.png)  | 
|  **Condição**: este bloco contém condicionais. Ele contém até 4 ramificações personalizadas (com condições) e uma ramificação padrão. Para obter mais informações, consulte [Adicionar condições às conversas ramificadas](paths-branching.md).  |  ![\[Um bloco de condição no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-condition.png)  | 
|  **Hook de código de diálogo**: esse bloco manipula a invocação da função do Lambda de diálogo. Esse bloco contém respostas de bots com base no sucesso, falha ou tempo limite da função do Lambda de diálogo. Para obter mais informações, consulte [Invocar hook de código de diálogo](paths-code-hook.md).  |  ![\[Um bloco hook de código no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-codehook.png)  | 
|  **Confirmação**: esse bloco consulta o cliente antes do atendimento da intenção. Ele contém respostas de bots com base no cliente dizendo sim ou não ao prompt de confirmação. Para obter mais informações, consulte [Confirmação](intent-confirm.md).  |  ![\[Um bloco de confirmação no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-confirmation.png)  | 
|  **Atendimento**: esse bloco trata do atendimento da intenção, geralmente após a elicitação dos slots. Ele pode ser configurado para invocar funções do Lambda, bem como responder com mensagens, se o atendimento for bem-sucedido ou falhar. Para obter mais informações, consulte [Cumprimento](intent-fulfillment.md).  |  ![\[Um bloco atendimento no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-fulfillment.png)  | 
|  **Resposta de encerramento**: esse bloco permite que o bot responda com uma mensagem antes de encerrar a conversa. Para obter mais informações, consulte [Resposta de encerramento](intent-closing.md).  |  ![\[Um bloco de encerramento no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-closing.png)  | 
|  **Encerrar conversa**: esse bloco indica o fim do fluxo da conversa.  |  ![\[Um bloco final no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-end.png)  | 
|  **Aguarde a entrada do usuário**: esse bloco pode ser usado para capturar a entrada do cliente e mudar para outra intenção com base na expressão.  |  ![\[Um bloco de espera no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-wait.png)  | 
|  **Ir para a intenção**: esse bloco pode ser usado para acessar uma nova intenção ou para obter diretamente um espaço específico dessa intenção.  |  ![\[Um bloco de intenção no Visual Conversation Builder\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/vcb-gotointent.png)  | 

**Tipos de portas**

Todos os blocos contêm uma porta de entrada, que é usada para conectar seus blocos principais. A conversa só pode fluir para a porta de entrada de um determinado bloco a partir da porta de saída do bloco pai. No entanto, os blocos podem conter zero, uma ou várias portas de saída. Os blocos sem nenhuma porta de saída significam o fim do fluxo de conversação na intenção atual (`GoToIntent`, `EndConversation`, `WaitForUserInput`). 

**Regras de design de intenção:**
+ Todos os fluxos em uma intenção começam com o bloco inicial.
+ As mensagens correspondentes a cada ponto de saída são opcionais.
+ Você pode configurar os blocos para definir valores correspondentes a cada ponto de saída no painel de configuração.
+ Somente um único bloco de início, confirmação, atendimento e fechamento pode existir em um único fluxo dentro de uma intenção. Podem existir várias condições, hook de código de diálogo, obtenção de valores de slot, término de conversa, transferência e espera por blocos de entrada do usuário.
+ Um bloco condicional não pode ter uma conexão direta com um bloco condicional. O mesmo se aplica ao hook de código de diálogo.
+ Fluxos circulares são permitidos em três blocos, mas um conector de entrada para Iniciar intenção não é permitido.
+ Um slot opcional não tem um conector de entrada ou uma conexão de saída e é usado principalmente para capturar quaisquer dados presentes durante a elicitação da intenção. Todos os outros slots que fazem parte do caminho da conversa devem ser obrigatórios.

Blocos:
+ O bloco inicial deve ter uma borda de saída.
+ Cada bloco obter valor do slot deve ter uma borda de saída da porta de sucesso, se o slot for necessário.
+ Cada bloco de condição deve ter uma borda de saída de cada ramificação se o bloco estiver ativo.
+ Um bloco condicional não pode ter mais de um pai.
+ Um bloco de condição ativo deve ter uma borda de entrada.
+ Cada bloco hook de código ativo deve ter uma borda de saída de cada porta: com êxito, com falha e tempo limite.
+ Um bloco hook de código ativo deve ter uma borda de entrada.
+ Um bloco confirmação ativo deve ter uma borda de entrada.
+ Um bloco atendimento ativo deve ter uma borda de entrada.
+ Um bloco encerramento ativo deve ter uma borda de entrada.
+ Um bloco condicional deve ter pelo menos uma ramificação não padrão.
+ Um bloco ir para intenção deve ter uma intenção especificada.

Bordas:
+ Um bloco condicional não pode estar conectado a outro bloco condicional.
+ Um bloco hook de código não pode ser conectado a outro bloco hook de código.
+ Um bloco condicional só pode ser conectado a zero ou a um bloco hook de código.
+ A conexão (hook de código -> condição -> hook de código) não é válida.
+ Um bloco atendimento não pode ter um bloco hook de código como filho.
+ Um bloco condicional, que é filho do bloco de atendimento, não pode ter um bloco hook de código como filho.
+ Um bloco encerramento não pode ter um bloco hook de código como filho.
+ Um bloco condicional que é filho do bloco de encerramento não pode ter um bloco hook de código como filho.
+ Um bloco inicial, de confirmação ou obter valor do slot não pode ter mais do que um bloco hook de código em sua cadeia de dependência.

**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 obter mais informações, consulte [Alterações nos fluxos de conversas do Amazon Lex V2](understanding-new-flows.md). 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.

# Intenções integradas
<a name="built-in-intents"></a>

Para ações comuns, você pode usar a biblioteca de intenções integradas padrão. Para criar uma intenção de uma intenção integrada, escolha uma intenção no console e forneça um novo nome. A nova intenção tem a configuração de intenção básica, como a amostra de declarações. 

Na implementação atual, você não pode: 
+ Adicionar ou remover amostra de declarações da intenção básica
+ Configurar slots para intenções integradas

**Para adicionar uma intenção integrada a um bot**

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. Escolha o bot ao qual adicionar a intenção integrada.

1. No menu à esquerda, escolha o idioma e, em seguida, escolha **Intenções**.

1. Escolha **Adicionar intenção** e, em seguida, escolha **Usar intenção incorporada**.

1. Em **Intenção incorporada**, escolha a intenção a ser usada.

1. Dê um nome à intenção e escolha **Adicionar**.

1. Use o editor de intenção para configurar a intenção conforme necessário para o seu bot.

**Topics**
+ [AMAZON.BedrockAgentIntent](built-in-intent-bedrockagent.md)
+ [AMAZON.CancelIntent](built-in-intent-cancel.md)
+ [AMAZON.FallbackIntent](built-in-intent-fallback.md)
+ [AMAZON.HelpIntent](built-in-intent-help.md)
+ [AMAZON.KendraSearchIntent](built-in-intent-kendra-search.md)
+ [AMAZON.PauseIntent](built-in-intent-pause.md)
+ [AMAZON.QnAIntent](built-in-intent-qna.md)
+ [AMAZON.QnAIntent (multiple use support)](built-in-intent-qna-multi.md)
+ [AMAZON.QinConnectIntent](built-in-intent-qinconnect.md)
+ [AMAZON.RepeatIntent](built-in-intent-repeat.md)
+ [AMAZON.ResumeIntent](built-in-intent-resume.md)
+ [AMAZON.StartOverIntent](built-in-intent-start-over.md)
+ [AMAZON.StopIntent](built-in-intent-stop.md)

# AMAZON.BedrockAgentIntent
<a name="built-in-intent-bedrockagent"></a>

**nota**  
Antes de aproveitar os recursos de IA generativa, você deve atender aos seguintes pré-requisitos:  
Para obter informações sobre preços para usar o Amazon Bedrock, consulte [Definição de preços do Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).
Ative os recursos de IA generativa para a localidade do seu bot. Para isso, siga as etapas em [Otimizar a criação de bots Lex V2 e o desempenho usando IA generativa](generative-features.md). 

Ativa os atendentes do Amazon Bedrock definidos na intenção de atender a solicitações de cliente e ativa fluxos de trabalho dos atendentes para realizar a tarefa definida. Este atributo está disponível em todas as localidades compatíveis com o Amazon Lex V2 e em todas as regiões comerciais onde os atendentes do Amazon Lex V2 e do Amazon Bedrock estejam presentes. 

Se esta intenção estiver substituindo `FallbackIntent`, ela será ativada quando um enunciado não for classificado em nenhuma das outras intenções presentes no bot. Do contrário, ela será ativada somente quando um enunciado for classificado nessa intenção. É importante observar que essa intenção não será ativada para enunciados perdidos ao elicitar um valor de slot. 

Uma vez reconhecido pelo bot do Amazon Lex V2, o `AMAZON.BedrockAgentIntent` ativa o `BedrockAgent` definido ou `BedrockKnowledgeBase` para responder ao cliente. Se você estiver usando atendentes do Amazon Bedrock, a conversa permanecerá no `BedrockAgentIntent` e as solicitações do usuário serão retransmitidas para os atendentes, até que o atendente do Amazon Bedrock determine que a conversa está marcada como `FINISH`. É só após isso que o Amazon Lex V2 assume o controle da conversa e segue as próximas etapas definidas no `AMAZON.BedrockAgentIntent`.

Responde às perguntas do cliente usando atendentes do Amazon Bedrock e bases de conhecimento para responder às perguntas do cliente e dar respostas detalhadas.

**Atenção**  
Você não pode usar o `AMAZON.BedrockAgentIntent` sem enunciados de amostra, `AMAZON.QnAIntent` sem enunciados de amostra e o `AMAZON.KendraSearchIntent` na mesma localidade do bot.

Se você selecionar essa intenção, configure os campos a seguir e selecione Adicionar para adicionar a intenção.
+ ID do atendente do Amazon Bedrock: o identificador do atendente do Amazon Bedrock. Escolha o Bedrock Agent que você deseja usar. 
+ ID de alias do atendente do Amazon Bedrock: o identificador de alias do atendente do Amazon Bedrock.

**Importante**  
Ao criar o atendente do Amazon Bedrock a ser usado com o Amazon Lex V2, verifique se a **Entrada do usuário** em **Configurações adicionais** é `ENABLED`. Esta configuração é fundamental para permitir aos atendentes fazer perguntas de esclarecimento ou acompanhamento, além de permitir que o Amazon Lex V2 delegue novamente aos atendentes a conclusão da tarefa correspondente.

(Opcional) Você também pode adicionar um BedrockAgentIntent com estas opções:
+ Modelo do Amazon Bedrock: escolha o fornecedor e o modelo de base a ser usado para essa intenção. Atualmente, são compatíveis alguns modelos Anthropic Claudei. 
+ Base de conhecimento do Amazon Bedrock: se você escolher essa opção, especifique o ID da base de conhecimento do Amazon Bedrock. Você pode encontrar o ID verificando a página de detalhes da base de conhecimento do Amazon Bedrock no console ou enviando uma solicitação `GetKnowledgeBase`.

As respostas do BedrockAgentIntent serão armazenadas nos atributos da sessão e da solicitação, conforme mostrado abaixo:
+ `x-amz-lex:bedrock-agent-search-response`: a resposta do atendente do Amazon Bedrock para a pergunta ou o enunciado.
+ `x-amz-lex:bedrock-knowledge-base-search-response-source`: aponta para o documento, ou a lista de documentos, usado para gerar a resposta caso esteja usando a configuração da base de conhecimento do Amazon Bedrock.
+ `x-amz-lex:bedrock-agent-action-group-invocation-input`: objeto contendo valores de entrada coletados pelo grupo de ações do atendente. Para obter mais informações sobre grupos de ação de agentes, consulte ActionGroupInvocationInput.
+ `x-amz-lex:bedrock-agent-knowledge-base-lookup-input`: objeto contendo os detalhes relacionados à pesquisa da base de conhecimento do Amazon Bedrock.
+ `x-amz-lex:bedrock-agent-agent-collaborator-details`: objeto contendo detalhes da entrada e da saída dos atendentes secundários que foram invocados como parte das invocações de colaboração multiagente.

Para obter mais informações, consulte [Como BedrockAgentIntent usar um agente Bedrock no Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/bedrock-agent-intent.html).

# AMAZON.CancelIntent
<a name="built-in-intent-cancel"></a>

Responde a palavras e frases que indicam que o usuário deseja cancelar a interação atual. Seu aplicativo pode usar essa intenção para remover valores do tipo de slot e outros atributos antes de encerrar a interação com o usuário.

Declarações comuns:
+ cancelar
+ não se preocupe
+ esqueça

# AMAZON.FallbackIntent
<a name="built-in-intent-fallback"></a>

Quando a entrada de um usuário em uma intenção não é o que um bot espera, você pode configurar o Amazon Lex V2 para invocar uma *intenção de fallback*. Por exemplo, se a entrada do usuário "Eu gostaria de pedir doce" não corresponder a uma intenção em seu bot `OrderFlowers`, o Amazon Lex V2 invocará a intenção de fallback para lidar com a resposta.

O tipo de `AMAZON.FallbackIntent` intenção incorporado é adicionado ao seu bot automaticamente quando você cria um bot usando o console ou quando adiciona uma localidade a um bot usando a [CreateBotLocale](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotLocale.html)operação. 

A invocação de uma intenção de fallback usa duas etapas. Na primeira etapa, a intenção de fallback é correspondida com base na entrada do usuário. Quando a intenção de fallback é correspondida, a maneira como o bot se comporta depende do número de novas tentativas configuradas para um prompt. 

O Amazon Lex V2 corresponde à intenção de fallback nestas situações: 
+ A entrada do usuário para uma intenção não corresponde à entrada esperada pelo bot
+ A entrada de áudio é ruído ou a entrada de texto não é reconhecida como palavras.
+ A entrada do usuário é ambígua, e o Amazon Lex V2 não consegue determinar qual intenção invocar.

A intenção de fallback é invocada quando:
+ Uma intenção não reconhece a entrada do usuário como um valor de slot após o número configurado de tentativas.
+ Uma intenção não reconhece a entrada do usuário como uma resposta a um prompt de confirmação após o número configurado de tentativas.

Você não pode adicionar o seguinte a uma intenção de fallback:
+ Enunciados
+ Slots
+ Um prompt de confirmação

## Usar uma função do Lambda com uma intenção de fallback
<a name="invoke-fallback"></a>

Quando uma intenção de fallback é invocada, a resposta depende da configuração do parâmetro `fulfillmentCodeHook` para a operação [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html). O bot realiza uma das seguintes ações:
+ Retorna as informações de intenção para o aplicativo cliente.
+ Chama a função do Lambda de validação e preenchimento do alias. Ele chama a função com as variáveis de sessão que são definidas para a sessão.

Para obter mais informações sobre como definir a resposta quando uma intenção de fallback é invocada, consulte o parâmetro `fulfillmentCodeHook` da operação [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html). 

Se você usar a função do Lambda com sua intenção de fallback, poderá usar essa função para chamar outra intenção ou executar alguma forma de comunicação com o usuário, como coletar um número de retorno de chamada ou abrir uma sessão com um representante de atendimento ao cliente.

Uma intenção de fallback pode ser invocada várias vezes na mesma sessão. Por exemplo, imagine que a função do Lambda usa a ação de diálogo `ElicitIntent` para solicitar ao usuário uma intenção diferente. Se o Amazon Lex V2 não conseguir inferir a intenção do usuário após o número configurado de tentativas, ele invocará a intenção de fallback novamente. Ele também invoca a intenção de fallback quando o usuário não responde com um valor de slot válido após o número configurado de tentativas.

É possível configurar uma função do Lambda para controlar o número de vezes que a intenção de fallback é chamada usando uma variável de sessão. Sua função do Lambda poderá executar uma ação diferente se for chamada mais vezes do que o limite definido na função do Lambda. Para mais informações sobre variáveis de sessão, consulte [Definição de atributos de sessão para seu bot do Lex V2](context-mgmt-session-attribs.md).

# AMAZON.HelpIntent
<a name="built-in-intent-help"></a>

Responde a palavras ou frases que indicam que o usuário precisa de ajuda ao interagir com seu bot. Quando essa intenção é invocada, você pode configurar o aplicativo ou a função do Lambda para fornecer informações sobre os recursos do seu bot, fazer perguntas de acompanhamento sobre áreas de ajuda ou entregar a interação a um atendente humano. 

Declarações comuns:
+ ajuda
+ ajude-me
+ você pode me ajudar

# AMAZON.KendraSearchIntent
<a name="built-in-intent-kendra-search"></a>

Para pesquisar documentos indexados com o Amazon Kendra, use a intenção `AMAZON.KendraSearchIntent`. Quando o Amazon Lex V2 não consegue determinar a próxima ação em uma conversa com o usuário, ele aciona a intenção de pesquisa.

O `AMAZON.KendraSearchIntent` está disponível somente em Inglês (EUA) (inglês-EUA) e nas regiões Leste dos EUA (N. da Virgínia), Oeste dos EUA (Oregon) e Europa (Irlanda).

O Amazon Kendra é machine-learning-based um serviço de pesquisa que indexa documentos em linguagem natural, como documentos PDF ou arquivos do Microsoft Word. Ele pode pesquisar documentos indexados e retornar os seguintes tipos de respostas a uma pergunta:
+ Uma resposta 
+ Uma entrada de uma pergunta frequente que pode responder à pergunta
+ Um documento relacionado à pergunta

Para ver um exemplo de uso de `AMAZON.KendraSearchIntent`, consulte [Exemplo: criar um bot de perguntas frequentes para um índice do Amazon Kendra.](faq-bot-kendra-search.md).

Se você configurar uma intenção `AMAZON.KendraSearchIntent` para o bot, o Amazon Lex V2 chamará a intenção sempre que não conseguir determinar o enunciado do usuário para uma intenção. Se não houver resposta do Amazon Kendra, a conversa continuará conforme configurado no bot.

**nota**  
 No momento, o Amazon Lex V2 não oferece suporte ao `AMAZON.KendraSearchIntent` durante a elicitação de slots. Se o Amazon Lex V2 não puder determinar a expressão do usuário para um slot, ele chama o `AMAZON.FallbackIntent`. 

Quando `AMAZON.KendraSearchIntent` é usado com o `AMAZON.FallbackIntent` no mesmo bot, o Amazon Lex V2 usa as intenções da seguinte forma:

1. O Amazon Lex V2 chama `AMAZON.KendraSearchIntent`. A intenção chama a operação `Query` do Amazon Kendra.

1. Se o Amazon Kendra retornar uma resposta, o Amazon Lex V2 exibirá o resultado para o usuário.

1. Se não houver resposta do Amazon Kendra, o Amazon Lex V2 avisará novamente o usuário. A próxima ação depende da resposta do usuário.
   + Se a resposta do usuário contiver um enunciado reconhecido pelo Amazon Lex V2, como preencher um valor de slot ou confirmar uma intenção, a conversa com o usuário prosseguirá conforme configurado para o bot.
   + Se a resposta do usuário não contiver um enunciado reconhecido pelo Amazon Lex V2, o Amazon Lex V2 fará outra chamada para a operação `Query`.

1. Se não houver resposta após o número configurado de novas tentativas, o Amazon Lex V2 chamará `AMAZON.FallbackIntent` e encerrará a conversa com o usuário.

Há três maneiras de usar `AMAZON.KendraSearchIntent` para fazer uma solicitação ao Amazon Kendra:
+ Deixe que a intenção da pesquisa faça a solicitação por você. O Amazon Lex V2 chama o Amazon Kendra com o enunciado do usuário como a string de pesquisa. Ao criar a intenção, você pode definir uma string de filtro de consulta que limite o número de respostas retornadas pelo Amazon Kendra. O Amazon Lex V2 usa o filtro na solicitação de consulta.
+ Adicione outros parâmetros de consulta à solicitação para restringir os resultados da pesquisa usando a função do Lambda. Adicione um campo `kendraQueryFilterString` que contém parâmetros de consulta do Amazon Kendra à ação de diálogo `delegate`. Quando parâmetros de consulta são adicionados à solicitação com a função do Lambda, eles têm precedência sobre o filtro de consulta definido quando a intenção foi criada.
+ Crie uma consulta usando a função do Lambda. É possível criar uma solicitação de consulta completa do Amazon Kendra enviada pelo Amazon Lex V2. Especifique a consulta no campo `kendraQueryRequestPayload` na ação de diálogo `delegate`. O campo `kendraQueryRequestPayload` tem precedência sobre o campo `kendraQueryFilterString`.

Para especificar o parâmetro `queryFilterString` ao criar um bot ou especificar o campo `kendraQueryFilterString` ao chamar a ação `delegate` em uma função do Lambda do diálogo, especifique uma string usada como filtro de atributo para a consulta do Amazon Kendra. Se a string não for um filtro de atributo válido, você receberá uma exceção `InvalidBotConfigException` em runtime. Para mais informações sobre filtros de atributo, consulte [Usar atributos de documento para filtrar consultas](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) no *Guia do desenvolvedor do Amazon Kendra*.

Para ter controle sobre a consulta enviada pelo Amazon Lex V2 para o Amazon Kendra, é possível especificar uma consulta no campo `kendraQueryRequestPayload` na função do Lambda. Se a consulta não for válida, o Amazon Lex V2 retornará uma exceção `InvalidLambdaResponseException`. Para mais informações, consulte a [Operação de consulta](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html) no *Guia do desenvolvedor do Amazon Kendra*.

Para obter um exemplo de como usar a `AMAZON.KendraSearchIntent`, consulte [Exemplo: criar um bot de perguntas frequentes para um índice do Amazon Kendra.](faq-bot-kendra-search.md).

## Política do IAM para pesquisa Amazon Kendra
<a name="kendra-search-iam"></a>

Para usar a `AMAZON.KendraSearchIntent` intenção, você deve usar uma função que forneça políticas do AWS Identity and Access Management (IAM) que permitam que o Amazon Lex V2 assuma uma função de tempo de execução que tenha permissão para chamar a intenção do Amazon Kendra. `Query` As configurações do IAM que você usa dependem de você criá-las `AMAZON.KendraSearchIntent` usando o console Amazon Lex V2 ou usando um AWS SDK ou o ( AWS Command Line Interface AWS CLI). Quando o console é usado, é possível escolher entre adicionar permissão para chamar o Amazon Kendra para a função vinculada ao serviço do Amazon Lex V2 ou usar uma função especificamente para chamar a operação `Query` do Amazon Kendra. Ao usar a AWS CLI ou um SDK para criar a intenção, você deve usar uma função específica para chamar a operação. `Query`

### Anexar permissões
<a name="kendra-iam-attach"></a>

É possível usar o console para anexar permissões para acessar a operação `Query` do Amazon Kendra à função vinculada ao serviço padrão do Amazon Lex V2. Quando você anexa permissões à função vinculada ao serviço, não precisa criar e gerenciar uma função de runtime especificamente para se conectar ao índice do Amazon Kendra.

O usuário, a função ou o grupo usado para acessar o console do Amazon Lex V2 deve ter permissões para gerenciar políticas de função. Anexe a política do IAM à função de acesso do console. Quando essas permissões são concedidas, a função tem permissões para alterar a política de função vinculada ao serviço existente. 

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:PutRolePolicy",
            "iam:GetRolePolicy"
        ],
        "Resource": "arn:aws:iam::*:role/aws-service-role/lexv2.amazonaws.com/AWSServiceRoleForLexBots*"
    },
    {
        "Effect": "Allow",
        "Action": "iam:ListRoles",
        "Resource": "*"
    }
]
}
```

------

### Especificar uma função
<a name="kendra-iam-role"></a>

Você pode usar o console, a AWS CLI ou a API para especificar uma função de tempo de execução a ser usada ao chamar a operação Amazon Kendra. `Query` 

O usuário, a função ou o grupo utilizado para especificar a função de runtime deve ter a permissão `iam:PassRole`. A política a seguir define a permissão. É possível usar as chaves de contexto de condição `iam:AssociatedResourceArn` e `iam:PassedToService` para limitar ainda mais o escopo das permissões. Para obter mais informações, consulte [IAM e AWS STS Condition Context Keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html) no *Guia do usuário do AWS Identity and Access Management*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

A função de runtime que o Amazon Lex V2 precisa usar para chamar o Amazon Kendra deve ter as permissões `kendra:Query`. Quando você usa um perfil do IAM existente para permissão para chamar a operação `Query` do Amazon Kendra, a função deve ter a política a seguir anexada.

Você pode usar o console do IAM, a API do IAM ou o AWS CLI para criar uma política e anexá-la a uma função. Essas instruções usam a CLI da AWS para criar a função e as políticas.

**nota**  
O código a seguir é formatado para Linux e MacOS. Para Windows, substitua o caractere de continuação de linha do Linux (\$1) pelo circunflexo (^).

**Como adicionar permissão de operação de consulta a uma função**

1. Crie um documento chamado **KendraQueryPolicy.json** no diretório atual, adicione a ele o código a seguir e salve-o.

1. Na AWS CLI, execute o comando a seguir para criar a política do IAM para executar a operação Amazon Kendra. `Query`

   ```
   aws iam create-policy \
   --policy-name query-policy-name \
   --policy-document file://KendraQueryPolicy.json
   ```

1. Anexe a política ao perfil do IAM utilizado para chamar a operação `Query`.

   ```
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::account-id:policy/query-policy-name
   --role-name role-name
   ```

É possível optar por atualizar a função vinculada ao serviço do Amazon Lex V2 ou usar uma função que você criou ao criar o `AMAZON.KendraSearchIntent` para o bot. O procedimento a seguir mostra como escolher o perfil do IAM a ser usado.

**Como especificar a função de runtime para AMAZON.KendraSearchIntent**

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. Escolha o bot ao qual você deseja adicionar a `AMAZON.KendraSearchIntent`.

1. Escolha o sinal de adição (\$1) ao lado de **Intenções**.

1. Em **Adicionar intenção**, escolha **Pesquisar intenções existentes**.

1. Em **Intenções de pesquisa**, insira **AMAZON.KendraSearchIntent** e escolha **Adicionar**.

1. Em **Copiar intenção interna**, insira um nome para a intenção, como **KendraSearchIntent**, e escolha **Adicionar**.

1. Abra a seção **Consulta do Amazon Kendra**.

1. Para **Perfil do IAM**, escolha uma das seguintes opções:
   + Para atualizar a função vinculada ao serviço do Amazon Lex V2 para permitir que o bot consulte índices do Amazon Kendra, escolha **Adicionar permissões do Amazon Kendra**.
   + Para usar uma função que tenha permissão para chamar a operação `Query` do Amazon Kendra, escolha **Usar uma função existente**.

## Usar atributos de solicitação e sessão como filtros
<a name="kendra-search-filter"></a>

Para filtrar a resposta do Amazon Kendra a itens relacionados à conversa atual, use atributos de sessão e solicitação como filtros adicionando o parâmetro `queryFilterString` ao criar o bot. Especifique um espaço reservado para o atributo ao criar a intenção e, depois, o Amazon Lex V2 substituirá um valor antes de chamar o Amazon Kendra. Para mais informações sobre atributos de solicitação, consulte [Definição de atributos de solicitação para seu bot do Lex V2](context-mgmt-request-attribs.md). Para mais informações sobre atributos de sessão, consulte [Definição de atributos de sessão para seu bot do Lex V2](context-mgmt-session-attribs.md).

Este é um exemplo de um parâmetro `queryFilterString` que usa uma string para filtrar a consulta do Amazon Kendra.

```
"{"equalsTo": {"key": "City", "value": {"stringValue": "Seattle"}}}"
```

Veja a seguir um exemplo de um parâmetro `queryFilterString` que usa um atributo de sessão chamado `"SourceURI"` para filtrar a consulta do Amazon Kendra.

```
"{"equalsTo": {"key": "SourceURI","value": {"stringValue": "[FileURL]"}}}"
```

Veja a seguir um exemplo de parâmetro `queryFilterString` que usa um atributo de solicitação chamado `"DepartmentName"` para filtrar a consulta do Amazon Kendra.

```
"{"equalsTo": {"key": "Department","value": {"stringValue": "((DepartmentName))"}}}"
```

Os filtros `AMAZON.KendraSearchInteng` usam o mesmo formato dos filtros de pesquisa do Amazon Kendra. Para obter mais informações, consulte [Usar atributos de documento para filtrar os resultados da pesquisa](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) no *Guia do desenvolvedor do Amazon Kendra*.

A string do filtro de consulta usada com o `AMAZON.KendraSearchIntent` deve usar letras minúsculas para a primeira letra de cada filtro. Por exemplo, veja a seguir um filtro de consulta válido para o `AMAZON.KendraSearchIntent`.

```
{
"andAllFilters": [
    {
        "equalsTo": {
            "key": "City",
            "value": {
                "stringValue": "Seattle"
            }
        }
    },
    {
        "equalsTo": {
            "key": "State",
            "value": {
                "stringValue": "Washington"
            }
        }
    }
]
}
```

## Usar a resposta da pesquisa
<a name="kendra-search-response"></a>

O Amazon Kendra retorna a resposta a uma pesquisa na instrução `IntentClosingSetting` da intenção. A intenção deve ter uma instrução `closingResponse`, a menos que uma função do Lambda produza uma mensagem de resposta de conclusão.

O Amazon Kendra tem cinco tipos de respostas. 
+ As duas respostas a seguir exigem que uma pergunta frequente seja configurada para seu índice Amazon Kendra. Para obter mais detalhes, consulte [Adicionar perguntas e respostas diretamente a um índice](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html).
  +  `x-amz-lex:kendra-search-response-question_answer-question-<N>`: a pergunta de uma pergunta frequente correspondente à pesquisa. 
  +  `x-amz-lex:kendra-search-response-question_answer-answer-<N>`: a resposta de uma pergunta frequente correspondente à pesquisa. 
+ As três respostas a seguir exigem que uma fonte de dados seja configurada para seu índice Amazon Kendra. Para obter mais detalhes, consulte [Criação de uma fonte de dados](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html). 
  + `x-amz-lex:kendra-search-response-document-<N>`: um trecho de um documento no índice relacionado ao texto do enunciado.
  + `x-amz-lex:kendra-search-response-document-link-<N>`: o URL de um documento no índice relacionado ao texto da declaração.
  + `x-amz-lex:kendra-search-response-answer-<N>`: um trecho de um documento no índice que responde à pergunta.

As respostas são retornadas em atributos `request`. Pode haver até cinco respostas para cada atributo, numeradas de 1 a 5. Para obter mais informações sobre respostas, consulte [Tipos de resposta](https://docs.aws.amazon.com/kendra/latest/dg/response-types.html) no *Guia do desenvolvedor do Amazon Kendra*. 

A instrução `closingResponse` deve ter um ou mais grupos de mensagens. Cada grupo de mensagens contém uma ou mais mensagens. Cada mensagem pode conter uma ou mais variáveis de espaço reservado que são substituídas por atributos de solicitação na resposta do Amazon Kendra. Deve haver pelo menos uma mensagem no grupo de mensagens em que todas as variáveis na mensagem são substituídas por valores de atributo de solicitação na resposta de runtime, ou deve haver uma mensagem no grupo sem variáveis de espaço reservado. Os atributos de solicitação são ativados com parênteses duplos ("((" "))"). As mensagens do grupo de mensagens a seguir correspondem a qualquer resposta do Amazon Kendra:
+ “Encontrei uma pergunta de FAQ para você: ((x-amz-lex: kendra-search-response-question \$1resposta-pergunta-1)), e a resposta é ((x-amz-lex: \$1resposta-resposta-1))” kendra-search-response-question
+ “Encontrei um trecho de um documento útil: ((x-amz-lex: kendra-search-response-document -1))”
+ “Acho que a resposta às suas perguntas é ((x-amz-lex: kendra-search-response-answer -1))”

## Usar uma função do Lambda para gerenciar a solicitação e a resposta
<a name="kendra-search-lambda"></a>

A intenção `AMAZON.KendraSearchIntent` pode usar o hook de código de diálogo e o hook de código de atendimento para gerenciar a solicitação ao Amazon Kendra e a resposta. Utilize a função do Lambda do hook de código de diálogo quando quiser modificar a consulta enviada ao Amazon Kendra e a função do Lambda de hook de código de atendimento quando quiser modificar a resposta.

### Criar uma consulta com o hook de código de diálogo
<a name="kendra-search-lambda-dialog"></a>

É possível usar o hook de código de diálogo para criar uma consulta para enviar ao Amazon Kendra. O uso do hook de código de diálogo é opcional. Se você não especificar um hook de código de diálogo, o Amazon Lex V2 criará uma consulta a partir do enunciado do usuário e usará a `queryFilterString` fornecida quando você configurou a intenção, se você a tiver fornecido.

É possível usar dois campos na resposta do hook de código de diálogo para modificar a solicitação ao Amazon Kendra:
+ `kendraQueryFilterString`: use essa string para especificar filtros de atributo para a solicitação do Amazon Kendra. É possível filtrar a consulta usando qualquer um dos campos de índice definidos no índice. Para obter a estrutura da string de filtro, consulte [Usar atributos de documento para filtrar consultas](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) no *Guia do desenvolvedor do Amazon Kendra*. Se a string de filtro especificada não for válida, você receberá uma exceção `InvalidLambdaResponseException`. A string `kendraQueryFilterString` substitui qualquer string de consulta especificada na `queryFilterString` configurada para a intenção.
+ `kendraQueryRequestPayload`: use essa string para especificar uma consulta do Amazon Kendra. Sua consulta pode usar qualquer um dos atributos do Amazon Kendra. Se você não especificar uma consulta válida, receberá uma exceção `InvalidLambdaResponseException`. Para mais informações, confira [Consulta](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html) no *Guia do desenvolvedor do Amazon Kendra*.

Depois de criar o filtro ou a sequência de caracteres de consulta, você envia a resposta para o Amazon Lex V2 com o `dialogAction` campo da resposta definido como `delegate`. O Amazon Lex V2 envia a consulta para a Amazon Kendra e, em seguida, retorna a resposta da consulta ao hook do código de atendimento.

### Usar o hook de código de atendimento para a resposta
<a name="kendra-search-lambda-fulfillment"></a>

Depois que o Amazon Lex V2 envia uma consulta ao Amazon Kendra, a resposta da consulta é retornada para a função de cumprimento `AMAZON.KendraSearchIntent` da função do Lambda. O evento de entrada para o hook de código contém a resposta completa do Amazon Kendra. Os dados da consulta estão na mesma estrutura que os retornados pela operação `Query` do Amazon Kendra. Para obter mais informações, consulte [Sintaxe de resposta de consulta](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax) no *Guia do desenvolvedor do Amazon Kendra*.

O hook de código de atendimento é opcional. Se não houver nenhum ou se o hook de código não retornar uma mensagem na resposta, o Amazon Lex V2 usará a instrução `closingResponse` para respostas.

# Exemplo: criar um bot de perguntas frequentes para um índice do Amazon Kendra.
<a name="faq-bot-kendra-search"></a>

Este exemplo cria um bot do Amazon Lex V2 que usa um índice do Amazon Kendra para fornecer respostas às perguntas dos usuários. O bot de perguntas frequentes gerencia a caixa de diálogo para o usuário. Ele usa a intenção `AMAZON.KendraSearchIntent` para consultar o índice e apresentar a resposta ao usuário. Aqui está um resumo de como você criará seu bot de perguntas frequentes usando um índice da Amazon Kendra:

1. Criar um bot com o qual seus clientes vão interagir para obter respostas do bot.

1. Criar uma intenção personalizada. Como `AMAZON.KendraSearchIntent` e `AMAZON.FallbackIntent` são intenções secundárias, seu bot exige pelo menos uma outra intenção que contenha pelo menos um enunciado. Essa intenção permite que o bot crie, mas não seja usado de outra forma. Portanto, seu bot de perguntas frequentes conterá pelo menos três intenções, como na imagem abaixo:   
![\[Um bot de perguntas frequentes da Kendra com três intenções\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/kendra-faqbot/kendra-intents.png)

1. Adicionar a intenção `AMAZON.KendraSearchIntent` ao bot e configurá-lo para trabalhar com o [índice do Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html). 

1. Teste o bot fazendo uma consulta e verificando se os resultados do seu índice Amazon Kendra são documentos que respondem à consulta.

**Pré-requisitos**

Antes de usar este exemplo, é necessário criar um índice do Amazon Kendra. Para mais informações, consulte [Começar a usar um console do Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/gs-console.html) no *Guia do desenvolvedor do Amazon Kendra*. Para este exemplo, escolha o conjunto de dados de amostra (**Documentação da AWS de amostra**) como sua fonte de dados.

**Como criar um bot de perguntas frequentes:**

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 painel de navegação, escolha **Bots**. 

1. Escolha **Criar bot**.

   1.  Para **Método de criação**, escolha **Criar um bot em branco**. 

   1.  Na seção **Configuração do bot**, dê ao bot um nome que indique sua função, como **KendraTestBot**, e uma descrição opcional. O nome deve ser exclusivo em sua conta. 

   1.  A seção **Permissões do IAM**, a opção **Criar um perfil com permissões básicas do Amazon Lex**. Isso criará uma função do [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) com as permissões que o Amazon Lex V2 precisa para executar seu bot. 

   1.  Na seção **Lei de Proteção à Privacidade Online para Crianças (COPPA)**, escolha **Não**. 

   1.  Nas seções **Tempo limite da sessão ociosa** e **Configurações avançadas**, deixe as configurações padrão e escolha **Avançar**. 

   1.  Agora você está na seção **Adicionar idioma ao bot**. No menu, em **Interação por voz**, selecione **Nenhuma. Este é apenas um aplicativo baseado em texto**. Mantenha as configurações padrão para os campos restantes. 

   1.  Selecione **Concluído**. O Amazon Lex V2 cria seu bot e uma intenção padrão chamada **NewIntent**, e leva você à página para configurar essa intenção. 

Para criar um bot com sucesso, você deve criar pelo menos uma intenção separada de `AMAZON.FallbackIntent` e de `AMAZON.KendraSearchIntent`. Essa intenção é necessária para criar o bot do Amazon Lex V2, mas não é usada para a resposta de perguntas frequentes. Essa intenção deve conter pelo menos um exemplo de enunciado e ele não deve se aplicar a nenhuma das perguntas feitas pelo cliente.

**Como criar a intenção necessária:**

1.  Na seção **Detalhes da intenção**, dê um nome à intenção, como **RequiredIntent**. 

1.  Na seção **Exemplos de enunciados**, digite um enunciado na caixa ao lado de **Adicionar enunciado**, como **Required utterance**. Em seguida, escolha **Adicionar enunciado**. 

1. Selecione **Salvar intenção**.

Crie a intenção de pesquisar um índice do Amazon Kendra e a mensagem de resposta que deve ser retornada.

**Para criar uma AMAZON. KendraSearchIntent mensagem de intenção e resposta:**

1.  Selecione **Voltar à lista de intenções** no painel de navegação para retornar à página **Intenções** do seu bot. Escolha **Adicionar intenção** e selecione **Usar intenção incorporada** no menu suspenso. 

1.  Na caixa que aparece, selecione o menu em **Intenção incorporada**. Insira **AMAZON.KendraSearchIntent** na barra de busca e então escolha-a na lista. 

1.  Dê à entrada um nome, como **KendraSearchIntent**. 

1.  No menu suspenso **Índice do Amazon Kendra**, escolha o índice que a intenção deve pesquisar. O índice que você criou na seção **Pré-requisitos** deve estar disponível. 

1.  Selecione **Adicionar**. 

1. No editor de intenções, role para baixo até a seção **Processamento**, selecione a seta para a direita para expandir a seção e adicione a seguinte mensagem na caixa em **Em processamento bem-sucedido**: 

   ```
   I found a link to a document that could help you: ((x-amz-lex:kendra-search-response-document-link-1)).
   ```  
![\[Adicione a resposta de processamento\]](http://docs.aws.amazon.com/pt_br/lexv2/latest/dg/images/kendra-faqbot/kendra-fulfillment-response.gif)

    Para mais informações sobre a resposta de pesquisa do Amazon Kendra, consulte [Usando a resposta de pesquisa](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html#kendra-search-response). 

1. Escolha **Salvar intenção** e selecione **Criar** para criar o bot. Quando o bot estiver pronto, o banner na parte superior da tela ficará verde e exibirá uma mensagem de sucesso. 

Por fim, use a janela de teste do console para testar as respostas do bot.

**Para testar o bot de perguntas frequentes:**

1.  Depois que o bot for construído com sucesso, selecione **Testar**. 

1.  Insira **What is Amazon Kendra?** na janela de teste do console. Verifique se o bot responde com um link. 

1.  Para obter mais informações sobre configuração`AMAZON.KendraSearchIntent`, consulte [https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html)e. [KendraConfiguration](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_KendraConfiguration.html) 

# AMAZON.PauseIntent
<a name="built-in-intent-pause"></a>

Responde a palavras e frases que permitem ao usuário pausar uma interação com um bot para que ele possa retornar a ela mais tarde. Seu aplicativo ou função do Lambda precisa salvar dados de intenção em variáveis de sessão, ou você precisa usar a operação [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) para recuperar dados de intenção ao retomar a intenção atual.

Declarações comuns:
+ pausar
+ pausar esse item

# AMAZON.QnAIntent
<a name="built-in-intent-qna"></a>

**nota**  
Antes de aproveitar os recursos de IA generativa, você deve atender aos seguintes pré-requisitos:  
Para obter informações sobre preços para usar o Amazon Bedrock, consulte [Definição de preços do Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).
Ative os recursos de IA generativa para a localidade do seu bot. Para isso, siga as etapas em [Otimizar a criação de bots Lex V2 e o desempenho usando IA generativa](generative-features.md). 

Responde às perguntas do cliente usando um FM do Amazon Bedrock para pesquisar e resumir as respostas das perguntas frequentes. Essa intenção será ativada quando um enunciado não for classificado em nenhuma das outras intenções presentes no bot. Observe que essa intenção não será ativada para enunciados perdidos ao inferir um valor de slot. Uma vez reconhecido, o `AMAZON.QnAIntent` usa o modelo do Amazon Bedrock especificado para pesquisar a base de conhecimento do Amazon Bedrock configurada e responder à pergunta do cliente.

**Atenção**  
Você não pode usar a `AMAZON.QnAIntent` e a `AMAZON.KendraSearchIntent` na mesma localidade do bot.

As opções de repositório de conhecimento a seguir estão disponíveis. Você já deve ter criado o repositório de conhecimento e indexado os documentos nele.
+ OpenSearch Domínio do serviço — contém documentos indexados. Para criar um domínio, siga as etapas em [Criação e gerenciamento de domínios do Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html).
+ Índice Amazon Kendra: contém documentos indexados de perguntas frequentes. Para criar um índice do Amazon Kendra, siga as etapas em [Criar um índice](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html).
+ Base de conhecimento do Amazon Bedrock: contém fontes de dados indexadas. Para configurar uma base de conhecimento do Amazon Bedrock, siga as etapas em [Criação de uma base de conhecimento](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html).

Se você selecionar essa intenção, configure os campos a seguir e selecione **Adicionar** para adicionar a intenção.
+ **Modelo do Bedrock**: escolha o fornecedor e o modelo de base a ser usado para essa intenção. Não se esqueça de verificar os modelos disponíveis mais recentes e a agenda de obsolescência, além de planejar as migrações de acordo. Para obter mais informações, consulte [Ciclo de vida do modelo](https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html#versions-for-eol). 
+ **Repositório de conhecimento**: escolha a fonte da qual você deseja que o modelo extraia informações para responder às perguntas dos clientes. As fontes a seguir estão disponíveis.
  + **OpenSearch**— Configure os seguintes campos.
    + **Endpoint do domínio**: forneça o endpoint do domínio que você criou para o domínio ou o que foi fornecido após a criação do domínio.
    + **Nome do índice**: forneça o índice a ser pesquisado. Para obter mais informações, consulte [Indexação de dados no Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/indexing.html).
    + Escolha como você deseja retornar a resposta ao cliente.
      + **Resposta exata**: quando essa opção está habilitada, o valor no campo Resposta é usado como está para a resposta do bot. O modelo de base configurado do Amazon Bedrock é usado para selecionar o conteúdo exato da resposta no estado em que se encontra, sem qualquer síntese ou resumo do conteúdo. Especifique o nome dos campos de pergunta e resposta que foram configurados no OpenSearch banco de dados.
      + **Incluir campos**: retorna uma resposta gerada pelo modelo usando os campos que você especificar. Especifique o nome de até cinco campos que foram configurados no OpenSearch banco de dados. Use um ponto e vírgula (;) para separar os campos.
  + **Amazon Kendra**: configure os campos a seguir.
    + **Índice do Amazon Kendra**: selecione o índice do Amazon Kendra que você deseja que o bot pesquise.
    + **Filtro do Amazon Kendra**: para criar um filtro, marque essa caixa de seleção. Para obter mais informações sobre o filtro de pesquisa do Amazon Kendra, consulte [Usar atributos de documento para filtrar os resultados da pesquisa](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering).
    + **Resposta exata**: para permitir que seu bot retorne a resposta exata retornada pelo Amazon Kendra, marque essa caixa de seleção. Caso contrário, o modelo do Amazon Bedrock selecionado gerará uma resposta com base nos resultados.
**nota**  
Para usar esse recurso, você deve primeiro adicionar perguntas de perguntas frequentes ao seu índice seguindo as etapas em [Adicionar perguntas frequentes (FAQs) a um índice](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html).
  + **Base de conhecimento do Amazon Bedrock**: se você escolher essa opção, especifique o ID da base de conhecimento do Amazon Bedrock. Você pode encontrar o ID verificando a página de detalhes da base de conhecimento do Amazon Bedrock no console ou enviando uma solicitação [GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html).
    + **Resposta exata**: quando essa opção está habilitada, o valor no campo Resposta é usado como está para a resposta do bot. O modelo de base configurado do Amazon Bedrock é usado para selecionar o conteúdo exato da resposta no estado em que se encontra, sem qualquer síntese ou resumo do conteúdo. Para usar a resposta exata para a base de conhecimento do Amazon Bedrock, você precisa fazer o seguinte:
      + Crie arquivos JSON individuais com cada arquivo contendo um campo de resposta que contenha a resposta exata que precisa ser retornada ao usuário final.
      + Ao indexar esses documentos na base de conhecimento do Bedrock, selecione **Estratégia de fragmentação** como **Nenhuma fragmentação**.
      + Defina o campo de resposta no Amazon Lex V2 como o campo Resposta na base de conhecimento do Bedrock.

As respostas do Qn AIntent serão armazenadas nos atributos da solicitação, conforme mostrado abaixo:
+ `x-amz-lex:qnA-search-response`— A resposta do Qn AIntent à pergunta ou enunciado.
+ `x-amz-lex:qnA-search-response-source`: aponta para o documento ou lista de documentos usados para gerar a resposta.
+ `x-amz-lex:qna-additional-context`— O contexto adicional usado pelo Qn AIntent para gerar a resposta.

**Configurações adicionais de modelo**

Quando o Amazon.qn AIntent é invocado, ele usa um modelo de prompt padrão que combina instruções e contexto com a consulta do usuário para criar o prompt que é enviado ao modelo para geração de resposta. Você também pode fornecer um prompt personalizado ou atualizar o prompt padrão para atender às suas necessidades.

É possível criar o modelo de prompt com as seguintes ferramentas:

**Espaços reservados imediatos** — variáveis predefinidas no Amazon.qn AIntent para o Amazon Bedrock que são preenchidas dinamicamente em tempo de execução durante a chamada do Bedrock. No prompt do sistema, você pode ver esses espaços reservados cercados pelo símbolo `$`. A lista a seguir descreve os espaços reservados que você pode usar:


| Variável | Substituído por | Modelo | Obrigatório? | 
| --- | --- | --- | --- | 
| \$1query\$1results\$1 | Os resultados recuperados para a consulta do usuário no armazenamento de conhecimento | Modelo Bedrock selecionado | Sim | 
| \$1output\$1instruction\$1 | Instruções subjacentes para formatar a geração de respostas e as citações. Difere de modelo para modelo. Se você definir suas próprias instruções de formatação, sugerimos que remova esse espaço reservado.  | Modelo Bedrock selecionado | Não | 
| \$1 contexto\$1adicional \$1 | O contexto adicional usado pelo Qn AIntent para gerar a resposta | Modelo Bedrock selecionado | Não | 
| \$1local\$1 | O idioma no qual o bot responderá às perguntas dos clientes | Modelo Bedrock selecionado | Não | 

O **prompt padrão** que está sendo usado é:

```
$query_results$

$additional_context$

Please only follow the instructions in <instruction> tags below.
<instruction>
Given the conversation history, <additional_context> and <Context>:
(1) first, identify the user query intent and classify it as one of the categories: FAQ_QUERY, OTHER_QUERY, GIBBERISH, GREETINGS, AFFIRMATION, CHITCHAT, or MISC;
(2) second, if the intent is FAQ_QUERY, predict the most relevant grounding passage(s) by providing the passage id(s) or output CANNOTANSWER;
(3) then, generate a concise, to-the-point FAQ-style response in $locale$ locale ONLY USING the grounding content in <Context> and <additional_context>; or output CANNOTANSWER if the user query/request cannot be directly answered with the grounding content. DO NOT mention about the grounding passages such as ids or other meta data; do not create new content not presented in <Context>. Do NOT respond to query that is ill-intented or off-topic;
(4) lastly, provide the confidence level of the above prediction as LOW, MID or HIGH.
</instruction>

$output_instruction$
```

A variável **\$1output\$1instruction\$1** é substituída por:

```
Give your final response in the following form:
<answer>
<intent>FAQ_QUERY or OTHER_QUERY or GIBBERISH or GREETINGS or AFFIRMATION or CHITCHAT or MISC</intent>
<text>a concise FAQ-style response or CANNOTANSWER</text>
<passage_id>passage_id or CANNOTANSWER</passage_id>
<confidence>LOW or MID or HIGH</confidence>
</answer>
```

**nota**  
Se você decidir não usar as instruções padrão, qualquer saída fornecida pelo LLM será retornada como está para o usuário final.  
As instruções de saída precisam conter as tags <text></text> e <passageId></passageId> e instruções para que o LLM retorne os passageIds para fornecer a resposta e a atribuição da fonte.

**Suporte adicional de contexto por meio de atributos de sessão**

Você pode passar contexto adicional para o `AMAZON.QnAIntent` at runtime por meio do atributo session`x-amz-lex:qna-additional-context`. Isso permite que você forneça informações complementares que o modelo pode usar junto com os resultados do armazenamento de conhecimento ao gerar uma resposta. O contexto adicional é inserido no modelo de prompt por meio do `$additional_context$` espaço reservado.

**Exemplo:**

```
{"sessionAttributes": {"x-amz-lex:qna-additional-context":"Our support hours are Monday through Friday, 8AM-8PM EST"}}
```

**Suporte à filtragem de metadados da base de conhecimento do Amazon Bedrock por meio dos atributos da sessão**

Você pode passar os filtros de metadados da base de conhecimento do Amazon Bedrock como parte do atributo da sessão `x-amz-lex:bkb-retrieval-filter`.

```
             {"sessionAttributes":{"x-amz-lex:bkb-retrieval-filter":"{\"equals\":{\"key\":\"insurancetype\",\"value\":\"farmers\"}}      
```

**nota**  
Você precisa usar o Amazon Bedrock Knowledge Base como armazenamento de dados do Qn AIntent para usar esse filtro. Para obter mais informações, consulte [https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html#:~:text=Metadata%20and%20filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html#:~:text=Metadata%20and%20filtering).

**Configuração de inferência**

Você pode definir as configurações de inferência que serão usadas ao fazer a chamada ao LLM usando o atributo de sessão:
+ temperature: tipo inteiro
+ topP
+ maxTokens

**Exemplo:**

```
         {"sessionAttributes":{"x-amz-lex:llm-text-inference-config":"{\"temperature\":0,\"topP\":1,\"maxTokens\":200}"}}      
```

**Suporte às barreiras de proteção do Bedrock por meio de atributos de tempo de compilação e sessão**
+ Usando o console no Buildtime - Forneça o GuardrailsIdentifier e. GuardrailsVersion Saiba mais na seção Configurações adicionais de modelo.
+ Usando atributos de sessão: também é possível definir a configuração das barreiras de proteção usando os atributos da sessão: `x-amz-lex:bedrock-guardrails-identifier` e `x-amz-lex:bedrock-guardrails-version`.

Para obter mais informações sobre o uso das barreiras de proteção do Bedrock, consulte [Barreiras de proteção](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html).

# AMAZON.QnAIntent (multiple use support)
<a name="built-in-intent-qna-multi"></a>

Você pode optar por ter vários Amazon.qn AIntents em uma localidade. O Amazon Lex V2 oferece suporte a até 5 Amazon.qn AIntents em uma localidade de bot. 

O Amazon.qn AIntent pode ser acionado se um dos seguintes casos for verdadeiro:
+ Se a localidade de um bot contiver apenas 1 Amazon.qn AIntent e essa intenção não contiver exemplos de enunciados, ela será ativada quando uma expressão não for classificada em nenhuma das outras intenções presentes no bot. Essa intenção será ativada quando um enunciado não for classificado em nenhuma das outras intenções presentes no bot. Observe que essa intenção não será ativada para enunciados perdidos ao inferir um valor de slot.
**nota**  
Se a resposta do FM for insatisfatória ou se houver falha na chamada para o FM, o Amazon Lex V2 então invocará a `AMAZON.FallbackIntent`.
+ Se o Amazon.qn AIntent contiver exemplos de expressões, ele só será ativado quando o Amazon Lex V2 reconhecer que o usuário deseja iniciar essa intenção com base na entrada do usuário.
**nota**  
Se a resposta do FM for insatisfatória ou se houver falha na chamada ao FM, o Amazon Lex V2 invocará a próxima etapa da falha, definida no bloco de atendimento.

**nota**  
Se `botLocale` tiver mais de 1 Amazon.qnAIntent, cada Amazon.qn AIntent precisará ter pelo menos 1 amostra de enunciado.

# AMAZON.QinConnectIntent
<a name="built-in-intent-qinconnect"></a>

**nota**  
Para usar recursos de IA generativa usando o Amazon Q no Connect, você deve preencher os seguintes pré-requisitos:  
Navegue até o console do Amazon Connect e crie a instância. Se você ainda não tiver uma, consulte [Comece a usar o Amazon Connect](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-get-started.html).
Habilite o Amazon Q no Connect para a instância. Consulte [Habilitar o Amazon Q no Connect para a instância](https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).

AMAZÔNIA. QinConnectIntent responde às perguntas dos clientes usando a evolução aprimorada do LLM do Amazon Connect Wisdom, que fornece recomendações em tempo real para ajudar os clientes e agentes da central de atendimento a resolver os problemas dos clientes com rapidez e precisão. Essa intenção será ativada quando um enunciado não for classificado em nenhuma das outras intenções presentes no bot. Observe que essa intenção não será ativada para enunciados perdidos ao inferir um valor de slot. Uma vez reconhecido, o AMAZON. QinConnectIntent, usa o domínio Q in Connect especificado para pesquisar a Base de Conhecimento Amazon Bedrock configurada e responder à pergunta do cliente. 

**nota**  
Você não pode usar a AMAZON. QinConnectIntent junto com Amazon.qn AIntent na mesma localidade do bot.
Se selecionar outro idioma além do inglês dos EUA, você deverá personalizar os prompts de autoatendimento (`SELF_SERVICE_PRE_PROCESSING` e `SELF_SERVICE_ANSWER_GENERATION`) para responder no idioma especificado. Para obter mais informações sobre como personalizar o prompt, consulte [Personalizar o Amazon Q no Connect](https://docs.aws.amazon.com/connect/latest/adminguide/customize-q.html#ai-prompts-customize-q).

Se selecionar essa intenção, você precisará configurar os campos a seguir e selecionar **Salvar intenção** para adicionar a intenção ao bot.
+ Configuração do Amazon Q no Connect: informe o nome do recurso da Amazon (ARN) do assistente do Amazon Q In Connect. Padrão ARN do assistente: `^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$>`.

As respostas do QinConnectIntent serão armazenadas nos atributos da solicitação, conforme mostrado abaixo:
+ `x-amz-lex:q-in-connect-response`— A resposta da QinConnectIntent pergunta ou enunciado.

**Atributos da sessão retornados de QinConnectIntent**

A interação com a QinConnect intenção fornece dados adicionais sobre a conversa por meio dos atributos da sessão. 

1. `x-amz-lex:q-in-connect:session-arn`: um identificador exclusivo para a sessão criada com o Amazon Q no Connect durante a conversa. 

1. `x-amz-lex:q-in-connect:conversation-status`— O status atual da conversa com o QinConnect assistente ou domínio. Existem três valores possíveis para este status:
   + `CLOSED`
   + `READY`
   + `PROCESSING`

1. `x-amz-lex:q-in-connect:conversation-status-reason`: fornece o motivo do status atual relatado com o atributo acima. Os motivos possíveis são os seguintes:
   + `SUCCESS`: indica que o cliente não tem mais nada a perguntar e que a pergunta foi respondida com êxito.
   + `FAILED`: indica uma falha durante a resposta à pergunta do cliente. Isso se deve principalmente a falhas em entender a pergunta do cliente.
   + `REJECTED`: indica que o assistente está se recusando a responder à pergunta do cliente e recomendando que a pergunta seja tratada fora da interação do bot, como conversar com a pessoa ou o atendente, para obter mais informações.

**nota**  
Quando um bot com QinConnectIntent é invocado durante interações com o cliente conduzidas por uma instância do Amazon Connect, seu arn de sessão precisa ser criado e passado da instância do Amazon Connect. Para criar uma sessão, os fluxos do Amazon Connect podem ser configurados com a etapa do Amazon Q no Connect.

**Limitações**
+ Você não pode usar a AMAZON. QinConnectIntent junto com intenções sem expressões específicas, como Amazon.qn, AMAZONAIntent. BedrockAgentIntent na mesma localidade do bot.
+ Quando um bot com QinConnectIntent é invocado durante uma interação com o cliente conduzida por uma instância do Amazon Connect, seu arn de sessão precisa ser criado e passado da instância do Amazon Connect. Para criar uma sessão, os fluxos do Amazon Connect podem ser configurados com a etapa do Amazon Q no Connect.
+ Não pode haver mais do que uma AMAZON. QinConnectIntent por localidade do bot.
+ O domínio Amazon Q in Connect usado com a AMAZON. QinConnectIntent deve estar na mesma região da AWS que o bot Amazon Lex V2.

**Permissões**

Se o QinConnect Intent for usado em um bot do Amazon Lex V2 e o bot estiver usando uma função vinculada ao serviço (SLR), o serviço Amazon Lex V2 tem as permissões para atualizar as políticas apropriadas sobre a função para integrá-la ao assistente Q in Connect. Se o bot estivesse usando um perfil do IAM personalizado, o usuário precisaria adicionar manualmente essas permissões ao perfil do IAM.

A função vinculada ao serviço será atualizada com as seguintes permissões se a QinConnect intenção for adicionada. Uma nova política será adicionada para QinConnect acesso:

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "QInConnectAssistantPolicy",
            "Action": [
                "wisdom:CreateSession",
                "wisdom:GetAssistant"
            ],
            "Resource": [
                "arn:aws:wisdom:*:accountId:assistant/assistantId",
                "arn:aws:wisdom:*:accountId:assistant/assistantId/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "QInConnectSessionsPolicy",
            "Action": [
                "wisdom:SendMessage",
                "wisdom:GetNextMessage"
            ],
            "Resource": [
                "arn:aws:wisdom:*:accountId:session/assistantId/*"
            ]
        },
        {
            "Sid": "QInConnectKmsCMKPolicy",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:region:accountId:key/keyId"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "accountId",
                    "kms:ViaService": "wisdom.region.amazonaws.com",
                    "kms:EncryptionContext:aws:wisdom:assistant:arn": ["arn:aws:wisdom:region:accountId:assistant/assistantId"]
                }
            }
        }
    ]
}
```

**nota**  
A `QInConnectKmsCMKPolicy` declaração só é necessária se você estiver usando uma chave KMS gerenciada pelo cliente com o assistente Amazon Q in Connect.

**Política de confiança**

```
{
    "Effect": "Allow",
    "Sid": "LexV2InternalTrustPolicy",
    "Principal": {
        "Service": "lexv2.aws.internal"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "accountId"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:lex:*:accountId:bot-alias/botId/*"
        }
    }
}
```

# AMAZON.RepeatIntent
<a name="built-in-intent-repeat"></a>

Responde a palavras e frases que permitem ao usuário repetir a mensagem anterior. Seu aplicativo precisa usar uma função do Lambda para salvar as informações da intenção anterior nas variáveis da sessão, ou você precisa usar a [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) operação para obter as informações da intenção anterior.

Declarações comuns:
+ repetir
+ dizer isso de novo
+ repetir isso

# AMAZON.ResumeIntent
<a name="built-in-intent-resume"></a>

Responde a palavras e frases que permitem ao usuário retomar uma intenção anteriormente pausada. Seu aplicativo ou função do Lambda deve gerenciar as informações necessárias para retomar a intenção anterior.

Declarações comuns:
+ retomar
+ continuar
+ prosseguir

# AMAZON.StartOverIntent
<a name="built-in-intent-start-over"></a>

Responde a palavras e frases que permitem ao usuário parar de processar a intenção atual e recomeçar do início. Você pode usar sua função do Lambda ou a operação `PutSession` para obter novamente o valor do primeiro slot.

Declarações comuns:
+ começar de novo
+ reiniciar
+ começar novamente

# AMAZON.StopIntent
<a name="built-in-intent-stop"></a>

Responde a palavras e frases que indicam que o usuário deseja parar de processar a intenção atual e encerrar a interação com um bot. Seu aplicativo ou função do Lambda deve limpar todos os atributos e valores do tipo de slot existentes e, em seguida, encerrar a interação.

Declarações comuns:
+ parar
+ desligar
+ cale-se