

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在对话中使用运行时提示改善对槽位值的识别
<a name="using-hints"></a>

借助*运行时提示*，您可以根据上下文为 Amazon Lex V2 提供一组槽位值，以便改善音频对话中的识别效果并改善槽位的解析。您可以使用运行时提示在运行时提供一系列短语列表，作为槽位值解析的候选短语。

例如，如果与航班预订机器人交互的用户经常飞往旧金山、雅加达、首尔和莫斯科，则可以在引发目的地时使用这四个城市的列表配置运行时提示，以提高对常飞城市的识别能力。

运行时提示仅适用于英语（美国）和英语（英国）语言。运行时提示可以与以下槽位类型配合使用：
+ 自定义槽位类型
+ AMAZON.City
+ AMAZON.Country
+ AMAZON.FirstName
+ AMAZON.LastName
+ AMAZON.State
+ AMAZON.StreetName

**运行时提示基础知识**
+ 仅在从用户引发槽位值时才使用运行时提示。
+ 使用运行时提示时，提示的值优先于类似的值。例如，对于点餐机器人，您可以在自定义槽位中将一系列菜单餐品设置为在引发具体餐点时使用的运行时提示，以便将“fillet”（菲力）优先于发音相近的“fella”（小伙子）。
+ 如果用户输入与运行时提示中提供的值不同，则将原始用户输入用于槽位。
+ 对于自定义槽位类型，作为运行时提示提供的值将用于解析槽位，即使这些值在机器人创建期间不属于自定义槽位也是如此。
+ 仅支持 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)的音频输入提供运行时提示，因为 Amazon Lex V2 使用 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` 操作向机器人传递用户名字和姓氏的提示。

在对话期间，您可能会从一个槽位值中收集有助于处理另一个槽位值的信息。例如，在汽车保养应用程序中，当您有用户的账号时，可以查找客户拥有的车辆，然后将其作为提示传递给另一个槽位。

输入首字母缩略词，或者其字母应以用圆点或空格隔开的单个字母的形式单独发音的其他单词。除非单个字母是短语的一部分，例如“J. P. Morgan”或“A.W.S”，否则请勿使用这些字母。您可以使用大写或小写字母来定义首字母缩略词。

## 向槽位添加提示
<a name="hints-adding"></a>

要向槽位添加运行时提示，请使用 `runtimeHints` 结构，该结构是 `sessionState` 结构的一部分。以下是 `runtimeHints` 结构的示例。该结构针对“MakeAppointment”的意图，提供适用于两个槽位“FirstName”和“LastName”的提示。

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

您还可以在对话期间使用 Lambda 函数添加运行时提示。要添加运行时提示，您可以将 `runtimeHints` 结构添加到 Lambda 函数发送到 Amazon Lex V2 的响应的会话状态中。有关更多信息，请参阅 [AWS LambdaLex V2 的响应格式](lambda-response-format.md)。

您需要在请求中指定有效的 `intentName` 和 `slotName`，否则 Amazon Lex V2 会返回运行时错误。