0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lex Bot の slots の値をLambdaで取得してみる

Posted at

はじめに

本記事では、Lexのslotに設定された値を Code hooks で呼ばれたLambdaで受け取る処理を実装していきます。

環境

  • Python:3.12
  • Lex:v2

ゴール

Code hooksで呼ばれたLambdaでLexのslotに設定された値を受け取る

Lex

本記事では下記のようにslotが1つあるLex Botを想定してます。
何でもよいですが今回は日付入力を想定して、Slot typeをAMAZON.Dateにしておきます。

  • SLots
    • Name:get_date
    • SLot type:AMAZON.Date
    • Prompts:hoge

image.png

  • Sample utterances
    • {get_date}

image.png

Lambda

イベントオブジェクトからスロットの値を取得します。

lambda_function.py
def lambda_handler(event, context):
    intent_name = event['sessionState']['intent']['name']
    slots = event['sessionState']['intent']['slots']
    
    # スロットの値を取得
    inputed_date = slots['get_date']['value']['originalValue']
    # 例:入力された日付: 10/05
    print(f"入力された日付: {inputed_date}")
    
    # Lex Botへのレスポンス
    return {
        'sessionState': {
            'dialogAction': {
                'type': 'Close'
            },
            'intent': {
                'name': intent_name,
                'state': 'Fulfilled'
            }
        },
        'messages': [{
            'contentType': 'PlainText',
            'content': f'入力された日付は {inputed_date} です。'
        }]
    }

実行

マネジメントコンソール > 対象のLex Bot > Intents から Test を押下し、試しに日付を入力してみます。

image.png

上記画像の inspect を押下すると、RequestとResponseの内容を確認できます。

日付を入力すると 入力された日付は 10/05 です。 というようにLambda側で作成したメッセージが返ってきました。

image.png

Lambdaのイベントオブジェクトの中のslotsは次のようになっておりました。

~~~
"slots": {
          "get_date": {
            "shape": "Scalar",
            "value": {
              "originalValue": "10/05",
              "resolvedValues": [
                "2024-10-05"
              ],
              "interpretedValue": "2024-10-05"
            }
          }
        },
~~~

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?