Administración de sesiones con la API de Amazon Lex - Amazon Lex V1

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.

Administración de sesiones con la API de Amazon Lex

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 o PostContent.

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

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

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

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

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.