Modelo de programación - 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.

Modelo de programación

Un bot es el tipo de recurso principal de Amazon Lex. Los otros tipos de recursos de Amazon Lex son intención, tipo de ranura, alias y asociación de canal del bot.

Puede crear un bot mediante la consola de Amazon Lex o la API de desarrollo de modelos. La consola ofrece una interfaz gráfica de usuario que se usa para compilar un bot listo para producción para la aplicación. Si lo prefiere, puede utilizar la API del modelo de desarrollo con la AWS CLI o un programa propio para crear un bot.

Después de crear un bot, puede implementarlo en una de las plataformas admitidas o integrarlo en su propia aplicación. Cuando un usuario interactúa con el bot, la aplicación cliente le envía solicitudes con la API en tiempo de ejecución de Amazon Lex. Por ejemplo, cuando un usuario dice “Quiero pedir una pizza”, el cliente envía esta entrada a Amazon Lex con una de las operaciones de la API en tiempo de ejecución. Los usuarios pueden proporcionar entradas en formato de texto o de voz.

También puede crear funciones de Lambda y usarlas en una intención. Estos enlaces de código en forma de funciones de Lambda le permiten llevar a cabo ciertas actividades en tiempo de ejecución como la inicialización, la validación de entradas del usuario y el cumplimiento de intenciones. Las secciones siguientes facilitarán información adicional.

Operaciones de la API de desarrollo de modelo

Para crear mediante programación tipos de slots, intenciones y bots, utilice las operaciones de la API de desarrollo de modelo. También puede utilizar la API de desarrollo de modelo para administrar, actualizar y eliminar recursos del bot. Las operaciones de la API de desarrollo de modelo incluyen:

Puede utilizar la API de desarrollo de modelos para crear herramientas personalizadas con las que administrar los recursos de Amazon Lex. Por ejemplo, existe un límite de 100 versiones para cada uno de los bots, las intenciones y los tipos de slots. Podría utilizar la API de desarrollo de modelos para crear una herramienta que elimine automáticamente versiones antiguas cuando el bot se acerca al límite.

Amazon Lex utiliza sumas de comprobación para asegurarse de que solo una operación actualiza un recurso a la vez. Cuando utiliza una operación de la API Put (PutBot, PutBotAlias PutIntent o PutSlotType) para actualizar un recurso, debe indicar la suma de comprobación actual del recurso en la solicitud. Si dos herramientas intentan actualizar un recurso al mismo tiempo, ambas proporcionan la misma suma de comprobación. La primera solicitud que alcanza Amazon Lex tiene la suma de comprobación correcta del recurso. Para cuando llega la segunda solicitud, la suma de comprobación es diferente. La segunda herramienta recibe una excepción PreconditionFailedException y la actualización termina.

Las operaciones Get (GetBot, GetIntent y GetSlotType) cuentan con coherencia final. Si utiliza una operación Get inmediatamente después de crear o modificar un recurso con una de las operaciones Put, es posible que no se devuelvan cambios. Después de que una operación Get devuelva la versión más reciente, siempre devuelve el recurso actualizado hasta que se modifica de nuevo. Puede determinar si se ha devuelto un recurso actualizado consultando la suma de comprobación.

Operaciones de la API en tiempo de ejecución

Las aplicaciones cliente utilizan las siguientes operaciones de la API en tiempo de ejecución para comunicarse con Amazon Lex:

  • PostContent: toma la entrada de voz o texto y devuelve información sobre la intención y un mensaje de texto o voz que se transmite al usuario. En la actualidad, Amazon Lex admite los siguientes formatos de audio:

     

    Formatos de audio de entrada: LPCM y Opus

    Formatos de audio de salida: MPEG, OGG y PCM

     

    La operación PostContent es compatible con la entrada de audio a 8 kHz y 16 kHz. Las aplicaciones en las que el usuario final habla con Amazon Lex por teléfono, como un centro de llamadas automático, pueden pasar audio a 8 kHz directamente.

     

  • PostText: toma texto como entrada y devuelve información sobre la intención y un mensaje de texto que se transmite al usuario.

La aplicación cliente utiliza la API en tiempo de ejecución para llamar a un bot de Amazon Lex específico para que procese los enunciados, ya sean texto o voz, de la entrada del usuario. Por ejemplo, suponga que un usuario dice "Quiero pizza". El cliente envía esta entrada de usuario a un bot con una de las operaciones de la API en tiempo de ejecución de Amazon Lex. A partir de la entrada del usuario, Amazon Lex reconoce que la solicitud corresponde a la intención OrderPizza definida en el bot. Amazon Lex inicia una conversación con el usuario para recopilar la información necesaria o los datos de la ranura como, por ejemplo, el tamaño, los ingredientes y el número de pizzas. Una vez que el usuario proporciona todos los datos de ranura necesarios, Amazon Lex invoca el enlace de código en forma de función de Lambda para llevar a cabo la intención o devuelve los datos de la intención al cliente, según cómo esté configurada.

Utilice la operación PostContent cuando el bot utiliza entrada de voz. Por ejemplo, una aplicación automatizada para un centro de llamadas puede enviar voz a un bot de Amazon Lex en vez de hacerlo a un agente para responder a las consultas de los clientes. Puede utilizar el formato de audio a 8 kHz para enviar audio directamente del teléfono a Amazon Lex.

La ventana de pruebas de la consola de Amazon Lex usa la API PostContent para enviar solicitudes de texto y voz a Amazon Lex. Puede utilizar esta ventana de prueba en los ejercicios de Introducción a Amazon Lex.

Funciones de Lambda como enlaces de código

Puede configurar un bot de Amazon Lex para que invoque una función de Lambda como enlace de código. El enlace de código puede servir para varios propósitos:

  • Personalizar la interacción del usuario: por ejemplo, cuando Joe pregunta por los ingredientes disponibles, puede utilizar el conocimiento previo de las preferencias de Joe para mostrar un subgrupo de ingredientes.

  • Validar la entrada del usuario: imagine que Jen quiere recoger flores fuera del horario de apertura. Puede validar la hora que ha introducido Jen y enviar una respuesta adecuada.

  • Cumplir la intención del usuario: una vez que Joe proporciona toda la información para el pedido de pizza, Amazon Lex puede llamar a una función de Lambda para que haga el pedido en una pizzería local.

Al configurar una intención, se especifican funciones de Lambda como enlaces de código en los siguientes lugares:

  • Enlace de código de diálogo para inicialización y validación: se invoca esta función de Lambda en cada entrada del usuario, suponiendo que Amazon Lex haya entendido la intención del usuario.

  • Enlace de código de cumplimiento: esta función de Lambda se invoca después de que el usuario proporcione todos los datos de ranura requeridos para llevar a cabo la intención.

Puede elegir la intención y establecer los enlaces de código en la consola de Amazon Lex, tal como se muestra en la siguiente captura de pantalla:


                    Funciones de Lambda como enlaces de código en la consola de Amazon Lex.

También puede definir los enlaces de código usando los campos dialogCodeHook y fulfillmentActivity de la operación PutIntent.

Una función de Lambda puede encargarse de la inicialización, la validación y el cumplimiento. Los datos de evento que recibe la función de Lambda incluyen un campo que identifica a quien la llama como un diálogo o como un enlace de código de cumplimiento. Puede utilizar esta información para ejecutar la parte apropiada del código.

Puede utilizar una función de Lambda para compilar un bot que se desenvuelva en diálogos complejos. Puede utilizar el campo dialogAction de la respuesta de la función de Lambda para hacer que Amazon Lex lleve a cabo acciones concretas. Por ejemplo, puede utilizar la acción de diálogo ElicitSlot para indicar a Amazon Lex que solicite al usuario un valor de ranura que no sea obligatorio. Si tiene una pregunta aclaratoria definida, puede utilizar la acción de diálogo ElicitIntent para obtener una nueva intención cuando el usuario haya terminado con la anterior.

Para obtener más información, consulte Uso de funciones de Lambda.