Wenn Sie Amazon Lex V2 verwenden, lesen Sie stattdessen das Amazon Lex V2-Handbuch.
Wenn Sie Amazon Lex V1 verwenden, empfehlen wir, Ihre Bots auf Amazon Lex V2 zu aktualisieren. Wir fügen V1 keine neuen Funktionen mehr hinzu und empfehlen dringend, V2 für alle neuen Bots zu verwenden.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Übung 3: Fügen Sie eine Lambda-Funktion hinzu (AWS CLI)
Fügen Sie eine Lambda-Funktion hinzu, die Benutzereingaben validiert und die Benutzerabsicht für den Bot erfüllt.
Das Hinzufügen eines Lambda-Ausdrucks erfolgt in fünf Schritten.
-
Benutze das LambdaAddPermissionFunktion zum Aktivieren des
OrderFlowers
Absicht, das Lambda anzurufenAufrufenverwenden. -
Verwenden derGetIntent-Vorgang, um die Absicht von Amazon Lex abzurufen.
-
Aktualisieren Sie die Absicht, indem Sie die Lambda-Funktion hinzufügen.
-
Verwenden derPutIntentOperation, um die aktualisierte Absicht an Amazon Lex zurückzusenden.
-
Verwenden Sie die Operationen GetBot und PutBot, um einen Bot wiederherzustellen, der die Absicht verwendet.
Um die Befehle in dieser Übung auszuführen, müssen Sie wissen, in welcher Region die Befehle ausgeführt werden. Eine Liste der Regionen finden Sie unter Kontingente des Modellbaus .
Wenn Sie eine Lambda-Funktion einer Absicht hinzufügen, bevor Sie dieInvokeFunction
-Berechtigung erhalten Sie die folgende Fehlermeldung:
An error occurred (BadRequestException) when calling the PutIntent operation: Lex is unable to access the Lambda functionLambda function ARN
in the context of intentintent ARN
. Please check the resource-based policy on the function.
Die Antwort der Operation GetIntent
enthält ein Feld namens checksum
, das die spezifische Version der Absicht angibt. Wenn Sie die Operation PutIntent zum Aktualisieren einer Absicht verwenden, müssen Sie den Prüfsummenwert angeben. Wenn Sie dies nicht tun, wird die folgende Fehlermeldung angezeigt:
An error occurred (PreconditionFailedException) when calling the PutIntent operation: Intentintent name
already exists. If you are trying to updateintent name
you must specify the checksum.
In dieser Übung wird die Lambda-Funktion ausÜbung 1: Erstellen Sie einen Amazon Lex Lex-Bot mithilfe eines Blueprints (Konsole)aus. Eine Anleitung zum Erstellen der Lambda-Funktion finden Sie unterSchritt 3: Erstellen einer Lambda-Funktion (Lambda-Funktion)aus.
Anmerkung
Das folgende AWS CLI-Beispiel ist für Unix, Linux und macOS formatiert. Ändern Sie unter Windows "\$LATEST"
in $LATEST
.
So fügen Sie einer Absicht eine Lambda-Funktion hinzu
-
Fügen Sie in der AWS CLI der Absicht
InvokeFunction
die BerechtigungOrderFlowers
hinzu:aws lambda add-permission \ --region
region
\ --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 ID
Lambda sendet die folgende Antwort:
{ "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:*\"}}}" } -
Rufen Sie die Absicht von Amazon Lex ab. Amazon Lex sendet die Ausgabe in eine Datei namens
OrderFlowers-V3.json
aus.aws lex-models get-intent \ --region
region
\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json -
Öffnen Sie
OrderFlowers-V3.json
in einem Text-Editor.-
Suchen und löschen Sie
createdDate
,lastUpdatedDate
undversion
. -
Aktualisieren Sie das Feld
fulfillmentActivity
:"fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:
region
:account ID
:function:OrderFlowersCodeHook", "messageVersion": "1.0" } } -
Speichern Sie die Datei.
-
-
In derAWS CLI, senden Sie die aktualisierte Absicht an Amazon Lex:
aws lex-models put-intent \ --region
region
\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json
Erstellen Sie den Bot neu, nachdem die Absicht aktualisiert wurde.
So erstellen Sie den Bot OrderFlowersBot
-
Rufen Sie in der AWS CLI die Definition des Bots
OrderFlowersBot
ab und speichern Sie sie in einer Datei:aws lex-models get-bot \ --region
region
\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json -
Öffnen Sie
OrderFlowersBot-V3.json
in einem Texteditor. Entfernen Sie die FeldercreatedDate
,lastUpdatedDate
,status
undversion
. -
Fügen Sie im Texteditor die folgende Zeile in die Bot-Definition ein:
"processBehavior": "BUILD",
-
Erstellen Sie in der AWS CLI eine neue Version des Bots:
aws lex-models put-bot \ --region
region
\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.jsonDie Antwort des Servers:
{ "status": "READY", "intents": [ { "intentVersion": "$LATEST", "intentName": "OrderFlowers" } ], "name": "OrderFlowersBot", "locale": "en-US", "checksum": "
checksum
", "abortStatement": { "messages": [ { "content": "Sorry, I'm not able to assist at this time", "contentType": "PlainText" } ] }, "version": "$LATEST", "lastUpdatedDate":timestamp
, "createdDate":timestamp
, "clarificationPrompt": { "maxAttempts": 2, "messages": [ { "content": "I didn't understand you, what would you like to do?", "contentType": "PlainText" } ] }, "voiceId": "Salli", "childDirected": false, "idleSessionTTLInSeconds": 600, "description": "Bot to order flowers on the behalf of a user" }
Nächster Schritt
Übung 4: Veröffentlichen einer Version (AWS CLI)