7-4.ハンズオン#2:レストラン予約 bot に Lamda 関数を追加する

ハンズオン#2: レストラン予約 bot に Lambda 関数を追加する

このハンズオンでは、先ほど作成したレストラン予約 bot に Lambda 関数を追加して、bot が動的な処理を行えるようにします。 ここでは、予約番号としてランダムな4桁の数字を生成する Lambda 関数を作成し、レストラン予約 bot から呼び出してみます。

Lex ボットと Lambda の連携

Lex V2 では、ボットは言語ごとに単一の Lambda 関数を紐付けます。したがって、このLambda 関数は下記の2つのタイプの Lex インタラクションをサポートできる必要があります。

  1. Initialization/Validation - Lambda 関数は会話の度に呼び出され、スロットデータ値を初期化、検証、または上書きすることができます。
  2. Fulfillment - Lambda 関数は全てのスロットが確定し、全ての確認メッセージがOKだった場合に呼び出されます。このタイミングで Lambda 関数 がインテントの結果を返すことができます。

Lambda 関数は、各インテントが必要とするロジックを処理できる必要があります。また Lambda 関数は、多くのパッケージ化されたコードファイルで構成できるため、Lex から見ると Lambda 側には共有エントリポイントだけがあります。これはディスパッチャ関数であり、入力パラメータに基づいて複数の関数呼び出しをルーティングするように実装されています。実際に各インテントのインタラクションを処理するコードは別々のソースファイルに分離することもできます。

このハンズオンでは、Lex と Lambda の間のインターフェイスの詳細については説明しないため、提供されたコードをそのまま使用して下さい。

Lex が Lambda 関数を呼び出すたびに、ボットがセッションについて現在知っているすべての値が連携されます。これには、引き出されたすべてのスロット値、現在のユーザー発話、現在引き出されているインテントとスロット、およびいくつかの以前のインテントトリガーからの情報などが含まれます。 Lambda が返す値によって、スロット値を上書きしたり、引き出される次のスロットを変更したり、インテントのフルフィルメントを指定することができます。