App Actions 内置 Intent

内置 Intent (BII) 让您的应用能够向 Google 表达其 fulfillment(实现)能力。通过在您的 shortcuts.xml 文件中声明能力并将 Intent 参数映射到 fulfillment,您可以让 Google Assistant 能够响应用户的查询启动您的应用并跳转到特定屏幕,以便用户完成任务。

内置 Intent 按应用类别进行分组。每个类别代表用户经常希望在其应用中执行的一组常见任务。可用 BII 的完整列表、它们的参数以及可用于测试的示例查询,请参阅内置 Intent 参考文档

许多 BII 都有特定的部署要求和建议。这些要求和建议有助于您的应用为用户提供最佳体验。

图 1. 通过对 Assistant 的语音查询调用 START_EXERCISE BII。
图 2. 将应用启动到特定屏幕以开始 START_EXERCISE 任务。
图 3. 响应查询显示一个微件

实现 BII 并处理 Intent 参数

对于 App Actions,您可以在您的 shortcuts.xml 文件中声明能力并处理 BII 参数。要实现一个 BII 并处理其参数,请按照以下步骤操作:

  1. 使用选定的 BII 声明 capability
  2. 为您要添加的每个 BII 字段添加嵌套的 parameter 元素。
    1. 如果您使用 targetClasstargetPackage,请使用您选择的名称将其映射到 Android Intent extras
    2. 如果您使用深层链接 URL,请在 URL 模板的查询字符串中使用命名参数。

要处理 BII 参数,请将 BII 参数映射到您的 capability 中显式 Android Intent 的相应参数。然后,您就可以在应用中使用其值。您的应用并非必须处理 BII 参数。但是,请尽量处理在内置 Intent 参考文档中标记为“推荐”的数据字段。

您可以定义多个 Intent fulfillment,每个都有自己的一组推荐参数。Google 会根据其从用户查询中识别出的能力参数以及 Intent 中声明的参数来选择合适的 fulfillment。

例如,actions.intent.START_EXERCISE Intent 建议您的应用处理 exercise.name BII 参数,但您可以在应用中实现不带参数的 BII。如果您想处理不包含特定锻炼名称的用户查询(例如 “Ask Example App to start tracking exercise.”),则可能会这样做。

以下代码段在用户查询中未包含参数时,会回退到不带必需参数的 fulfillment

<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">

    <capability android:name="actions.intent.START_EXERCISE">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.example.myapplication.Activity1"
            android:targetPackage="com.example.myapplication">
            <parameter
                android:name="exercise.name"
                android:key="exerciseType"
                android:required="true"
                />
        </intent>
        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.example.myapplication.Activity2">
        </intent>
    </capability>
</shortcuts>

Google Assistant 会尽最大努力在将参数值返回给您的应用时向用户提供最相关的信息。例如,用户通过 Example Restaurant 的移动应用订购披萨的查询并不总是包含位置信息。为了更好地服务用户,Assistant 可能会向该应用提供距离最近的 Example Restaurant 的经纬度值。

另外,请注意,您的应用不应在未先征得用户确认的情况下直接执行修改用户现实世界状态的操作(例如,转账、下单或发送消息)。

消歧

通过 <url-parameter> 或 Intent extras 传递给应用的参数可能无法唯一标识您要向用户显示的项。在这种情况下,请使用参数值作为搜索参数,并将用户带到应用的搜索页面。他们可以在该页面上进行消歧并选择正确的项。

例如,如果用户对 BII ORDER_MENU_ITEM 的查询是 “Order from Example Restaurant”,您可以向用户呈现名称与词语 "Example Restaurant" 匹配的餐馆列表。

语言和区域设置支持

每个 App Action BII 支持的开发和测试区域设置列在内置 Intent 参考文档中。某些 BII 在开发者测试和用户通过 Assistant 触发方面具有不同的区域设置支持。