初期化/検証またはフルフィルメントの AWS Lambda 関数を使用して Amazon Lex ボットのフローを変更するにはどうすればよいですか?

所要時間1分
0

初期化/検証またはフルフィルメントの AWS Lambda 関数を使用して Amazon Lex ボットのフローを変更したいと考えています。

解決策

注:この記事の例では、Amazon Lex コンソールのバージョン 2 を使用します。バージョン 1 を使用している場合は、ナビゲーションペインで新しい Lex v2 コンソールに切り替えるを選択します。

ラムダ応答構文は、Amazon Lex が Lambda 関数からの応答を期待する形式を指定します。応答には必須フィールドを必ず含めてください。

ElicitSlot タイプを使用してダイアログフローを変更する

ElicitSlot タイプを使用してダイアログフローを変更するには、Lambda コードフックからの応答を次の形式で渡します。

{
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "<slot-name-to-elicit>",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "<intent-name-to-elicit>",
            "state": "InProgress"
        }
    }
}

レスポンスを返した後、intent-name-to-elicit インテントに属する slot-name-to-elicit というスロットが Amazon Lex によって引き出されます。

例えば、ユーザー名の入力を求めるスロットを持つインテント CreateUser があるとします。Lambda 関数を使用して、ユーザー名がすでに存在するかどうかを確認します。ユーザー名が存在する場合は、同じインテントに対してユーザー名スロットを再度引き出します。

ElicitIntent タイプを使用してダイアログフローを変更する

ElicitIntent タイプを使用してダイアログフローを変更するには、Lambda コードフックからの応答を次の形式で渡します。

{
        "sessionState": {
        "dialogAction": {
            "type": "ElicitIntent"
         }
     },
     "messages": [{
         "contentType": "<content-type>",
         "content": "<message>"
     }]
 }

Amazon Lex が応答を返すと、メッセージプレースホルダーで指定されたメッセージがユーザーに表示されます。次のユーザー入力はインテントの発話として受け取られ、nluConfidence スコアが最も高いインテントが呼び出します。

例えば、ボットがユーザーのインテントを満たしている場合は、ボットをリッスン状態にします。その後、ユーザーは別の発話を入力して別のインテントを呼び出すことができます。

デリゲートタイプを使用してダイアログフローを変更する

新しいインテントを指定するときに、デリゲートタイプを使用してインテントの開始を変更できます。デリゲートタイプを使用するには、Lambda コードフックからの応答を次の形式で渡します。

{
    'sessionState': {
        'dialogAction': {
            'type': 'Delegate'
        },
        'intent': {
            'name': '<intent-name-to-elicit>',
            'state': 'InProgress'
        }
    }
}

例えば、ボットにはインテント **A **、BC があります。ユーザーがインテント A のスロットに応答した場合、Lambda 関数はユーザー入力をチェックします。次に、関数はインテント B または C のいずれかを呼び出します。

関連情報

GitHub ウェブサイトのamazon-lex-v2-ダイアロゲーション

AWS公式
AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ