「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
予定予約
この演習のボット例では、歯科医院の予約を行います。この例では、レスポンスカードを使用してボタンでユーザー入力を取得する方法も示しています。具体的には、この例では、実行時に動的にレスポンスカードを生成しています。
構築時にレスポンスカードを設定するか (静的レスポンスカードとも呼ばれる)、または AWS Lambda 関数内で動的にレスポンスカードを生成できます。この例のボットでは、以下のレスポンスカードを使用します。
-
予約タイプのボタンをリストするレスポンスカード。以下に例を示します。
-
予約日付のボタンをリストするレスポンスカード。以下に例を示します。
-
提示された予約時刻を確認するボタンをリストするレスポンスカード。以下に例を示します。
予約できる日付と時刻は変わるため、実行時にレスポンスカードを作成する必要があります。AWS Lambda 関数を使用してこれらのレスポンスカードを動的に生成します。Lambda 関数は Amazon Lex へのレスポンスでレスポンスカードを返します。Amazon Lex にはこのクライアントへのレスポンスのレスポンスカードが含まれています。
クライアント (たとえば、Facebook Messenger) でレスポンスカードがサポートされている場合、ユーザーはボタンのリストから選択するか、またはレスポンスを入力します。サポートされていない場合、ユーザーはレスポンスを入力します。
前の例で示されているボタンに加えて、イメージ、添付ファイル、およびその他の役立つ情報をレスポンスカードに表示することもできます。レスポンスカードに関する情報については、「レスポンスカード」を参照してください。
この演習では、以下のことを行います。
-
ボットを作成してテストします( ScheduleAppointment 青写真)。この演習では、ボットの設計図を使用して、迅速にボットをセットアップし、テストします。使用可能な設計図の一覧については、「Amazon Lex および AWS Lambda の設計図」を参照してください。このボットには 1 つのインテント (
MakeAppointment
) が事前設定されています。 -
Lambda 関数を作成してテストします (Lambda で提供されている lex-make-appointment-python 設計図を使用)。その Lambda 関数をコードフックとして使用して初期化、検証、およびフルフィルメント (達成) タスクを実行するように、
MakeAppointment
インテントを設定します。注記 提供されている Lambda 関数の例では、歯科医予約のモックアップの予約可能日時に基づいて動的な会話を示しています。実際のアプリケーションでは、実際のカレンダーを使用して予定を設定できます。
-
その Lambda 関数をコードフックとして使用するように、
MakeAppointment
インテント設定を更新します。次に、エンドツーエンドエクスペリエンスをテストします。 -
作動中のレスポンスカードを確認できるように、そのスケジュール予約ボットを Facebook Messenger に公開します (Amazon Lex コンソール内のクライアントではレスポンスカードは現在サポートされていません)。
以下のセクションでは、この演習で使用する設計図に関する概要情報を示しています。
トピック
ボット設計図 (ScheduleAppointment) の概要
[ ScheduleAppointment この演習のボットの作成に使用するブループリントは、次のように事前構成されています。
-
スロットタイプ – 1 つのカスタムスロットタイプ (
AppointmentTypeValue
) と列挙値 (root canal
、cleaning
、whitening
)。 -
インテント – 1 つのインテント (
MakeAppointment
)。次のように事前設定されています。-
スロット – このインテントでは以下のスロットが設定されています。
-
スロット
AppointmentType
(AppointmentTypes
カスタムタイプの)。 -
スロット
Date
:AMAZON.DATE
組み込みタイプ -
スロット
Time
:AMAZON.TIME
組み込みタイプ
-
-
発話 – このインテントでは以下の発話が事前設定されています。
-
「予約をお願いします」
-
「予約します」
-
「{AppointmentType} を予約」
ユーザーがこのいずれかを発声すると、Amazon Lex は
MakeAppointment
がインテントであると判断し、プロンプトを使用してスロットデータを引き出します。 -
-
プロンプト – このインテントでは以下のプロンプトが事前設定されています。
-
AppointmentType
スロットのプロンプト –「どのタイプを予約しますか?」 -
Date
スロットのプロンプト –「何日に {AppointmentType} を予約しますか?」 -
のプロンプト
Time
スロット – "{AppointmentType} をいつスケジュールしますか?" および「{Date} の何時になさいますか?」
-
確認プロンプト –「{Time} は予約できますが、この時刻で予約しますか?」
-
キャンセルメッセージ – 「かしこまりました、予約はしません。」
-
-
Lambda 関数の設計図 (lex-make-appointment-python) の概要
[ Lambda 機能ブループリント (lex-make-appointment-python) は、 ScheduleAppointment ボットのブループリントです。
この Lambda 関数の設計図のコードは、初期化/検証とフルフィルメントタスクの両方を実行できます。
-
この Lambda 関数のコードは、歯科医予約のサンプル予約可能日時に基づいた動的会話を示しています (実際のアプリケーションではカレンダーを使用できます)。ユーザーが指定した曜日または日付について、このコードは次のように設定されています。
-
利用可能な予約がない場合、 Lambda 関数は、応答ディレクションを返します。 Amazon Lex (
dialogAction
タイプするElicitSlot)
. 詳細については、以下を参照してください。 レスポンスの形式. -
指定日または日付に予約可能な予約が1つしかない場合、 Lambda 関数は、応答の利用可能時間を提案し、指示します Amazon Lex 設定することで、ユーザーの確認を取得できます。
dialogAction
対応にConfirmIntent
. これは、アポイントメントに利用できる時間を積極的に提案することで、ユーザー体験を改善する方法を示しています。 -
予約可能な時間が複数ある場合、Lambda 関数は Amazon Lex へのレスポンスで予約可能な時間のリストを返し ます。Amazon Lex は Lambda 関数からクライアントにメッセージを付けたレスポンスを返します。
-
-
フルフィルメントコードフックとして、Lambda 関数は予約が行われた (つまり、インテントが達成された) ことを示す概要メッセージを返します。
この例ではレスポンスカードの使用方法を示しています。Lambda 関数はレスポンスカードを構築して Amazon Lex に返します。レスポンスカードには、予約可能な日付と時刻がボタンとしてリストされていて、そのリストから選択できます。Amazon Lex コンソールで提供されているクライアントを使用してボットをテストする場合は、レスポンスカードを確認できません。レスポンスカードを確認するには、ボットを Facebook Messenger などのメッセージングプラットフォームと連携する必要があります。手順については、「Integrating an Amazon Lex Bot with Facebook Messenger」を参照してください。レスポンスカードの詳細情報については、「メッセージの管理 」を参照してください。
Amazon Lex は Lambda 関数を呼び出す際にイベントデータを入力として渡します。イベントフィールドの 1 つは invocationSource
であり、Lambda 関数はこのイベントフィールドを使用して入力検証とフルフィルメントのいずれかのアクティビティを選択します。詳細については、入力イベントの形式 を参照してください。
次のステップ