Lambda 関数を作成して、ボットエイリアスにアタッチする - Amazon Lex

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数を作成して、ボットエイリアスにアタッチする

Lambda 関数の作成

Amazon Lex V2 ボット用の Lambda 関数を作成するには、AWS Management Console から AWS Lambda にアクセスして新しい関数を作成します。AWS Lambda に関する詳細については、「AWS Lambda 開発者ガイド」を参照してください。

  1. AWS Management Console にサインインして AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. 左側のサイドバーで [関数] を選択します。

  3. [Create Function] (関数を作成) を選択します。

  4. [一から作成] を選択して最小限のコードから始めるか、[ブループリントの使用] を選択してリストから一般的なユースケースのサンプルコードを選択するか、[コンテナイメージ] を選択して関数にデプロイするコンテナイメージを選択できます。[一から選択] を選択した場合は、次の手順に進んでください。

    1. 関数には、その機能を説明するわかりやすい関数名を付けてください。

    2. [ランタイム] の下のドロップダウンメニューから、関数を記述する言語を選択します。

    3. 関数の命令セット [アーキテクチャ] を選択します。

    4. デフォルトでは、Lambda は基本的なアクセス許可でロールを作成します。既存のロールを使用するか、AWS ポリシーテンプレートを使用してロールを作成するには、[デフォルト実行ロールの変更] メニューを展開してオプションを選択します。

    5. [詳細設定] メニューを展開して、その他のオプションを設定します。

  5. [Create Function] (関数を作成) を選択します。

次の図は、新しい関数を最初から作成したときに表示される内容を示しています。

新しい Lambda 関数。

Lambda ハンドラー関数は、使用する言語によって異なります。少なくとも因数として event JSON オブジェクトを取ります。フィールドは、Amazon Lex V2 が 入力イベント形式の解釈 で提供する event にあります。「応答形式の準備」で説明されている形式と一致する response JSON オブジェクトが最終的に返されるように、ハンドラー関数を変更します。

関数を記述し終えたら、[デプロイ] を選択して関数を使用できるようにします。

各ボットエイリアスは、最大で 1 つの Lambda 関数に関連付けられることに注意してください。ただし、Lambda コード内でボットに必要な数だけ関数を定義し、これらの関数を Lambda ハンドラー関数で呼び出すことができます。たとえば、同じボットエイリアスのすべてのインテントは同じ Lambda 関数を呼び出す必要がありますが、インテントごとに個別の関数を有効にするルーター関数を作成できます。次に、アプリケーションで使用または変更できるサンプルルーター関数を示します。

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

Lambda 関数の追加と呼び出し

Amazon Lex V2 ボットで Lambda 関数を呼び出すには、最初に関数をボットエイリアスにアタッチし、次にボットが関数を呼び出す会話内のポイントを設定する必要があります。これらの手順は、コンソールまたは API オペレーションのどちらでも実行できます。

Lambda 関数はユーザーとの会話の次の時点で使用できます。

  • インテントが認識された後の最初の応答。たとえば、ユーザーがピザを注文したいと言った後です。

  • ユーザーからスロット値を誘発した後。たとえば、ユーザーが注文したいピザのサイズをボットに伝えた後などです。

  • スロットを誘発するための各再試行の間。たとえば、認識しているサイズのピザを顧客が使用していない場合などです。

  • インテントを確認する時点。たとえば、ピザの注文を確認する場合などです。

  • インテントを達成するため。たとえば、ピザを注文する場合などです。

  • インテントの達成後、ボットが会話を終了する前。たとえば、飲み物を注文するインテントに切り替える場合などです。