

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

# 会話内のランタイムヒントによるスロット値の認識の向上
<a name="using-hints"></a>

*ランタイムヒント*を使用すると、Amazon Lex V2 にコンテキストに基づいたスロット値のセットを与えることができます。これにより、音声会話での認識が向上し、スロットの解決が向上します。ランタイムヒントを使用すると、実行時にスロット値の解決の候補となるフレーズのリストを表示できます。

たとえば、フライト予約ボットを操作するユーザーがサンフランシスコ、ジャカルタ、ソウル、モスクワに頻繁に旅行する場合、目的地を誘発する際にこれらの 4 つの都市のリストを含むランタイムヒントを設定して、頻繁に旅行する都市の認識を高めることができます。

ランタイムヒントは、英語 (US) および英語 (UK) のみで使用できます。以下のスロットタイプで使用できます。
+ カスタムスロットタイプ
+ AMAZON.City
+ AMAZON.Country
+ AMAZON.FirstNameA
+ AMAZON.LastName
+ AMAZON.State
+ AMAZON.StreetName

**ランタイムヒントの基本**
+ ランタイムヒントは、ユーザーからスロット値を誘発する場合にのみ使用されます。
+ ランタイムヒントを使用する場合、ヒントの値は類似の値よりも優先されます。たとえば、フードオーダーボットの場合、メニュー項目のリストをランタイムヒントとして設定し、カスタムスロットの食品項目では、似たような響きの「フェラ」よりも「フィレ」を優先するように誘導できます。
+ ユーザー入力がランタイムヒントで提供される値と異なる場合、元のユーザー入力がスロットに使用されます。
+ カスタムスロットタイプでは、ボット作成時にカスタムスロットに含まれていなくても、ランタイムヒントとして提供された値がスロットの解決に使用されます。
+ ランタイムヒントは 8 kHz 音声入力でのみサポートされます。Amazon Lex V2 がサポートする[コンタクトセンターインテグレーション](https://docs.aws.amazon.com/lexv2/latest/dg/contact-center.html)で利用できます。Amazon Lex V2 コンソールの[テストウィンドウ](https://docs.aws.amazon.com/lexv2/latest/dg/test-bot.html)からの音声入力では 16 kHz の音声入力が使用されるため、ランタイムヒントは提供されません。

**注記**  
既存のボットでランタイムヒントを使用する前に、まずボットを再構築する必要があります。既存のバージョンのボットはランタイムヒントをサポートしていません。それらを使用するには、ボットの新しいバージョンを作成する必要があります。

[PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html)、[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)、または [StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html) オペレーションを使用してAmazon Lex V2 にランタイムヒントを送信できます。また、Lambda 関数を使用してランタイムヒントを追加できます。

会話の開始時にランタイムヒントを送信してボットで使用される各スロットのヒントを設定したり、会話中のセッション状態の一部としてヒントを送信したりできます。`runtimeHints` 属性は、スロットをそのスロットのヒントにマップします。

Amazon Lex V2 にランタイムヒントを送信すると、セッションが終了するまで会話のたびにヒントが保持されます。null `runtimeHints` 構造を送信すると、既存のヒントが使用されます。ヒントは次の方法で変更できます。
+ 新しい `runtimeHints` 構造をボットに送信します。新しい構造の内容が既存の構造と置換されます。
+ 空の `runtimeHints` 構造をボットに送信します。これにより、ボットのランタイムヒントがクリアされます。

## コンテキストのスロット値の追加
<a name="hints-context"></a>

ユーザーから次に予想される発話に関する情報がアプリケーションに含まれているときに、想定されるスロット値をランタイムヒントとして指定することで、ボットにコンテキストを追加します。Lambda ダイアログコードフックをボットに追加し (詳細については「[AWS Lambda関数を Amazon Lex V2 ボットに統合する](lambda.md)」を参照)、[AWS LambdaLex V2 の入力イベント形式](lambda-input-format.md) の **[proposedNextState]** フィールドを使用して、ユーザーとの会話を改善するために含める必要のあるランタイムヒントを決定します。

 たとえば、銀行アプリでは、特定のユーザーのアカウントニックネームのリストを生成し、そのリストを使用してユーザーがアクセスしたいアカウントを引き出すことができます。

ボットがユーザー入力を解釈するのに役立つコンテキストがあれば、会話の開始時にランタイムヒントを送信します。たとえば、ユーザーの電話番号がわかっていれば、この情報を使用してユーザーを検索できます。これにより、ユーザーの認証情報を確認するためにユーザーの名前を求める場合に、`PutSession` または `StartConversation` オペレーションを使用して名と姓のヒントをボットに渡すことができます。

会話中に、あるスロット値から別のスロット値に役立つ情報を収集する場合があります。たとえば、自動車ケアアプリでは、ユーザーのアカウント番号がわかっていれば、顧客が所有している車を調べて、別のスロットにヒントとして渡すことができます。

頭字語など、1 文字ずつ個別に発音する単語は、ピリオドとスペースで区切って 1 文字で入力します。「J.P. Morgan」や「A.W.S」などフレーズの一部でない限り、個々の文字は使用しないでください。頭字語の入力には、大文字と小文字のどちらでも使用できます。

## スロットへのヒントの追加
<a name="hints-adding"></a>

ランタイムヒントをスロットに追加するには、`sessionState` 構造の一部である `runtimeHints` 構造を使用します。以下は、`runtimeHints` 構造の例です。「MakeAppointment」インテントの「FirstName」と「LastName」の 2 つのスロットのヒントが表示されます。

```
{
    "sessionState": {
        "intent": {},
        "activeContexts": [],
        "dialogAction": {},
        "originatingRequestId": {},
        "sessionAttributes": {},
        "runtimeHints": {
            "slotHints": {
                "MakeAppointment": {
                    "FirstName": {
                        "runtimeHintValues": [
                            {
                                "phrase": "John"
                            },
                            {
                                "phrase": "Mary"
                            }
                        ]
                    },
                    "LastName": {
                        "runtimeHintValues": [
                            {
                                "phrase": "Stiles"
                            },
                            {
                                "phrase": "Major"
                            }
                        ]
                    }
                }
            }
        }
    }
}
```

Lambda 関数を使用して、会話中にランタイムヒントを追加することもできます。ランタイムヒントを追加するには、Lambda 関数が Amazon Lex V2 に送信するレスポンスのセッション状態に `runtimeHints` 構造を追加します。詳細については、「[AWS LambdaLex V2 のレスポンス形式](lambda-response-format.md)」を参照してください。

リクエストには有効な `intentName` と `slotName` を指定する必要があります。指定しない場合、Amazon Lex V2 はランタイムエラーを返します。