

Aviso de fim do suporte: em 15 de setembro de 2025, o suporte para o Amazon Lex V1 AWS será interrompido. Após 15 de setembro de 2025, você não poderá mais acessar o console do Amazon Lex V1 nem os respectivos recursos. Se você estiver usando o Amazon Lex V2, consulte o [guia do Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) em vez disso. 

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

# Gerenciamento de sessões com a API do Amazon Lex
<a name="how-session-api"></a>

Quando um usuário começa uma conversa com o bot, o Amazon Lex cria uma *sessão*. As informações trocadas entre o aplicativo e o Amazon Lex compõem o estado da sessão para a conversa. Quando você faz uma solicitação, a sessão é identificada por uma combinação do nome do bot e um identificador de usuário especificado por você. Para obter mais informações sobre o identificador de usuário, consulte o campo `userId` na operação [PostContent](API_runtime_PostContent.md) ou [PostText](API_runtime_PostText.md).

A resposta de uma operação de sessão inclui um identificador exclusivo que identifica uma sessão específica com um usuário. Você pode usar esse identificador durante o teste ou para ajudar a solucionar problemas no bot.

É possível modificar o estado da sessão enviado entre o aplicativo e o bot. Por exemplo, você pode criar e modificar os atributos que contêm informações personalizadas sobre a sessão e alterar o fluxo da conversa definindo o contexto de diálogo para interpretar a próxima declaração.

Há duas maneiras de atualizar o estado da sessão. A primeira é usar uma função do Lambda com a operação `PostContent` ou `PostText` que é chamada após cada turno da conversa. Para obter mais informações, consulte [Uso de funções do Lambda](using-lambda.md). A outra é usar a API de runtime do Amazon Lex no seu aplicativo para fazer alterações no estado da sessão. 

A API de runtime do Amazon Lex oferece operações que permitem gerenciar informações da sessão para uma conversa com o bot. As operações são [PutSession](API_runtime_PutSession.md), [GetSession](API_runtime_GetSession.md) e [DeleteSession](API_runtime_DeleteSession.md). Você pode usar essas operações para obter informações sobre o estado da sessão do seu usuário com o bot e ter um controle apurado sobre o estado.

Use a operação `GetSession` quando desejar obter o estado atual da sessão. A operação retorna o estado atual da sessão, incluindo o estado do diálogo com o usuário, todos os atributos de sessão que foram definidos e valores de slot das três últimas intenções com as quais o usuário interagiu. 

A operação `PutSession` permite manipular diretamente o estado da sessão atual. Você pode definir o tipo de ação de diálogo que o bot realizará em seguida. Isso oferece a você controle sobre o fluxo da conversa com o bot. Defina o campo de ação de diálogo `type` como `Delegate` para que o Amazon Lex determine a próxima ação do bot.

Você pode usar a operação `PutSession` para criar uma nova sessão com um bot e definir a intenção com a qual ele deve começar. Também é possível usar a operação `PutSession` para mudar de uma intenção para outra. Ao criar uma sessão ou alterar a intenção, você também pode definir o estado da sessão, como valores de slot e atributos de sessão. Quando a nova intenção é concluída, você tem a opção de reiniciar a intenção anterior. É possível usar a operação `GetSession` para obter o estado do diálogo da intenção anterior do Amazon Lex e usar as informações para definir o estado do diálogo da intenção.

A resposta da operação `PutSession` contém as mesmas informações que a operação `PostContent`. Você pode usar essas informações para solicitar a próxima informação ao usuário, da mesma forma que faria com a resposta da operação `PostContent`.

Use a operação `DeleteSession` para remover uma sessão existente e começar de novo com uma nova sessão. Por exemplo, ao testar seu bot, você pode usar a operação `DeleteSession` para remover as sessões de teste do seu bot.

As operações de sessão trabalham com as funções do Lambda de atendimento. Por exemplo, se sua função do Lambda retornar `Failed` como o estado de atendimento, você poderá usar a operação `PutSession` para definir o tipo de ação de diálogo como `close` e `fulfillmentState` como `ReadyForFulfillment` para repetir a etapa de atendimento.

Veja a seguir algumas ações que você pode executar com as operações de sessão:
+ Fazer com que o bot inicie uma conversa em vez de esperar pelo usuário.
+ Alternar entre as intenções durante uma conversa.
+ Voltar para uma intenção anterior.
+ Iniciar ou reiniciar uma conversa no meio da interação.
+ Validar valores de slot e fazer com que o bot solicite novamente valores que não são válidos.

Cada uma delas é descrita com mais detalhes a seguir.

## Alternância entre intenções
<a name="session-switch"></a>

Você pode usar a operação `PutSession` para alternar de uma intenção para outra. Também é possível usá-la para voltar para uma intenção anterior. Você pode usar a operação `PutSession` para definir atributos de sessão ou valores de slot para a nova intenção.
+ Chame a operação `PutSession`. Defina o nome da intenção como o nome da nova intenção e defina a ação de diálogo como `Delegate`. Você também pode definir quaisquer valores de slot ou atributos de sessão necessários para a nova intenção.
+ O Amazon Lex iniciará uma conversa com o usuário utilizando a nova intenção.

## Como retomar uma intenção anterior
<a name="session-return"></a>

Para retomar uma intenção anterior, use a operação `GetSession` para obter o resumo da intenção e, depois, use a operação `PutSession` para definir a intenção como seu estado de diálogo anterior.
+ Chame a operação `GetSession`. A resposta da operação inclui um resumo do estado de diálogo das últimas três intenções com as quais o usuário interagiu.
+ Usando as informações do resumo de intenção, chame a operação `PutSession`. Isso retornará o usuário para a intenção anterior no mesmo local na conversa.

Em alguns casos, pode ser necessário retomar a conversa do usuário com o bot. Por exemplo, digamos que você tenha criado um bot de atendimento ao cliente. Seu aplicativo determina que o usuário precisa conversar com um representante de atendimento ao cliente. Depois de falar com o usuário, o representante poderá direcionar a conversa de volta para o bot com as informações coletadas.

Para retomar uma sessão, use etapas semelhantes a estas:
+ Seu aplicativo determina que o usuário precisa falar com um representante de atendimento ao cliente.
+ Use a operação `GetSession` para obter o estado de diálogo atual da intenção. 
+ O representante de atendimento ao cliente se comunica com o usuário e resolve o problema.
+ Use a operação `PutSession` para definir o estado de diálogo da intenção. Isso pode incluir definir valores de slot, definir atributos de sessão ou alterar a intenção.
+ O bot retoma a conversa com o usuário.

É possível usar o parâmetro `checkpointLabel` da operação `PutSession` a fim de rotular uma intenção para que seja possível localizá-la mais tarde. Por exemplo, um bot que solicita informações a um cliente pode entrar em uma intenção `Waiting` enquanto o cliente coleta as informações. O bot cria um rótulo de ponto de verificação para a intenção atual e inicia a intenção `Waiting`. Quando o cliente retornar, o bot poderá encontrar a intenção anterior usando o rótulo de ponto de verificação e alternar de volta. 

A intenção deve estar presente na estrutura `recentIntentSummaryView` retornada pela operação `GetSession`. Se você especificar um rótulo de ponto de verificação na solicitação da operação `GetSession`, ele retornará um máximo de três intenções com esse rótulo de ponto de verificação.
+ Use a operação `GetSession` para obter o estado atual da sessão.
+ Use a operação `PutSession` para adicionar um rótulo de ponto de verificação à última intenção. Se necessário, é possível usar esta chamada `PutSession` para alternar para uma intenção diferente.
+ Quando for o momento de retornar à intenção rotulada, chame a operação `GetSession` para retornar uma lista de intenções recente. É possível usar o parâmetro `checkpointLabelFilter` para que o Amazon Lex retorne somente as intenções com o rótulo do ponto de verificação especificado.

## Como iniciar uma nova sessão
<a name="session-start"></a>

Se você desejar que o bot inicie a conversa com o usuário, use a operação `PutSession`. 
+ Crie uma intenção de boas-vindas sem slots e uma mensagem de conclusão solicitando que o usuário indique uma intenção. Por exemplo, "O que você gostaria de pedir? Você pode dizer "Pedir uma bebida" ou "Pedir uma pizza".
+ Chame a operação `PutSession`. Defina o nome da intenção como o nome da intenção de boas-vindas e defina a ação de diálogo como `Delegate`. 
+ O Amazon Lex responderá com o prompt da sua intenção de boas-vindas para iniciar a conversa com o usuário.

## Validação de valores de slot
<a name="session-validation"></a>

Você pode validar as respostas ao bot usando seu aplicativo cliente. Se a resposta não for válida, use a operação `PutSession` para obter uma nova resposta do usuário. Por exemplo, suponha que seu bot de pedido de flores só possa vender tulipas, rosas e lírios. Se o usuário pedir cravos, o aplicativo poderá fazer o seguinte:
+ Examinar o valor do slot retornado pela resposta `PostText` ou `PostContent`.
+ Se o valor do slot não for válido, chame a operação `PutSession`. Seu aplicativo deve limpar o valor do slot, definir o campo `slotToElicit` e definir o valor `dialogAction.type` como `elicitSlot`. Você também poderá definir os campos `message` e `messageFormat` se desejar alterar a mensagem usada pelo Amazon Lex para obter o valor de slot.