intent

intent 表示 Google 助理需要您的 Action 执行的任务,例如需要处理的某个用户输入或您需要处理的系统事件。您可以使用意图来帮助构建调用对话模型。当发生这些事件时,Google 助理运行时会将其与相应的 intent 进行匹配,并将该 intent 发送到您的 Action 进行处理。intent 主要有两种类型,详见以下列表:

  • 通过用户 intent,您可以扩展 Google 助理的功能,使其能够理解特定于您的品牌和服务的用户请求。您可以在 intent 中定义自定义训练短语,而这会生成 intent 的语言模型。该语言模型增强了 Google 助理 NLU,提高了其理解能力。

  • 系统 intent 具有训练数据或其他由 Google 助理定义的非对话输入信号。这意味着您无需为这些意图定义训练短语。在主调用等众所周知的系统事件期间,或当用户未提供任何输入时,Google 助理会以标准方式匹配这些 intent。

图 1. 常见的 intent 匹配场景。用户说出与全局 intent 匹配的话语。相应的场景会激活,并最终消耗更多的用户输入。系统匹配了另一个 intent,该 intent 过渡到并激活另一个场景。

用户 intent

构建 Action 时,您可以创建包含训练短语的用户 intent,这扩展了 Google 助理的理解能力。Google 助理在将用户请求委托给您的 Action 时,会使用您的训练短语来增强其 NLU。

发生这种情况时,Google 助理会代理用户与 Action 之间的通信,将用户输入映射到具有匹配语言模型的 intent。然后,Google 助理会将匹配的 intent 通知您的 Action,以便您可以在场景中对其进行处理。

构建用户 intent 时,您可以指定以下元素:

  • 全局 intent 指定定义了 Google 助理运行时是否可以在调用和对话期间匹配指定的用户 intent。默认情况下,Google 助理只能在对话期间匹配用户 intent。只有您标记为全局的 intent 才符合深层链接调用的条件。

  • 训练短语是用户为了匹配 intent 而可能会说出的内容示例。Google 助理 NLU(自然语言理解)引擎会自然地扩展这些训练短语,以包含其他类似的短语。提供大量高质量样本可提高意图的质量和匹配准确率。

  • 参数是您要从用户输入中提取的固定类型数据。如需创建参数,请使用 types 为训练短语添加注解,以通知 NLU 引擎您想要提取部分用户输入。您可以使用系统类型,也可以针对参数创建自己的自定义类型。

当 NLU 引擎在用户输入中检测到参数匹配时,它会将值提取为类型化参数,以便您在场景中对该参数执行逻辑。如果 intent 参数与场景槽位同名,Google 助理运行时会自动使用 intent 参数的值填充场景槽位。如需了解详情,请参阅槽值映射文档。

intent 参数也支持“部分”匹配。例如,如果您指定 DateTime 类型且用户仅提供日期,NLU 仍会提取部分值作为参数。

您可能需要使用自己的 NLU 处理 Action 的所有用户输入。例如,您可能希望 Action 在对话期间响应所有不匹配的场景。为确保捕获所有用户输入,请创建一个具有自由形式文本类型的 intent。不过,您应该避免使用自定义 intent 在全局范围内替换 Google 助理的默认非匹配行为,因为这可能会对用户在 Action 之间切换的能力产生负面影响。

当您在 Actions 控制台中创建自定义 intent 时,Actions Builder 会建议使用可能与您的用户 intent 具有相同角色的系统 intent。如需详细了解系统 intent,请参阅下一部分。

系统 intent

Google 助理根据标准系统事件匹配系统 intent。这些事件可能具有系统定义的语言模型(例如用户通过说“pause”来暂停媒体播放器),或者可能没有语言模型(例如用户根本不提供任何输入)。由于这些 intent 由 Google 助理提供,因此您无需担心它们的匹配方式,只需考虑如何处理匹配后的 intent。

系统 intent 还取代了为经常需要的操作(例如 YESNO)创建用户 intent 的需要。系统会针对所有语言区域训练系统 intent,让您能更轻松地为多种语言的用户实现一致的体验。系统 intent 也可以设置为全局 intent。

系统 intent 带有版本编号。只要 Google 助理支持某个特定版本的系统 intent,您就可以使用该版本。如果 Action 使用了不受支持的系统 intent 版本,该系统 intent 会自动更新到受支持的版本。

intent 列表

intent 说明
actions.intent.MAIN 每个 Actions 项目都必须包含此默认主调用,该调用与显示名称相关联。用户可以通过说出“Ok Google, talk to <display name>”这样的指令来调用 Action。

actions.intent.NO_MATCH_1

actions.intent.NO_MATCH_2

actions.intent.NO_MATCH_FINAL

当用户说出的内容无法与 Action 中的 intent 匹配时,系统会匹配这些 intent。您可以在最终 intent 中设置单独的重新提示和退出消息。

actions.intent.NO_INPUT_1

actions.intent.NO_INPUT_2

actions.intent.NO_INPUT_FINAL

如果用户未在 8 秒后输入,系统会匹配这些 intent。您可以为每个 intent 设置单独的重新提示,并在最终 intent 中设置退出消息。

actions.intent.CANCEL 当用户在对话期间想要退出您的 Action(例如用户说“I want to quit”)时,系统会匹配此 intent。
actions.intent.MEDIA_STATUS_FINISHED 当用户完成媒体播放或跳到下一项媒体时,系统会匹配此 intent,并将其发送到您的 Action。
actions.intent.MEDIA_STATUS_PAUSED 当用户在媒体响应中暂停媒体播放时,系统会匹配此 intent,并将其发送到您的 Action。
actions.intent.MEDIA_STATUS_STOPPED 当用户从媒体响应停止或退出媒体播放时,系统会匹配此 intent,并将其发送到您的 Action。
actions.intent.MEDIA_STATUS_FAILED 当媒体响应的播放器无法播放时,系统会匹配此 intent,并将其发送到您的 Action。
actions.intent.YES

当用户对您的 Action 提供肯定响应时,系统会匹配此 intent。

actions.intent.NO

当用户对您的 Action 给出负面响应时,系统会匹配此 intent。

actions.intent.REPEAT

当用户要求 Action 重复上次响应时,系统会匹配此 intent。如果代理中启用系统 intent,Google 助理会自动处理重复请求。通过启用此系统 intent,您可以修改重复请求的处理方式以及响应。

actions.intent.PLAY_GAME 当用户要求玩游戏时,系统会匹配此 intent。此 intent 可让您选择使用 Actions on Google 提供的隐式调用(不使用显示名称的调用)。

添加对其他语言的支持

某些系统 intent(例如 YESNONO_MATCH)仅支持英语。如需添加对其他语言的支持,您必须创建与这些系统 intent 匹配的用户 intent。必须按照与已实现的系统 intent 相同的方式,在代码中处理新 intent。

例如,假设您正在开发一项新操作,并实现了 YES 系统 intent。YES 系统 intent 仅支持英语,但您还希望应用支持德语和日语互动。为了支持其他语言,您需要创建一个包含德语和日语训练短语的 intent,然后实现用于 YES 系统 intent 的处理。

详细了解如何创建用户 intent

详细了解如何将用户意图本地化

无匹配产出

当用户的响应与您的任何 intent 都不匹配时,Google 助理会尝试处理输入。此行为有助于用户在对话过程中更改 Action。例如,用户询问“这周放映哪些电影?”,然后在对话过程中改变上下文:“明天的天气怎么样?”在此示例中,由于“明天的天气怎么样?”不是对初始提示触发的对话的有效响应,因此 Google 助理会自动尝试处理匹配并将用户移至适当的对话。

如果 Google 助理找不到与用户输入匹配的适当 Action,用户便会继续在该 Action 的上下文中继续操作。

由于 Google 助理可能会中断您的 Action 来响应有效的非匹配场景,因此请勿使用 NO_MATCH 系统 intent 来执行用户查询。您只能使用 NO_MATCH intent 重新提示用户。