サポート終了通知: 2025 年 9 月 15 日、 AWS は Amazon Lex V1 のサポートを終了します。 V1 2025 年 9 月 15 日以降、Amazon Lex V1 コンソールまたは Amazon Lex V1 リソースにアクセスできなくなります。Amazon Lex V2 を使用している場合は、代わりに Amazon Lex V2 ガイドを参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
演習 3: Lambda 関数を追加する (AWS CLI)
ユーザー入力を検証し、ユーザーのインテントを達成する Lambda 関数をボットに追加します。
Lambda 表現を追加するには 5 つのステップを使用します。
この演習のコマンドを実行するには、コマンドが実行されるリージョンを確認しておく必要があります。リージョンのリストについては、「 モデル構築のクォータ 」を参照してください。
InvokeFunction アクセス権限を追加する前に Lambda 関数をインテントに追加すると、次のエラーメッセージが表示されます。
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.
GetIntent オペレーションからのレスポンスには、インテントの特定のリビジョンを識別する checksum というフィールドが含まれています。PutIntent オペレーションを使用してインテントを更新するときに、このチェックサムの値を指定する必要があります。指定しないと、次のエラーメッセージが表示されます。
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.
この演習では、「演習 1: 設計図を使用して Amazon Lex ボットを作成する (コンソール)」の Lambda 関数を使用します。この Lambda 関数を作成する手順については、「ステップ 3: Lambda 関数を作成する (コンソール)」を参照してください。
注記
次の AWS CLI 例は、Unix、Linux、macOS 用にフォーマットされています。Windows の場合は、"\$LATEST" を $LATEST に変更してください。
Lambda 関数をインテントに追加するには
-
で AWS CLI、イン
OrderFlowersテントのInvokeFunctionアクセス許可を追加します。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 から次のレスポンスが送信されます。
{ "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:*\"}}}" } -
Amazon Lex からインテントを取得します。Amazon Lex は
OrderFlowers-V3.jsonというファイルにこの出力を送信します。aws lex-models get-intent \ --regionregion\ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json -
テキストエディターで
OrderFlowers-V3.jsonファイルを開きます。-
createdDate、lastUpdatedDate、versionの各フィールドを見つけて削除します。 -
fulfillmentActivityフィールドを更新します。"fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook", "messageVersion": "1.0" } } -
ファイルを保存します。
-
-
で AWS CLI、更新されたインテントを Amazon Lex に送信します。
aws lex-models put-intent \ --regionregion\ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json
インテントを更新したので、ボットを再構築します。
OrderFlowersBot ボットを再構築するには
-
で AWS CLI、
OrderFlowersBotボットの定義を取得し、ファイルに保存します。aws lex-models get-bot \ --regionregion\ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json -
テキストエディタで
OrderFlowersBot-V3.jsonを開きます。createdDate、lastUpdatedDate、status、versionの各フィールドを削除します。 -
テキストエディタで、ボットの定義に次の行を追加します。
"processBehavior": "BUILD", -
で AWS CLI、ボットの新しいリビジョンを構築します。
aws lex-models put-bot \ --regionregion\ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.jsonサーバーからのレスポンスは次のとおりです。
{ "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" }