借助对话型 Action,您可以使用自己的对话界面扩展 Google 助理的功能,让用户能够访问您的产品和服务。这些 Action 会利用 Google 助理强大的自然语言理解 (NLU) 引擎来处理和理解自然语言输入,并根据该输入执行任务。
概览
对话型 Action 是一个简单的对象,用于定义对话的入口点(称为调用):
- 调用定义了用户如何告知 Google 助理他们想要与您的某个 Action 开始对话。Action 的调用由单个 intent 定义,该 intent 在用户请求 Action 时匹配。
- “对话”用于定义在 Action 被调用后用户如何与 Action 进行互动的方式。您可以使用意图、类型、场景和提示来构建对话。
- 此外,您的 Action 可以将额外的工作委托给 fulfillment,后者是一种通过 webhook 与 Action 进行通信的网络服务。这样,您就可以执行数据验证、调用其他网络服务、执行业务逻辑等。
您可以根据对用户重要的用例将一个或多个 Action 捆绑到一个称为 Actions 项目的逻辑容器中。您的 Actions 项目包含您的整个调用模型(所有调用的集合),它允许用户从对话模型中的逻辑位置(用户可以说的所有可能的话,以及您回复用户的所有可能方式)开始。
调用
调用与代表品牌、名称或角色的显示名称相关联,让用户可以要求 Google 助理调用您的 Action。用户可以单独使用此显示名称(称为主调用),也可以将其与可选的深层链接短语结合使用来调用您的 Action。
例如,用户可以说出以下短语,在显示名称为“关于 Google 的事实”的项目中调用三个单独的操作:
- “Ok Google,聊聊 Google 小知识”
- “Ok Google,了解 Google 的事实信息,了解公司事实”
- “Ok Google,聊聊 Google 的事实信息,看看历史方面的事实”
示例中的第一个调用是主调用。此调用与一个名为 actions.intent.MAIN
的特殊系统 intent 相关联。第二次和第三次调用是深层链接调用,可让您指定允许用户要求使用特定功能的其他短语。这些调用与您指定为全局的用户 intent 相对应。此示例中的每次调用都会提供一个对话入口点,并对应于单个 Action。
图 2 描述了一个典型的主调用流程:
- 当用户请求 Action 时,他们通常会要求 Google 助理使用您的显示名执行该操作。
- Google 助理会将用户的请求与与请求匹配的相应 intent 进行匹配。在本例中为
actions.intent.MAIN
。 - 操作会收到 intent 匹配通知,并返回相应的提示来发起与用户对话。
对话
对话用于定义在调用 Action 后用户如何与 Action 互动的。构建这些交互时,您需要定义对话的有效用户输入、处理该输入的逻辑,以及用于回复用户的相应提示。下图显示了典型的对话回合如何与对话的低级别组件(intent、类型、场景和提示)协同工作。
图 3 描述了典型的对话回合:
- 当用户说出语音指令时,Google 助理 NLU 会将输入与适当的 intent 进行匹配。如果某个意图的语言模型可以与用户输入高度或完全匹配,则系统会匹配该意图。您可以通过指定训练短语或用户可能想要说出的内容示例来定义语言模型。Google 助理会获取这些训练短语并对其进行扩展,以创建 intent 的语言模型。
- 当 Google 助理 NLU 与 intent 匹配时,可以从输入中提取您需要的参数。这些参数具有与其关联的类型,例如日期或数字。您可以为 intent 训练短语的特定部分添加注释,以指定要提取的参数。
- 然后,场景会处理匹配的 intent。您可以将场景视为 Action 的逻辑执行器,负责处理繁重的工作并执行推动对话所需的逻辑。场景循环运行,提供了灵活的执行生命周期,让您可以执行验证 intent 参数、执行槽位填充、将提示发回给用户等。
- 场景执行完毕后,通常会向用户发送提示以继续对话,或者可以根据需要结束对话。
履单
在调用或对话期间,您的 Action 可以触发 webhook,以通知 fulfillment 服务执行一些任务。
图 4 介绍了如何使用 fulfillment 生成提示(使用 fulfillment 的一种常见方式):
- 在 Action 的特定执行点,它可能会触发一个 webhook,以将请求发送到带有 JSON 载荷的已注册 webhook 处理程序(您的执行方式服务)。
- 您的执行方式会处理请求,例如调用 REST API 进行一些数据查询,或验证 JSON 载荷中的某些数据。使用 fulfillment 的一种非常常见的方法是在运行时生成动态提示,以便与您的对话更贴合当前用户。
- 您的执行方式会将包含 JSON 载荷的响应返回给 Action。它可以使用载荷中的数据继续执行它并响应用户。