

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

# ガイドラインとベストプラクティス
<a name="guidelines"></a>

以下のガイドラインとベストプラクティスを参考にして、ボットの動作と顧客との対話を最適化してください。

**リクエストへの署名**

[API リファレンス](https://docs.aws.amazon.com/lexv2/latest/APIReference/welcome.html) のすべての Amazon Lex V2 のモデル構築および実行時のすべてのリクエストは、リクエストの認証に署名 V4 を使用します。リクエストの認証の詳細については、AWS 全般のリファレンスの「[署名バージョン 4 の署名プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)」を参照してください。

**機密情報の保護**

ランタイム API オペレーションの [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) と [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) では、必須パラメーターとしてセッション ID を使用します。開発者は、これを API で説明されている制約を満たす任意の値に設定できます。このパラメーターを使用してユーザーのログイン情報、メールアドレス、社会保障番号などの機密情報を送信しないでください。この ID は、ボットとの会話を一意に識別するために使用します。

**ユーザーの発話からスロット値をキャプチャする**

Amazon Lex V2 では、ユーザーがスロットタイプ定義で指定した列挙値を使用して機械学習モデルをトレーニングします。次のサンプル発話で `GetPredictionIntent` というインテントを定義したとします。

```
"Tell me the prediction for {sign}"
```

{sign} は 12 個の列挙値を持つカスタムタイプ `ZodiacSign` のスロットで、`Aries`～`Pisces` です。たとえば、ユーザーが「地球の未来を教えて」と言ったとします。
+ Amazon Lex V2 では、次のいずれかのアクションを実行すると、「地球」が ZodiacSign であると推測されます。
  + [CreateSlotType](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlotType.html) オペレーションを使用して、`valueSelectionStrategy` フィールドを `ORIGINAL_VALUE` に設定します。
  + コンソールで **[値を拡大]** を選択します。
+ 次のいずれかのアクションを実行してスロットタイプに定義した値に認識を制限すると、Amazon Lex V2 は値「地球」を認識しません。
  + `CreateSlotType` オペレーションを使用して、`valueSelectionStrategy` フィールドを `TOP_RESOLUTION` に設定します。
  + コンソールで [**スロット値とシノニムに制限**] を選択します。

スロット値にシノニムを定義すると、それらはスロット値と同じと認識されます。ただし、シノニムの代わりにスロット値が返されます。

Amazon Lex V2 はこの値をクライアントアプリケーションまたは Lambda 関数に渡すため、フルフィルメントアクティビティで使用する前に、スロット値が有効な値であることを確認する必要があります。

Amazon Lex から Lambda 関数を呼び出すか、クライアントアプリケーションとの会話の結果を返す場合、スロット値の大文字と小文字の区別は保証されません。テキストでのやり取りの場合、スロット値の大文字と小文字は、`valueResolutionStrategy` フィールドの値に応じて入力したテキストまたはスロット値と一致します。

**スロット値の頭字語**

頭字語を含むスロット値を定義する場合は、次のパターンを使用します。
+ ピリオドで区切られた大文字 (D.V.D.)
+ スペースで区切られた大文字 (D V D)

**日付と時刻用の組み込みスロット**

[AMAZON.Date](built-in-slot-date.md) と [AMAZON.Time](built-in-slot-time.md) 組み込みスロットタイプは、日時 (絶対的な日時と相対的な日時の両方) をキャプチャします。相対的な日時は、Amazon Lex V2 がリクエストを受け取った日時と、リクエストを処理しているリージョンで解決されます。

`AMAZON.Time` 組み込みスロットタイプで、ユーザーが時間を午前か午後かを指定しない場合、時間があいまいになります。その場合、Amazon Lex V2 はユーザーに再度プロンプトを表示します。プロンプトは、絶対時間を引き出すように使うことをお勧めします。例えば、「ピザはいつお届けしますか? 6 PM または夕方 6 時のように指定できます」というプロンプトを使います。

**ボットのトレーニングデータのあいまいさ回避**

ボットで紛らわしいトレーニングデータを提供すると、Amazon Lex V2 がユーザー入力を理解する能力が低下します。ボットに 2 つのインテント (`OrderPizza`と`OrderDrink`) があり、サンプル発話として「注文したい」を含めたとします。ボットを構築しても、Amazon Lex V2 ではこの発話を特定のインテントにマッピングできません。その結果、この発話をユーザーがランタイムに入力すると、Amazon Lex V2 は高い信頼性におけるインテントを選択できません。

同じ発話を持つ 2 つのインテントがランタイムにある場合、入力コンテキストを使用して Amazon Lex V2 が実行時に 2 つのインテントを区別できるようにします。詳細については、「[インテントコンテキストのセッティング](https://docs.aws.amazon.com/lexv2/latest/dg/context-mgmt-active-context.html)」を参照してください。

**TSTALIASID エイリアスの使用**
+ ボットの TSTALIASID エイリアスはドラフト版を指し、手動テストにのみ使用してください。Amazon Lex では、TSTALIASID エイリアスのボットに対するランタイムリクエストの数が制限されています。
+ ドラフトバージョンのボットを更新すると、Amazon Lex はボットの TSTALIASID を使用しているクライアントアプリケーションで進行中のあらゆる会話をシャットダウンします。ドラフトバージョンは更新される場合があるため、通常、本番稼働環境では TSTALIASID alias のボットを使用しないでください。代わりに、別のバージョンとエイリアスを発行して使用します。
+ エイリアスを更新すると、Amazon Lex に変更が反映されるまでに数分かかります。ボットの バージョンを変更すると、その変更は TSTALIASID エイリアスによりすぐに反映されます。