Creación de una función de AWS Lambda para su bot
Para crear una función de Lambda para su bot Amazon Lex V2, acceda a AWS Lambda desde su cuenta de la Consola de administración de AWS y cree una nueva función. Puede consultar la Guía para desarrolladores de AWS Lambda para obtener más información acerca de AWS Lambda.
-
Inicie sesión en la Consola de administración de AWS y abra la consola AWS Lambda en https://console.aws.amazon.com/lambda/
. -
Seleccione Funciones en la barra lateral izquierda.
-
Seleccione Crear función.
-
Puede seleccionar Autor desde cero para empezar con un código mínimo, Usar un esquema para seleccionar de una lista código de muestra para casos de uso comunes, o Imagen de contenedor para seleccionar una imagen de contenedor para implementarla en su función. Si selecciona Autor desde cero, continúe con los siguientes pasos:
-
Dele a la función un Nombre de función significativo para describir lo que hace.
-
Seleccione un idioma en el menú desplegable de Tiempo de ejecución para escribir la función.
-
Seleccione una Arquitectura de un conjunto de instrucciones para la función.
-
Por defecto, Lambda crea un rol con permisos básicos. Para usar un rol existente o para crear un rol mediante plantillas de políticas de AWS, expanda el menú Cambiar el rol de ejecución predeterminado y seleccione una opción.
-
Amplíe el menú de Configuración avanzada para configurar más opciones.
-
-
Seleccione Crear función.
La siguiente imagen muestra lo que se ve al crear una nueva función desde cero:
La función del controlador de Lambda varía según el idioma que utilice. Como mínimo, toma un objeto event JSON como argumento. Puede ver los campos del event que Amazon Lex V2 proporciona en Formato del evento de entrada AWS Lambda para Lex V2. Modifique la función del controlador para, en última instancia, devolver un objeto response JSON que coincida con el formato descrito en Formato de respuesta AWS Lambda para Lex V2.
-
Cuando termine de escribir la función, seleccione Implementar para permitir que se use la función.
Recuerde que puede asociar cada alias de bot como máximo a una función de Lambda. Sin embargo, puede definir tantas funciones como necesite para su bot en el código Lambda y llamar a estas funciones en la función de controlador de Lambda. Por ejemplo, si bien todas las intenciones del mismo alias de bot deben llamar a la misma función de Lambda, puede crear una función de router que active una función independiente para cada intención. A continuación, se muestra un ejemplo de función de router que puede utilizar o modificar para su aplicación:
import os import json import boto3 # reuse client connection as global client = boto3.client('lambda') def router(event): intent_name = event['sessionState']['intent']['name'] fn_name = os.environ.get(intent_name) print(f"Intent: {intent_name} -> Lambda: {fn_name}") if (fn_name): # invoke lambda and return result invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event)) print(invoke_response) payload = json.load(invoke_response['Payload']) return payload raise Exception('No environment variable for intent: ' + intent_name) def lambda_handler(event, context): print(event) response = router(event) return response
Cuándo usar las funciones de AWS Lambda en las conversaciones de bots
Puede utilizar funciones de Lambda en los siguientes momentos de una conversación con un usuario:
-
En la respuesta inicial después de reconocer la intención. Por ejemplo, después de que el usuario diga que quiere pedir una pizza.
-
Después de obtener un valor de slot del usuario. Por ejemplo, después de que el usuario le diga al bot el tamaño de pizza que quiere pedir.
-
Entre cada reintento para obtener un slot. Por ejemplo, si el cliente no usa un tamaño de pizza reconocido.
-
Al confirmar una intención. Por ejemplo, al confirmar un pedido de pizza.
-
Para cumplir una intención. Por ejemplo, para hacer un pedido de pizza.
-
Una vez cumplida la intención y antes de que su bot cierre la conversación. Por ejemplo, para cambiar a una intención de pedir una bebida.