

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

# 槽值
<a name="intent-slots"></a>

槽位是用户为履行意图而提供的值。有两种类型的槽位：
+ **内置槽位类型**：您可以使用内置的槽位类型来捕获标准值，例如数字、名称和城市。有关系统支持的内置槽位类型的列表，请参阅[内置槽位类型](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/zh_cn/lexv2/latest/dg/images/response-slot-prompt.png)


您可以定义在输入槽位值或超过最大重试次数后，机器人应向用户发送的响应。例如，对于用于安排汽车服务的机器人，您可以在输入车辆识别码（VIN）时向用户发送消息：


|  | 
| --- |
| 感谢您提供车辆的 VIN 号码。现在将开始安排预约。 | 

您可以创建两个响应：
+ **成功响应**：当 Amazon Lex V2 了解槽位值时发送。
+ **失败响应**：当 Amazon Lex V2 在达到最大重试次数后仍无法理解用户的槽位值时发送。

您可以设置值、配置后续步骤，并应用与每个响应相对应的条件以设计对话流程。

如果未设置条件或明确的下一步操作，Amazon Lex V2 将按优先级继续执行下一个槽位。

![\[槽位响应的高级选项。\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/response-slot.png)


您可以使用 Lambda 函数来验证用户输入的槽位值并确定下一步应执行的操作。例如，您可以使用验证功能来确保输入的值位于正确的范围内，或者格式正确。要激活 Lambda 函数，请在**对话框代码挂钩**部分中选择**调用 Lambda 函数**复选框和**活动**按钮。您可以为对话框代码挂钩指定调用标签。此调用标签可以在 Lambda 函数中用于编写与槽位引发相对应的业务逻辑。

![\[对话框代码挂钩的选项。\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/response-dialog-code-hook.png)


此意图不需要的槽位不是主对话流程的一部分。但是，如果用户言语包含您的机器人识别为对应于可选槽位的值，则可以用该值填充该槽位。例如，如果您将业务智能机器人配置为具有可选 `City` 槽位和用户言语 **What is the sales for April in San Diego?**，则该机器人将该可选槽位填充为 **San Diego**。您可以将业务逻辑配置为使用可选的槽位值（如果存在）。

使用后续步骤无法引发此意图所不需要的槽位。这些步骤只能在意图引发期间填充（如上一个示例所示），也可以通过在 Lambda 函数中设置对话状态来被引发。如果该槽位是使用 Lambda 函数引发的，则必须使用 Lambda 函数在槽位引发完成后决定对话的下一步操作。要在构建机器人时启用对下一步的支持，您必须将该槽位标记为意图所必需的。

**注意**  
Amazon Lex V2 于 2022 年 8 月 17 日发布了对用户对话管理方式的更改。借助此更改，您可以更好地控制用户的对话路径。有关更多信息，请参阅 [Amazon Lex V2 中的对话流更改](understanding-new-flows.md)。2022 年 8 月 17 日之前创建的机器人不支持对话框代码挂钩消息、设置值、配置后续步骤和添加条件。

以下主题介绍如何配置机器人以重新引发已填充的槽位值，以及如何创建由多个值组成的槽位：

**Topics**
+ [重新引发机器人](reelicit-slots.md)
+ [使用一个槽位中的多个值](multi-valued-slots.md)