LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Amazon LexとLambdaを連携させてチャットBotを作ってみる

Last updated at Posted at 2024-06-16

はじめに

本記事ではAmazon LexとAWS Lambdaを連携させて、入力に対してLambdaが応答を返すBotの構築方法について記載します。Lexのチャットテスト画面から入力された値をLambdaで受け取り、LambdaからLexへレスポンスを返すところまで確認します。

ゴール

Lexのチャットテスト画面(テスト ドラフトバージョン)でテキストを入力後に、Lambdaから応答が返ってくる事を確認する。

image.png

環境

  • Python:3.12
  • Lex:v2

Lambda側の準備

Lexと連携させるLambda関数を作成します。
詳細はコメントアウトの通りです。

lambda_function.py
def lambda_handler(event, context):

    # インテント名を取得
    intent_name = event['sessionState']['intent']['name']
    # スロットを取得
    slots = event['sessionState']['intent']['slots']
    # ユーザーの入力テキストを取得
    user_input = event['inputTranscript']
    # レスポンスとして返す文言を作成
    response_text = f"{user_input}について問い合わせありがとうございます。"
    
    # レスポンスを作成
    response = {
        'messages': [{'contentType': 'PlainText', 'content': response_text}],
        'sessionState': {
            'dialogAction': {
                'type': 'Close',
            },
            'intent': {
                'name': intent_name,
                'slots': slots,
                'state': 'Fulfilled'
            }
        }
    }
    
    # Lambda 関数のレスポンスを返す
    return response

Lex側の準備

1. Botの構築

コンソール画面から Lex > ボットを作成を選択。

image.png

今回は下記の内容で作成。

  • 作成方法:「空のボットを作成します」を選択。
  • ボット名:testBot
  • IAM アクセス許可:「基本的な Amazon Lex 権限~~」を選択。
  • 児童オンラインプライバシー保護法 (COPPA):今回は対象外のため「いいえ」を選択。

image.png
image.png

ここまで設定できたら「次へ」をクリックし、「ボットに言語を追加」の画面に遷移。
「言語を選択」から「日本語」を選択して完了ボタンを選択し、LexのBotを作成します。

image.png

2. インテントの作成

サンプル発話に任意のワードを登録しておきます。
ここに登録しておいたワードがBotに入力されると、このインテントが選択されます。

image.png

インテントが選択された際にLambdaを呼ぶように「コードフック」にチェックを入れる。

image.png

3. Lambda関数の選択

Lexから呼ぶLambdaはLex > ボット > ボット名 > エイリアス > エイリアス名 から「言語」を選択。

image.png

ソースから対象のLambdaを選択する。

image.png

保存できたらインテントに戻り、画面右上の「Build」ボタンからBotをビルドします。少し待って正常に構築~と表示されれば成功です。

実行 & 結果

Lexのインテントを選択し、画面右上の「Test」ボタンから実際に値を入力し、Lambdaからのレスポンスが返ってくることを確認します。
入力する値は、先ほどインテントのサンプル発話に登録した内容のいずれかのワードを含む内容になります。
今回は「カレーの作り方」と入力してみると、レスポンスが返ってきている事が確認できました。

image.png

リクエストとレスポンスの詳細について

Lexでは「テストドラフトバージョン」画面の「検査」ボタンからそれぞれJSON形式で確認可能。

image.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0