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á.
Definição dos atributos da sessão
Atributos da sessão contêm informações específicas do aplicativo que são passadas entre o bot e o aplicativo cliente durante uma sessão. O Amazon Lex passa atributos da sessão para todas as funções função do Lambda configuradas para um bot. Se uma função do Lambda adicionar ou atualizar atributos da sessão, o Amazon Lex passará as novas informações de volta para o aplicativo cliente. Por exemplo:
-
No exemplo Exercício 1: Criar um bot do Amazon Lex usando um esquema (Console)., o bot usa o atributo de sessão
price
para manter o preço das flores. A função do Lambda define esse atributo com base nos tipos de flores encomendados. Para obter mais informações, consulte Etapa 5 (opcional): Revise os detalhes do fluxo de informações (console). -
No exemplo Reservar uma viagem, o bot usa o atributo de sessão
currentReservation
para manter uma cópia dos dados do tipo de slot durante a conversa para fazer uma reserva em hotel ou alugar um carro. Para obter mais informações, consulte Detalhes do fluxo de informações.
Use atributos de sessão em suas funções do Lambda para inicializar um bot e personalizar solicitações e cartões de resposta. Por exemplo:
-
Inicialização: em um bot de pedido de pizza, o aplicativo cliente passa o local do usuário como um atributo de sessão na primeira chamada à operação PostContent ou PostText. Por exemplo,
"Location": "111 Maple Street"
. A função do Lambda usa essas informações para encontrar a pizzaria mais próxima para fazer o pedido. -
Personalizar solicitações configure solicitações e cartões de resposta para fazer referência a atributos de sessão. Por exemplo, "Olá, [FirstName], quais coberturas você quer?" Se você passar o nome do usuário como um atributo de sessão (
{"FirstName": "Jo"}
), o Amazon Lex substituirá o nome pelo espaço reservado. Em seguida, ele envia uma solicitação personalizada para o usuário: "Oi, Jo, quais coberturas você quer?"
Os atributos da sessão permanecem durante a vigência da sessão. Eles são criptografados e armazenados pelo Amazon Lex até que o final da sessão. O cliente pode criar atributos de sessão em uma solicitação usando a operação PostContent ou PostText com o campo sessionAttributes
definido como um valor. Uma função do Lambda pode criar um atributo de sessão em uma resposta. Depois que o cliente ou uma função do Lambda cria um atributo de sessão, o valor do atributo armazenado é usado sempre que o aplicativo cliente não incluir o campo sessionAttribute
em uma solicitação para o Amazon Lex.
Por exemplo, suponha que você tenha dois atributos de sessão {"x":
"1", "y": "2"}
. Se o cliente chamar a operação PostContent
ou PostText
sem especificar o campo sessionAttributes
, o Amazon Lex usará a função do Lambda com os atributos de sessão armazenados ({"x": 1, "y": 2}
). Se a função do Lambda não retornar atributos de sessão, o Amazon Lex retornará os atributos de sessão armazenados ao aplicativo cliente.
Se o aplicativo cliente ou uma função do Lambda passar atributos de sessão, o Amazon Lex atualizará as informações dos atributos de sessão armazenados. Passar um valor existente, como {"x": 2}
, atualiza o valor armazenado. Se você inserir um novo conjunto de atributos de sessão, como {"z": 3}
, os valores existentes serão removidos e apenas o novo valor será mantido. Quando um mapa vazio, {}
, é passado, os valores armazenados são apagados.
Para enviar atributos de sessão para o Amazon Lex, crie um mapa de string para string dos atributos. As considerações a seguir mostram como mapear atributos de sessão:
{ "attributeName": "attributeValue", "attributeName": "attributeValue" }
Para a operação PostText
, insira o mapa no corpo da solicitação usando o campo sessionAttributes
, como a seguir:
"sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }
Para a operação PostContent
, codifique o mapa em base64 e o envie como o cabeçalho x-amz-lex-session-attributes
.
Se você estiver enviando dados binários ou estruturados em um atributo de sessão, deve primeiro transformar os dados em uma string simples. Para obter mais informações, consulte Configuração de atributos complexos.