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 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.
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.
Ejercicio 3: adición de una función de Lambda (AWS CLI)
Agregue al bot una función de Lambda que valide las entradas del usuario y cumpla la intención del usuario.
El proceso de agregar una expresión de Lambda consta de cinco pasos.
-
Utilice la AddPermissionfunción Lambda para activar la
OrderFlowersintención de llamar a la operación Lambda Invoke. -
Utilice la operación GetIntent para obtener la intención de Amazon Lex.
-
Actualice la intención para agregar la función de Lambda.
-
Use la operación PutIntent para enviar la intención actualizada de vuelta a Amazon Lex.
-
Use las operaciones GetBot y PutBot para volver a compilar los bots que usen la intención.
Para ejecutar los comandos de este ejercicio, debe conocer la región donde se ejecutarán los comandos. Para obtener una lista de regiones, consulte Cuotas de creación de modelos .
Si agrega una función de Lambda a una intención antes de agregar el permiso InvokeFunction, obtendrá el siguiente mensaje de error:
An error occurred (BadRequestException) when calling the
PutIntent operation: Lex is unable to access the Lambda
function Lambda function ARN in the context of intent
intent ARN. Please check the resource-based policy on
the function.
La respuesta de la operación GetIntent contiene un campo llamado checksum que identifica una revisión específica de la intención. Cuando se usa la operación PutIntent para actualizar una intención, debe proporcionar el valor de la suma de comprobación. Si no, recibirá el siguiente mensaje de error:
An error occurred (PreconditionFailedException) when calling
the PutIntent operation: Intent intent name already exists.
If you are trying to update intent name you must specify the
checksum.
En este ejercicio se utiliza la función de Lambda desde Ejercicio 1: creación de un bot de Amazon Lex mediante un esquema (consola). Para obtener instrucciones para crear la función de Lambda, consulte Paso 3: creación de una función de Lambda (consola).
nota
El siguiente AWS CLI ejemplo está formateado para Unix, Linux y macOS. Para Windows, cambie "\$LATEST" por $LATEST.
Adición de una función de Lambda a una intención
-
En el AWS CLI, agrega el
InvokeFunctionpermiso para laOrderFlowersintención:aws lambda add-permission \ --regionregion\ --function-name OrderFlowersCodeHook \ --statement-id LexGettingStarted-OrderFlowersBot \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:region:account ID:intent:OrderFlowers:*" --source-accountaccount IDLambda envía la siguiente respuesta:
{ "Statement": "{\"Sid\":\"LexGettingStarted-OrderFlowersBot\", \"Resource\":\"arn:aws:lambda:
region:account ID:function:OrderFlowersCodeHook\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"lex.amazonaws.com\"}, \"Action\":[\"lambda:InvokeFunction\"], \"Condition\":{\"StringEquals\": {\"AWS:SourceAccount\": \"account ID\"}, {\"AWS:SourceArn\": \"arn:aws:lex:region:account ID:intent:OrderFlowers:*\"}}}" } -
Obtenga la intención de Amazon Lex. Amazon Lex envía el resultado a un archivo llamado
OrderFlowers-V3.json.aws lex-models get-intent \ --regionregion\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json -
Abra
OrderFlowers-V3.jsonen un editor de texto.-
Busque y elimine los campos
createdDate,lastUpdatedDateyversion. -
Actualice el campo
fulfillmentActivity:"fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook", "messageVersion": "1.0" } } -
Guarde el archivo.
-
-
En el AWS CLI, envíe la intención actualizada a Amazon Lex:
aws lex-models put-intent \ --regionregion\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json
Ahora que ha actualizado la intención, recompile el bot.
Para recompilar el bot OrderFlowersBot
-
En el AWS CLI, obtén la definición del
OrderFlowersBotbot y guárdala en un archivo:aws lex-models get-bot \ --regionregion\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json -
En un editor de texto, abra
OrderFlowersBot-V3.json. Elimine los camposcreatedDate,lastUpdatedDate,statusyversion. -
En el editor de texto, añada la siguiente línea a la definición del bot:
"processBehavior": "BUILD", -
En el AWS CLI, crea una nueva revisión del bot:
aws lex-models put-bot \ --regionregion\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.jsonLa respuesta del servidor es:
Paso siguiente
Ejercicio 4: Publicar una versión (AWS CLI)