Si utiliza Amazon Lex V2, consulte la guía de Amazon Lex V2.
Si utiliza Amazon Lex V1, le recomendamos que actualice los bots a Amazon Lex V2. Hemos dejado de agregar nuevas características a V1, por lo que recomendamos encarecidamente utilizar V2 para todos los nuevos bots.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Definición de atributos de la sesión
Los atributos de sesión contienen información específica de la aplicación que se transfiere entre un bot y una aplicación cliente durante una sesión. Amazon Lex V2 pasa los atributos de sesión a todas las funciones de Lambda para un bot. Si una función de Lambda añade o actualiza los atributos de sesión, Amazon Lex devuelve la nueva información a la aplicación cliente. Por ejemplo:
-
En Ejercicio 1: creación de un bot de Amazon Lex mediante un esquema (consola), el bot de ejemplo utiliza el atributo de la sesión
price
para mantener el precio de las flores. La función de Lambda define este atributo en función del tipo de flores que se han encargado. Para obtener más información, consulte Paso 5 (opcional): revisión de los detalles del flujo de información (consola). -
En Reserva de viaje, el bot de ejemplo utiliza la sesión del atributo
currentReservation
para mantener una copia de los datos del tipo de slot durante la conversación para reservar un hotel o un coche de alquiler. Para obtener más información, consulte Detalles del flujo de información.
Utilice los atributos de sesión en sus funciones de Lambda para inicializar un bot y personalizar las solicitudes y las tarjetas de respuesta. Por ejemplo:
-
Inicialización: en un bot para pedir pizzas, la aplicación cliente transmite la ubicación del usuario como un atributo de la sesión en la primera llamada a la operación PostContent o PostText. Por ejemplo,
"Location": "111 Maple Street"
. La función de Lambda utiliza esta información para encontrar la pizzería más cercana para realizar el pedido. -
Personalización de solicitudes: configure solicitudes y tarjetas de respuesta que hagan referencia a los atributos de la sesión. Por ejemplo, «Hola, [Nombre], ¿qué ingredientes quieres?» Si pasa el nombre del usuario como un atributo de sesión (
{"FirstName": "Jo"}
), Amazon Lex lo reemplazará donde aparezca el marcador. A continuación, envía una pregunta personalizada al usuario, "Hey Jo, which toppings would you like?"
Los atributos de sesión persisten durante toda la sesión. Amazon Lex los almacena en un almacén de datos cifrados hasta que finaliza la sesión. El cliente puede crear atributos de la sesión en una solicitud llamando a la operación PostContent o PostText con el campo sessionAttributes
definido en un valor. Una función de Lambda puede crear un atributo de sesión en una respuesta. Una vez que el cliente o una función de Lambda ha creado un atributo de sesión, el valor de atributo almacenado se utiliza siempre que la aplicación cliente no incluya el campo sessionAttribute
en una solicitud a Amazon Lex.
Por ejemplo, supongamos que tiene dos atributos de sesión, {"x":
"1", "y": "2"}
. Si el cliente llama a la operación PostContent
o PostText
sin especificar el campo sessionAttributes
, Amazon Lex llama a la función de Lambda con los atributos de sesión almacenados ({"x": 1, "y": 2}
). Si la función de Lambda no devuelve atributos de sesión, Amazon Lex devuelve los atributos de sesión almacenados a la aplicación cliente.
Si la aplicación cliente o una función de Lambda pasan atributos de sesión, Amazon Lex actualiza los atributos de sesión almacenados. Al pasar un valor existente, como por ejemplo {"x": 2}
, se actualiza el valor almacenado. Si pasa un nuevo conjunto de atributos de sesión, por ejemplo {"z": 3}
, los valores existentes se eliminan y solo se mantiene el nuevo valor. Cuando se pasa una asignación vacía, {}
, los valores almacenados se borran.
Para enviar atributos de sesión a Amazon Lex, cree una asignación de cadena a cadena de los atributos. A continuación, se muestra cómo asignar atributos de la sesión:
{ "attributeName": "attributeValue", "attributeName": "attributeValue" }
Para la operación PostText
, debe insertar la asignación en el cuerpo de la solicitud utilizando el campo sessionAttributes
, de la siguiente manera:
"sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }
Para la operación PostContent
, hay que codificar en base64 la asignación y luego enviarla como el encabezado de x-amz-lex-session-attributes
.
Si va a enviar datos binarios o estructurados en un atributo de la sesión, primero debe transformar los datos en una cadena sencilla. Para obtener más información, consulte Definición de atributos complejos.