通过类型,您可以配置 Google 助理 NLU(自然语言理解)引擎,以便从用户输入中提取结构化数据。您可以在以下情况下使用类型:
在 intent 中,您可以使用类型为训练短语添加注解以创建槽。当用户说出与槽匹配的内容时,NLU 引擎会将其提取为类型化参数,以便您可以在场景中对其进行处理。
在场景的“条件”阶段中,您可以根据参数是否具有类型中定义的特定值这一逻辑来确定逻辑。conditions
自定义类型
借助自定义类型,您可以创建自己的类型规范,以通知 NLU 为单个键分配一组值。您可以通过多种方式指定类型:
- 借助字词和同义词,您可以将多个值映射到单个键(称为条目)。您的类型可以包含一个或多个条目。如果您选择此选项,还可以启用以下 NLU 设置:
- 启用模糊匹配 - 此功能允许匹配包含多个字词的条目,即使这些字词以不同顺序读出也是如此。
- 接受未知值 - 如果您无法指定所有可能的值,语言处理器可以根据周围的输入和 intent 训练数据来接受未知字词或短语,例如可能添加到购物清单的商品。
- 正则表达式允许类型使用正则表达式模式(基于 Google 的 RE2 标准)对值进行匹配。
- 自由格式文本允许类型匹配用户所说的任何内容。通过为 intent 添加这种类型注解,您可以将所有输入用作参数,您可以将这些参数传送到自己的 NLU。
系统类型
借助系统类型,您可以使用系统提供的训练数据和值从用户输入中注解和提取已知数据。支持以下系统类型:
类型 | 说明 |
---|---|
actions.type.DateTime |
包含基于用户设备设置的日期、时间和时区。 可用于槽位填充和训练短语注释。 |
actions.type.Date |
仅包含日期。仅适用于槽填充。 |
actions.type.Time |
仅包含时间。仅适用于槽填充。 |
actions.type.Number |
Number 类型与序数和基数匹配。 |
DateTime
、Date
和 Time
使用情况
根据您使用该类型的位置以及与该类型匹配的用户输入,这些类型的行为会有所不同。
与 intent 搭配使用
在 intent 中为训练短语添加注释仅支持 DateTime
类型。用户输入不需要与整个 DateTime
值匹配。例如,如果用户仅提供年份,会话参数可能如下所示:
"date_time": {
"year": 2019
}
与槽填充一起使用
槽填充支持 DateTime
、Date
和 Time
。
- 如果槽类型为
DateTime
,Google 助理会提示用户,直到提供完整的值。 - 如果槽类型为
Date
,Google 助理会提示用户,直到提供日期值为止。收集时,您收到的参数是一个完整的DateTime
,并且时间设置为 00:00。 - 如果槽类型为
Time
,Google 助理会提示用户,直到提供时间值。收集时,您收到的参数是一个完整的DateTime
对象,其日期设置为当前日期。
例如,假设洛杉矶的一名用户说:“Hey Google,创建一个 2024 年 1 月 15 日晚上 8 点的提醒”。在槽填充过程提取 DateTime
时,完整参数可能如下所示:
"date_time": {
"day": 15,
"hours": 20,
"minutes": 0,
"month": 1,
"nanos": 0,
"seconds": 0,
"time_zone": {
"id": "America/Los_Angeles"
},
"year": 2024
}
与条件搭配使用
条件仅允许使用数字和字符串,因此使用顶级 DateTime
参数会导致条件返回 False。例如:
$session.params.my_dateTime.day > 5
是有效条件,因为day
值是数字且受支持。$session.params.my_dateTime > "01-01-2010"
是无效条件,因为顶级“DateTime”对象不是数字或字符串。
运行时类型替换
借助运行时类型替换,您可以在执行方式中动态创建或修改类型。借助此功能,您可以在运行时添加或替换类型的规范。例如,您可以检查后端数据源,以将每日菜单项加载到执行方式中的类型中。
如需详细了解如何进行 build 类型替换,请参阅网络钩子指南。