Avis de fin de support : le 15 septembre 2025, le support pour Amazon Lex V1 AWS sera interrompu. Après le 15 septembre 2025, vous ne pourrez plus accéder à la console Amazon Lex V1 ni aux ressources Amazon Lex V1. Si vous utilisez Amazon Lex V2, consultez plutôt le guide Amazon Lex V2.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exercice 3 : Ajouter une fonction Lambda ()AWS CLI
Ajoutez une fonction Lambda qui valide les entrées de l'utilisateur et répond à l'intention de l'utilisateur à l'égard du bot.
L'ajout d'une expression Lambda est un processus en cinq étapes.
-
Utilisez la AddPermissionfonction Lambda pour activer l'
OrderFlowersintention d'appeler l'opération Lambda Invoke. -
Utilisez l'GetIntentopération pour obtenir l'intention d'Amazon Lex.
-
Mettez à jour l'intention d'ajouter la fonction Lambda.
-
Utilisez cette PutIntent opération pour renvoyer l'intention mise à jour à Amazon Lex.
-
Utilisez les opération GetBot et PutBot pour reconstruire les bots qui utilisent cette intention.
Pour exécuter les commandes de cet exercice, vous devez connaître la région dans laquelle les commandes seront exécutées. Pour obtenir la liste des régions, consultez Quotas liés à la création de modèle .
Si vous ajoutez une fonction Lambda à une intention avant d'ajouter l'InvokeFunctionautorisation, le message d'erreur suivant s'affiche :
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 réponse générée par l'opération GetIntent contient le champ checksum, qui identifie une révision spécifique de l'intention. Lorsque vous utilisez l'opération PutIntent pour mettre à jour une intention, vous devez fournir la valeur du total de contrôle. Dans le cas contraire, vous obtiendrez le message d'erreur suivant :
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.
Cet exercice utilise la fonction Lambda de. Exercice 1 : créer un robot Amazon Lex à l'aide d'un plan (console) Pour obtenir des instructions sur la création de la fonction Lambda, reportez-vous à la section. Étape 3 : Création d'une fonction Lambda (console)
Note
L' AWS CLI exemple suivant est formaté pour Unix, Linux et macOS. Pour Windows, remplacez "\$LATEST" par $LATEST.
Pour ajouter une fonction Lambda à une intention
-
Dans le AWS CLI, ajoutez l'
InvokeFunctionautorisation correspondant à l'OrderFlowersintention :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 envoie la réponse suivante :
{ "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:*\"}}}" } -
Obtenez l'intention auprès d'Amazon Lex. Amazon Lex envoie la sortie vers un fichier appelé
OrderFlowers-V3.json.aws lex-models get-intent \ --regionregion\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json -
Ouvrez le fichier
OrderFlowers-V3.jsondans un éditeur de texte.-
Recherchez les champs
createdDate,lastUpdatedDateetversionet supprimez-les. -
Mettez à jour le champ
fulfillmentActivity:"fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook", "messageVersion": "1.0" } } -
Enregistrez le fichier.
-
-
Dans le AWS CLI, envoyez l'intention mise à jour à Amazon Lex :
aws lex-models put-intent \ --regionregion\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json
Maintenant que vous avez mis à jour l'intention, reconstruisez le bot.
Pour reconstruire le bot OrderFlowersBot
-
Dans le AWS CLI, obtenez la définition du
OrderFlowersBotbot et enregistrez-la dans un fichier :aws lex-models get-bot \ --regionregion\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json -
Ouvrez
OrderFlowersBot-V3.jsondans un éditeur de texte. Supprimez les champscreatedDate,lastUpdatedDate,statusetversion. -
Dans l'éditeur de texte, ajoutez la ligne suivante à la définition du bot :
"processBehavior": "BUILD", -
Dans le AWS CLI, créez une nouvelle version du bot :
aws lex-models put-bot \ --regionregion\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.jsonLa réponse du serveur est :
Étape suivante
Exercice 4 : Publication d'une version (AWS CLI)