Gerenciamento de sessões com a API do Amazon Lex - Amazon Lex V1

Se você estiver usando o Amazon Lex V2, consulte o Guia do Amazon Lex V2.

 

Se você estiver usando o Amazon Lex V1, recomendamos atualizar seus bots para o Amazon Lex V2. Não estamos mais adicionando novos atributos à V1 e recomendamos o uso da V2 para todos os novos bots.

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

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 ou PostText.

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 o próximo enunciado.

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. 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, GetSession e DeleteSession. 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

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

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

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

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 do slot.