

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

# Slots
<a name="intent-slots"></a>

スロットは、インテントを満たすためにユーザーが提供する値です。スロットには、次の 2 種類があります。
+ **組み込みスロットタイプ** — 組み込みスロットタイプを使用して、番号、名前、都市などの標準値を取得できます。サポートされている組み込みスロットタイプについては、「[組み込みスロットタイプ](built-in-slots.md)」を参照してください。
+ **カスタムスロットタイプ** — カスタムスロットタイプを使用して、インテント固有のカスタム値をキャプチャできます。たとえば、カスタムスロットタイプを使用して、口座タイプを「当座預金」または「貯蓄」としてキャプチャできます。詳細については、「[カスタムスロットタイプ](custom-slot-types.md)」を参照してください。

インテントにスロットを定義するには、以下を設定する必要があります。
+ **スロット情報** — このフィールドにはスロットの名前と説明 (任意) が含まれます。たとえば、スロット名を「AccountNumber」として指定すると、アカウント番号を取得できます。インテントを満たすために会話フローの一部としてそのスロットが必要な場合は、必須とマークする必要があります。
+ **スロットタイプ** — スロットタイプは、スロットが受け付けることができる値のリストを定義します。カスタムスロットタイプを作成することも、定義済みのスロットタイプを使用することもできます。
+ **スロットプロンプト** — スロットプロンプトは、情報を収集するためにユーザーに提示される質問です。情報を収集するために使用する再試行の回数と、各再試行に使用するプロンプトのバリエーションを設定できます。また、キャプチャした入力を処理して有効な入力への解決を試みるたびに Lambda 関数呼び出しを有効にすることもできます。
+ **待機と続行 (オプション)** - この動作を有効にすると、ユーザーは「ちょっと待って」などのフレーズを言うことで、ボットに情報の発見と提供を待機させることができます。ストリーミング会話でのみ有効です。詳細については、「[一時停止中に、Amazon Lex V2 ボットによるユーザーの追加の情報提供の待機を可能にする](wait-and-continue.md)」を参照してください。
+ **スロットキャプチャ応答** — ユーザー入力からスロット値を取得した結果に基づいて、成功の応答と失敗の応答を設定できます。
+ **条件分岐** — 最初のレスポンスを再生した後に条件を適用できます。条件が true に評価された場合、定義したアクションが実行されます。詳細については、「[ブランチ会話への条件の追加](paths-branching.md)」を参照してください。
+ **ダイアログコードフック** — Lambda コードフックを使用してスロット値を検証し、ビジネスロジックを実行することもできます。詳細については、「[ダイアログコードフックを呼び出す](paths-code-hook.md)」を参照してください。
+ **ユーザー入力タイプ** — ボットが特定のモダリティを受け入れるように入力タイプを設定できます。デフォルトでは、音声と DTMF の両方のモダリティが受け入れられます。音声のみ、または DTMF のみに設定できます。
+ **音声入力のタイムアウトと長さ** — ボイスタイムアウト、サイレンスタイムアウトなどの音声タイムアウトを設定できます。また、音声の最大長も設定できます。
+ **DTMF 入力タイムアウト、文字数、長さ** — DTMF タイムアウトは、削除文字と終了文字とともに設定できます。また、DTMF の最大長も設定できます。
+ **テキスト長** — テキストモダリティの最大長を設定できます。

スロットプロンプトが再生されたら、ユーザーはスロット値を入力として入力します。Amazon Lex V2 がユーザーから提供されたスロット値を認識しない場合、値を認識するまで、またはスロットに設定された最大再試行回数を超えるまで、スロットの取得を再試行します。再試行の詳細設定を使用すると、タイムアウトを設定したり、入力タイプを制限したり、最初のプロンプトや再試行時の中断を有効または無効にしたりできます。入力のキャプチャを試みるたびに、Amazon Lex V2 は再試行用に用意された呼び出しラベルを使用して、ボット用に設定された Lambda 関数を呼び出すことができます。たとえば、Lambda 関数を使用して、ビジネスロジックを適用して有効な値への解決を試みることができます。この Lambda 関数は、スロットプロンプトの**詳細オプション**で有効にできます。

![\[ボットが情報を誘発するようにスロットプロンプトを設定します。\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/response-slot-prompt.png)


スロット値が入力されたとき、または最大リトライ回数を超えたときに、ボットがユーザーに送信するレスポンスを定義できます。たとえば、自動車のサービスをスケジュールするボットの場合、車両識別番号 (VIN) が入力されるとユーザーにメッセージを送信できます。


|  | 
| --- |
| お車の VIN 番号を教えていただきありがとうございます。それでは、予約を入れておきます。 | 

2 つの応答を作成できます。
+ **成功の応答** — Amazon Lex V2 がスロット値を認識したときに送信されます。
+ **失敗の応答** — Amazon Lex V2 が最大回数再試行してもユーザーからのスロット値を認識できない場合に送信されます。

値を設定し、次のステップを設定し、各応答に対応する条件を適用して会話フローを設計できます。

条件がない場合や次のステップが明示的に指定されていない場合、Amazon Lex V2 は優先順位に従って次のスロットに移動します。

![\[スロットレスポンスの詳細オプション。\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/response-slot.png)


Lambda 関数を使用して、ユーザーが入力したスロット値を検証し、次のアクションを決定できます。たとえば、検証関数を使用して、入力された値が正しい範囲内にあることや、正しい形式になっていることを確認できます。Lambda 関数を有効にするには、**[Lambda 関数を呼び出す]** チェックボックスと **[ダイアログコードフック]** セクションの **[アクティブ]** ボタンを選択します。ダイアログコードフックの呼び出しラベルを指定できます。この呼び出しラベルを Lambda 関数で使用して、スロット誘発に対応するビジネスロジックを記述できます。

![\[ダイアログコードフックのオプション。\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/response-dialog-code-hook.png)


インテントに必要のないスロットは、メインの会話フローには含まれません。ただし、ユーザーの発話に、ボットがオプションスロットに対応すると識別する値が含まれている場合、ボットはその値をスロットに入力できます。たとえば、ビジネスインテリジェンスボットにオプションの `City` スロットとユーザー発話 **What is the sales for April in San Diego?** を持たせるように設定した場合、ボットは **San Diego** でオプションのスロットを埋めます。オプションのスロット値がある場合は、その値を使用するようにビジネスロジックを設定できます。

インテントに必要のないスロットは、次のステップでは誘発できません。これらのステップは、(前の例のように) インテントの誘発中にのみ入力することも、Lambda 関数内でダイアログの状態を設定することによって生成することもできます。Lambda 関数を使用してスロットを誘発する場合は、スロットの誘発が完了した後に Lambda 関数を使用して会話の次のステップを決定する必要があります。ボットの構築中に次のステップのサポートを有効にするには、スロットをインテントに必要なものとしてマークする必要があります。

**注記**  
2022 年 8 月 17 日、Amazon Lex V2 はユーザーとの会話の管理方法の変更をリリースしました。この変更により、ユーザーが会話の中でたどるパスをより細かく制御できるようになりました。詳細については、「[Amazon Lex V2 の会話フローの変更 V2](understanding-new-flows.md)」を参照してください。2022 年 8 月 17 日より前に作成されたボットは、ダイアログコードフックメッセージ、値の設定、次のステップの設定、条件の追加をサポートしていません。

以下のトピックでは、すでに入力されているスロット値を再取得するようにボットを設定する方法と、複数の値で構成されるスロットを作成する方法について説明します。

**Topics**
+ [再誘発スロット](reelicit-slots.md)
+ [スロットで複数の値を使用する](multi-valued-slots.md)