Amazon LexのバージョンによるLambdaレスポンスの違いについて


2021/04/02からAmazon Lexが遂に日本語対応されました!
https://aws.amazon.com/jp/about-aws/whats-new/2021/04/amazon-lex-launches-support-japanese/

バージョンの違い

色々触ってAmazon Lexにはv1とv2がある模様です。
Lexの返答にはLambdaを使うことが可能ですが、そのLexを作るバージョンによってレスポンスが異なっているので注意が必要です。

具体的なレスポンスのドキュメントは下記をご確認ください。

■v1
https://docs.aws.amazon.com/ja_jp/lex/latest/dg/lambda-input-response-format.html#using-lambda-response-format

■v2
https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html

具体的なソース

v1とv2それぞれ簡単なレスポンスは下記で実装できます。

dialogActionのmessageのcontentに返してほしいテキストを入れるようです。

index.js(v1)
exports.handler = async (event) => {
    const response = {
      "dialogAction": {
            "type": "Close",
            "fulfillmentState": "Fulfilled",
            "message": {
                "contentType": "PlainText",
                "content": "これはv1です。"
            }
        }
    };

    return response;
};

下記のように応答が返ってきます。

続いてv2

index.js(v2)
exports.handler = async (event) => {
    const response = {
        "sessionState": {
            "dialogAction": {
                "type": "Close",
            },
            "intent": {
                "name": "",
                "state": "Fulfilled"
            }
        },
        "messages": [
            {
                "contentType": "PlainText",
                "content": "これはv2です。"
            }
        ]
    };

    return response;
};

下記のように返ってきます。

v2のLambda指定箇所

v2ではLambdaの指定箇所が奥深すぎて見つけにくいです。。。

まず、左側のメニューからAliases①をクリックして、TestBotAlias②をクリックします。

Japanese(Japan)③をクリックします。

ようやくLambdaを指定する画面が表示されます。。。

まとめ

個人的にはv1の画面のほうがわかりやすかったです。v2はLambdaを指定する場所が奥深すぎて見つけにくい。。。
Amazon Lexがようやく日本語対応してくれたので、Amazon Connectとの連携が増えるのがとても楽しみですね!

システム化のご検討やご相談は弊社までお問い合わせください。
https://i-enter.co.jp/contact/