

Aviso de fin de soporte: el 15 de septiembre de 2025, AWS dejaremos de ofrecer soporte para Amazon Lex V1. Después del 15 de septiembre de 2025, ya no podrá acceder a la consola de Amazon Lex V1 ni a los recursos de Amazon Lex V1. Si utiliza Amazon Lex V2, consulte en su lugar la [guía Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html). 

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.

# Administración de sesiones con la API de Amazon Lex
<a name="how-session-api"></a>

Cuando un usuario inicia una conversación con un bot, Amazon Lex crea una *sesión*. La información que se intercambia entre la aplicación y Amazon Lex conforma el estado de la sesión de la conversación. Cuando realiza una solicitud, la sesión se identifica utilizando el nombre del bot y el identificador de usuario que especifique. Para obtener más información sobre el identificador de usuario, consulte el campo `userId` de la operación [PostText](API_runtime_PostText.md) o [PostContent](API_runtime_PostContent.md).

La respuesta de una operación de sesión incluye un identificador de sesión único que identifica una sesión específica con un usuario. Puede utilizar este identificador durante las pruebas o para ayudar a resolver los problemas del bot.

Puede modificar el estado de la sesión enviado entre la aplicación y el bot. Por ejemplo, puede crear y modificar atributos que contengan información personalizada sobre la sesión y cambiar el flujo de la conversación estableciendo el contexto del diálogo para poder interpretar el siguiente enunciado.

Hay dos formas de actualizar el estado de la sesión. La primera consiste en utilizar una función de Lambda con la operación `PostContent` o `PostText` que se invoca después de cada turno de la conversación. Para obtener más información, consulte [Uso de funciones de Lambda](using-lambda.md). La otra es utilizar la API en tiempo de ejecución de Amazon Lex en la aplicación para realizar cambios en el estado de la sesión. 

La API en tiempo de ejecución de Amazon Lex dispone de operaciones que le permiten administrar la información de la sesión en una conversación con el bot. Las operaciones son [PutSession](API_runtime_PutSession.md), [GetSession](API_runtime_GetSession.md) y [DeleteSession](API_runtime_DeleteSession.md). Puede utilizar estas operaciones para obtener información sobre el estado de la sesión del usuario con el bot y para tener un control pormenorizado sobre dicho estado.

Utilice la operación `GetSession` cuando desee obtener el estado actual de la sesión. La operación devuelve el estado actual de la sesión, incluido el estado del diálogo con el usuario, los atributos de la sesión que se hayan establecido y los valores de slot de las tres últimas intenciones con las que interactuó el usuario. 

La operación `PutSession` le permite manipular directamente la sesión actual. Puede definir el tipo de acción de diálogo que el bot realizará a continuación. De este modo, tendrá control sobre el flujo de la conversación con el bot. Establezca el campo `type` de la acción de diálogo en `Delegate` para que Amazon Lex determine la siguiente acción del bot.

Puede utilizar la operación `PutSession` para crear una nueva sesión con un bot y establecer la intención con la que el bot debería comenzar. También puede usar la operación `PutSession` para cambiar de una intención a otra. Al crear una sesión o cambiar la intención, también puede establecer el estado de sesión; por ejemplo, los valores de slot y los atributos de sesión. Cuando la nueva intención haya terminado, tendrá la posibilidad de reiniciar la intención anterior. Puede utilizar la operación `GetSession` para obtener el estado de la intención anterior del diálogo de Amazon Lex y utilizar esta información para establecer el estado de la intención en el diálogo.

La respuesta de la operación `PutSession` contiene la misma información que la operación `PostContent`. Puede utilizar esta información para preguntar al usuario por la siguiente información, igual que haría con la respuesta de la operación `PostContent`.

Utilice la operación `DeleteSession` para eliminar una sesión existente y comenzar de nuevo con una nueva sesión. Por ejemplo, si va a probar un bot, puede utilizar la operación `DeleteSession` para eliminar las sesiones de prueba desde el bot.

Las operaciones de sesión pueden utilizarse con las funciones de Lambda de realización. Por ejemplo, si la función de Lambda devuelve `Failed` como estado de realización, puede utilizar la operación `PutSession` para establecer el tipo de acción del diálogo en `close` y `fulfillmentState` en `ReadyForFulfillment` para intentar de nuevo el paso de cumplimiento.

Estas son algunas de las cosas que puede hacer con las operaciones de sesión:
+ Hacer que el bot inicie una conversación en lugar de esperar al usuario.
+ Cambiar las intenciones durante una conversación.
+ Volver a una intención anterior.
+ Iniciar o reiniciar una conversación en mitad de la interacción.
+ Validar los valores de slot y hacer que el bot vuelva a solicitar los valores que no son válidos.

Cada una de acciones se describe a continuación.

## Cambio de intenciones
<a name="session-switch"></a>

Puede utilizar la operación `PutSession` para cambiar de una intención a otra. También puede utilizar esta operación para volver a una intención anterior. Puede utilizar la operación `PutSession` para establecer los atributos de sesión o los valores de slot de la nueva intención.
+ Llame a la operación `PutSession`. Especifique el nombre de la intención y establezca la acción del diálogo en `Delegate`. También puede definir los atributos de sesión o los valores de slot necesarios para la nueva intención.
+ Amazon Lex comenzará una conversación con el usuario utilizando la nueva intención.

## Reanudación de una intención anterior
<a name="session-return"></a>

Si desea reanudar una intención anterior, utilice la operación `GetSession` para obtener un resumen de la intención y utilice después la operación `PutSession` para establecer la intención en el estado del diálogo anterior.
+ Llame a la operación `GetSession`. La respuesta de la operación incluye un resumen del estado de las últimas tres intenciones del diálogo con las que interactuó el usuario.
+ Utilizando la información del resumen de intenciones, invoque la operación `PutSession`. De este modo, devolverá al usuario a la intención anterior en el mismo lugar de la conversación.

En algunos casos puede ser necesario reanudar la conversación del usuario con el bot. Por ejemplo, supongamos que ha creado un bot de atención al cliente. La aplicación determina que el usuario debe hablar con un representante del servicio de atención al cliente. Después de hablar con el usuario, el representante puede dirigir la conversación de nuevo al bot con la información que se ha recopilado.

Para reanudar una sesión, siga un procedimiento similar a este:
+ La aplicación determina que el usuario debe hablar con un representante del servicio de atención al cliente.
+ Utilice la operación `GetSession` para obtener el estado actual de la intención del diálogo. 
+ El representante del servicio de atención al cliente habla con el usuario y resuelve el problema.
+ Utilice la operación `PutSession` para establecer el estado de la intención del diálogo. Para ello, tal vez necesite configurar los valores de slot, configurar los atributos de sesión o cambiar la intención.
+ El bot reanuda la conversación con el usuario.

Puede utilizar el parámetro `checkpointLabel` de la operación `PutSession` para etiquetar una intención de modo que pueda encontrarla más tarde. Por ejemplo, un bot que solicita información a un cliente podría pasar a la intención `Waiting` mientras el cliente recopila dicha información. El bot crea una etiqueta de punto de comprobación para la intención actual y, a continuación, inicia la intención `Waiting`. Cuando el cliente devuelve dicha información, el bot puede encontrar la intención anterior mediante la etiqueta de punto de comprobación y volver a utilizarla. 

La intención debe estar presente en la estructura `recentIntentSummaryView` devuelta por la operación `GetSession`. Si especifica una etiqueta de punto de comprobación en la solicitud de la operación `GetSession`, devolverá un máximo de tres intenciones con dicha etiqueta de punto de comprobación.
+ Utilice la operación `GetSession` para obtener el estado actual de la sesión.
+ Utilice la operación `PutSession` para añadir una etiqueta de punto de comprobación a la última intención. Si es necesario, puede utilizar la llamada `PutSession` para cambiar de intención.
+ Cuando llegue el momento de volver a utilizar la intención etiquetada, llame a la operación `GetSession` para devolver una lista de intenciones recientes. Puede utilizar el parámetro `checkpointLabelFilter` para que Amazon Lex devuelva solo las intenciones con la etiqueta de punto de comprobación especificada.

## Inicio de una nueva sesión
<a name="session-start"></a>

Si desea que el bot comience la conversación con el usuario, puede utilizar la operación `PutSession`. 
+ Cree una intención de bienvenida sin slots y un mensaje de conclusión que le pida al usuario que indique una intención. Por ejemplo, «¿Qué desea pedir?» Puede decir «Una bebida» o «Una pizza».
+ Llame a la operación `PutSession`. Especifique el nombre de la intención de bienvenida y establezca la acción del diálogo en `Delegate`. 
+ Amazon Lex responderá con el mensaje de la intención de bienvenida para iniciar la conversación con el usuario.

## Validación de valores de slot
<a name="session-validation"></a>

Puede validar las respuestas que recibe el bot utilizando la aplicación cliente. Si la respuesta no es válida, puede utilizar la operación `PutSession` para obtener una nueva respuesta del usuario. Por ejemplo, suponga que un bot para pedir flores solo puede vender tulipanes, rosas y lirios. Si el usuario pide claveles, la aplicación puede hacer lo siguiente:
+ Examinar el valor de slot devuelto desde `PostText` o `PostContent`.
+ Si el valor de slot no es válido, llamar a la operación `PutSession`. La aplicación debe borrar el valor de slot, definir el campo `slotToElicit` y establecer el valor de `dialogAction.type` en `elicitSlot`. También puede configurar los campos `message` y `messageFormat` si desea cambiar el mensaje que Amazon Lex utiliza para obtener el valor de slot.