本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
复合插槽类型
复合插槽是两个或多个插槽的组合,用于在单个用户输入中捕获多条信息。例如,您可以将机器人配置为通过请求“城市和州/省/自治区或邮政编码”来引发位置。相反,如果对话配置为使用单独的插槽类型,则会导致对话体验僵硬(询问“哪个城市?”,然后紧接着询问“邮政编码是什么?”)。使用复合插槽,您可以通过单个插槽来捕获所有信息。复合插槽是称为子插槽的组合,例如城市、州/省/自治区和邮政编码。
您可以组合使用可用的 Amazon Lex 插槽类型(内置)和您自己的插槽(自定义插槽)。您可以设计逻辑表达式来捕获所需子插槽中的信息。例如:城市和州/省/自治区或邮政编码。
复合插槽类型仅适用于 en-US。
创建复合插槽类型
要在复合插槽中使用子插槽,必须先配置复合插槽类型。为此,请使用添加插槽类型控制台步骤或 API 操作。为复合插槽类型选择名称和描述后,必须提供子插槽的信息。有关添加插槽类型的更多信息,请参阅添加槽类型
子插槽
复合插槽类型需要配置底层插槽,称为子插槽。如果要在一次请求中从客户处引发多条信息,请配置子插槽的组合。例如:城市、州/省/自治区以及邮政编码。您可以为一个复合插槽添加最多 6 个子插槽。
单一插槽类型的插槽可用于向复合插槽类型添加子插槽。但是,您无法使用复合插槽类型作为子插槽的插槽类型。
下图以复合插槽“汽车”为例,其中包括子插槽“颜色”、“燃油类型”、“制造商”、“型号”、“VIN”和“年份”。
表达式生成器
为便于复合插槽的履行,您可以选择使用表达式生成器。借助表达式生成器,您可以设计逻辑插槽表达式,以按所需顺序捕获所需的子插槽值。作为布尔表达式的一部分,您可以使用诸如 AND 和 OR 等运算符。根据设计的表达式,当履行所需的子插槽时,即视为履行该复合插槽。
使用复合插槽类型
对于某些意图,您可能需要将不同的插槽作为单个插槽的一部分来捕获。例如,车辆保养预约安排机器人可能有以下言语的意图:
My car is a {car}
该意图预期 {car} 复合插槽包含一系列插槽,其中包含车辆的详细信息。例如,“2021 White Toyota Camry”(2021 款白色丰田凯美瑞)。
复合插槽不同于多值插槽。复合插槽由多个插槽组成,每个插槽都有自己的值。而多值插槽是可以包含一系列值的单一插槽。有关多值插槽的更多信息,请参阅使用一个插槽中的多个值
对于复合插槽,Amazon Lex 会在响应 RecognizeText
或 RecognizeUtterance
操作时为每个子插槽返回一个值。以下是 CarService 机器人为言语“I want to schedule a service for my “2021 White Toyota Camry"”(我想为我的“2021 款白色丰田凯美瑞”预订保养服务)返回的插槽信息。
"slots": {
"CarType": {
"value": {
"originalValue": "White Toyota Camry 2021",
"interpretedValue": "White Toyota Camry 2021",
"resolvedValues": [
"white Toyota Camry 2021"
]
},
"subSlots": {
"Color": {
"value": {
"originalValue": "White",
"interpretedValue": "White",
"resolvedValues": [
"white"
]
},
"shape": "Scalar"
},
"Manufacturer": {
"value": {
"originalValue": "Toyota",
"interpretedValue": "Toyota",
"resolvedValues": [
"Toyota"
]
},
"shape": "Scalar"
},
"Model": {
"value": {
"originalValue": "Camry",
"interpretedValue": "Camry",
"resolvedValues": [
"Camry"
]
},
"shape": "Scalar"
},
"Year": {
"value": {
"originalValue": "2021",
"interpretedValue": "2021",
"resolvedValues": [
"2021"
]
},
"shape": "Scalar"
}
}
},
...
}
可以在对话的第一回合或第 n 回合中引发复合插槽。基于所提供的输入值,复合插槽可以引发其余所需的子插槽。
复合插槽总是为每个子插槽返回一个值。当言语中不包含给定子插槽的可识别值时,该特定子插槽不会返回任何响应。
复合插槽适用于文本和语音输入。
向意图中添加插槽时,复合插槽只能作为自定义插槽类型使用。
您可以在提示中使用复合插槽。例如,您可以为意图设置确认提示。
Would you like me to schedule service for your 2021 White Toyota
Camry?
当向用户发送提示时,Amazon Lex 会发送“Would you like me to schedule service for your 2021 White Toyota Camry?”(是否需要为您的 2021 款白色丰田凯美瑞预约保养服务?)。
每个子插槽都配置为一个插槽。您可以添加插槽提示来引发子插槽和示例言语。您可以为子槽启用“等待并继续”以及默认值。有关更多信息,请参阅在 Lex V2 机器人的意图中使用默认插槽值。
您可以使用插槽模糊处理来掩盖对话日志中的整个复合插槽。请注意,插槽模糊处理应用于复合插槽级别,启用后,属于复合插槽的子插槽的值将被模糊处理。当您对插槽值进行模糊处理时,每个插槽值将被替换为插槽的名称。有关更多信息,请参阅在 Lex V2 的对话日志中隐藏 slot 值。
编辑复合插槽类型
您可以从复合插槽配置中编辑子插槽,以修改子插槽名称和插槽类型。但是,当意图正在使用复合插槽时,您需要首先编辑意图,然后才能修改子插槽。
删除复合插槽类型
您可以从复合插槽配置中删除子插槽。请注意,当意图正在使用子插槽时,子插槽仍会从该意图中删除。
表达式生成器中的插槽表达式提供关于子插槽已被删除的警报。