

サポート終了通知: 2025 年 9 月 15 日、 AWS は Amazon Lex V1 のサポートを終了します。 V1 2025 年 9 月 15 日を過ぎると、Amazon Lex V1 コンソールまたは Amazon Lex V1 リソースにはアクセスできなくなります。Amazon Lex V2 を使用している場合は、代わりに [Amazon Lex V2 ガイド](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 予約のスケジュール
<a name="ex1-sch-appt"></a>

この演習のボット例では、歯科医院の予約を行います。この例では、レスポンスカードを使用してボタンでユーザー入力を取得する方法も示しています。具体的には、この例では、実行時に動的にレスポンスカードを生成しています。

ビルド時にレスポンスカード (静的レスポンスカードとも呼ばれます) を設定することも、 AWS Lambda 関数で動的に生成することもできます。この例のボットでは、以下のレスポンスカードを使用します。
+ 予約タイプのボタンをリストするレスポンスカード。例については、次の画像を参照してください。  
![スケジュールの予約の種類と、クリーニング (30 分)、根管 (60 分)、ホワイトニング (90 分) の 3 つの選択肢を尋ねるレスポンスカード。](http://docs.aws.amazon.com/ja_jp/lex/latest/dg/images/respcard-10.png)
+ 予約日付のボタンをリストするレスポンスカード。例については、次の画像を参照してください。  
![予約のスケジュールを設定する日付と、2-15、2-16、2-17 の 3 つの選択肢を記載したレスポンスカード。](http://docs.aws.amazon.com/ja_jp/lex/latest/dg/images/respcard-20.png)
+ 提示された予約時刻を確認するボタンをリストするレスポンスカード。例については、次の画像を参照してください。  
![「はい」と「いいえ」の 2 つの選択肢がある、予約の日時の確認を求めるレスポンスカード。](http://docs.aws.amazon.com/ja_jp/lex/latest/dg/images/respcard-30.png)

  

予約できる日付と時刻は変わるため、実行時にレスポンスカードを作成する必要があります。 AWS Lambda 関数を使用して、これらのレスポンスカードを動的に生成します。Lambda 関数は、Amazon Lex へのレスポンス内でレスポンスカードを返します。Amazon Lex は、クライアントへのレスポンス内にレスポンスカードを含めます。

クライアント (例えば、Facebook Messenger) でレスポンスカードがサポートされている場合、ユーザーはボタンのリストから選択するか、またはレスポンスを入力します。サポートされていない場合、ユーザーはレスポンスを入力します。

前の例で示されているボタンに加えて、イメージ、添付ファイル、およびその他の役立つ情報をレスポンスカードに表示することもできます。レスポンスカードに関する情報については、「[レスポンスカード](howitworks-manage-prompts.md#msg-prompts-resp-card)」を参照してください。

この演習では、以下のことを行います。
+ ボット (ScheduleAppointment 設計図を使用) を作成してテストします。この演習では、ボットの設計図を使用して、迅速にボットをセットアップし、テストします。使用可能な設計図の一覧については、「[Amazon Lex と AWS Lambda ブループリント](lex-lambda-blueprints.md)」を参照してください。このボットには 1 つのインテント (`MakeAppointment`) が事前設定されています。

   
+ Lambda 関数を作成してテストします (Lambda で提供されている lex-make-appointment-python 設計図を使用)。その Lambda 関数をコードフックとして使用して初期化、検証、およびフルフィルメント (達成) タスクを実行するように、`MakeAppointment` インテントを設定します。
**注記**  
提供されている Lambda 関数の例では、歯科医予約のモックアップの予約可能日時に基づいて動的な会話を示しています。実際のアプリケーションでは、実際のカレンダーを使用して予定を設定できます。
+ その Lambda 関数をコードフックとして使用するように、`MakeAppointment` インテント設定を更新します。次に、エンドツーエンドエクスペリエンスをテストします。
+ 作動中のレスポンスカードを確認できるように、そのスケジュール予約ボットを Facebook Messenger に公開します (Amazon Lex コンソール内のクライアントではレスポンスカードは現在サポートされていません)。

以下のセクションでは、この演習で使用する設計図に関する概要情報を示しています。

**Topics**
+ [ボット設計図 (ScheduleAppointment) の概要](#ex1-sch-appt-bp-summary-bot)
+ [Lambda 関数の設計図 (lex-make-appointment-python) の概要](#ex1-sch-appt-summary-lambda)
+ [ステップ 1: Amazon Lex ボットを作成する](ex1-sch-appt-create-bot.md)
+ [ステップ 2: Lambda 関数を作成する](ex1-sch-appt-create-lambda-function.md)
+ [ステップ 3: インテントの更新: コードフックを設定する](ex1-sch-appt-create-integrate.md)
+ [ステップ 4: ボットを Facebook Messenger プラットフォームにデプロイする](ex-sch-appt-fb-integration.md)
+ [情報フローの詳細](ex1-sch-appt-info-flow-details.md)

## ボット設計図 (ScheduleAppointment) の概要
<a name="ex1-sch-appt-bp-summary-bot"></a>

この演習でボットの作成に使用する 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) の概要
<a name="ex1-sch-appt-summary-lambda"></a>

Lambda 関数の設計図 (lex-make-appointment-python) は、ScheduleAppointment ボットの設計図を使用して作成したボット用のコードフックです。

この Lambda 関数の設計図のコードは、初期化/検証とフルフィルメントタスクの両方を実行できます。
+ この Lambda 関数のコードは、歯科医予約のサンプル予約可能日時に基づいた動的会話を示しています (実際のアプリケーションではカレンダーを使用できます)。ユーザーが指定した曜日または日付について、このコードは次のように設定されています。
  +  予約可能な時間がない場合、Lambda 関数は、ユーザーに別の曜日または日付の入力を求めるように Amazon Lex に指示するレスポンスを返します (`dialogAction` タイプを `ElicitSlot)` に設定)。詳細については、「[レスポンスの形式](lambda-input-response-format.md#using-lambda-response-format)」を参照してください。
  + 指定された曜日または日付で予約可能な時間が 1 つだけの場合、Lambda 関数はその予約可能な時間をレスポンスで提示し、レスポンス内の `dialogAction` を `ConfirmIntent` に設定することで、ユーザーに確認するように Amazon Lex に指示します。これは、予約可能な時間を積極的に提示することでユーザーエクスペリエンスを改善する方法を示しています。
  + 予約可能な時間が複数ある場合、Lambda 関数は予約可能な時間のリストを Amazon Lex へのレスポンスで返します。Amazon Lex は、Lambda 関数からのメッセージを付けたレスポンスをクライアントに返します。
+ フルフィルメントコードフックとして、Lambda 関数は予約が行われた (つまり、インテントが達成された) ことを示す概要メッセージを返します。

**注記**  
この例ではレスポンスカードの使用方法を示しています。Lambda 関数はレスポンスカードを構築して Amazon Lex に返します。レスポンスカードには、予約可能な日付と時刻がボタンとしてリストされていて、そのリストから選択できます。Amazon Lex コンソールで提供されているクライアントを使用してボットをテストする場合は、レスポンスカードを確認できません。レスポンスカードを確認するには、ボットを Facebook Messenger などのメッセージングプラットフォームと連携する必要があります。手順については、「[Amazon Lex ボットと Facebook Messenger の統合](fb-bot-association.md)」を参照してください。レスポンスカードの詳細情報については、「[メッセージの管理](howitworks-manage-prompts.md)」を参照してください。

Amazon Lex は Lambda 関数を呼び出す際にイベントデータを入力として渡します。イベントフィールドの 1 つは `invocationSource` であり、Lambda 関数はこのイベントフィールドを使用して入力検証とフルフィルメントのいずれかのアクティビティを選択します。詳細については、「[入力イベントの形式](lambda-input-response-format.md#using-lambda-input-event-format)」を参照してください。

**次のステップ**  
[ステップ 1: Amazon Lex ボットを作成する](ex1-sch-appt-create-bot.md)