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.
Cómo establecer atributos de sesión para su bot Lex V2
Los atributos de sesión contienen información específica de la aplicación que se transmite entre un bot y una aplicación cliente durante una sesión. Transfiere los atributos de sesión a todas las funciones de Lambda configuradas para un bot. Si una función Lambda añade o actualiza los atributos de la sesión, devuelve la nueva información a la aplicación cliente.
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 RecognizeText o RecognizeUtterance. 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, «Hey [FirstName], ¿qué ingredientes quieres?» Si pasa el nombre del usuario como un atributo de sesión (
{"FirstName": "Vivian"}
), Amazon Lex lo reemplazará donde aparezca el marcador. A continuación, envía una pregunta personalizada al usuario, «Hola, Vivian, ¿qué ingredientes quieres?».
Los atributos de sesión se conservan durante toda la sesión. los guarda en un almacén de datos cifrado hasta que finaliza la sesión. El cliente puede crear atributos de sesión en una solicitud llamando a la RecognizeUtteranceoperación RecognizeTexto con el sessionAttributes
campo establecido 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 crean un atributo de sesión, el valor del atributo almacenado se utiliza siempre que la aplicación cliente no incluya un sessionAttribute
campo en una solicitud.
Por ejemplo, supongamos que tiene dos atributos de sesión, {"x":
"1", "y": "2"}
. Si el cliente llama a la RecognizeUtterance
operación RecognizeText
o sin especificar el sessionAttributes
campo, llama a la función Lambda con los atributos de sesión almacenados (){"x": 1, "y": 2}
. Si la función Lambda no devuelve los atributos de sesión, devuelve los atributos de sesión almacenados a la aplicación cliente.
Si la aplicación cliente o una función Lambda pasan los atributos de sesión, 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 los atributos de la sesión, debe crear un string-to-string mapa de los atributos. A continuación, se muestra cómo asignar atributos de sesión:
{ "attributeName": "attributeValue", "attributeName": "attributeValue" }
Para la operación RecognizeText
, debe insertar la asignación en el cuerpo de la solicitud utilizando el campo sessionAttributes
de la estructura sessionState
, de la siguiente manera:
"sessionState": { "sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" } }
Para la operación RecognizeUtterance
, hay que codificar en base64 la asignación y luego enviarla como parte del encabezado de x-amz-lex-session-state
.
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 Cómo establecer atributos complejos en su bot Lex V2.