內嵌清單

當您為 Android 應用程式實作應用程式動作時, 不必處理主題變化版本的要求舉例來說,您可以說出 健身應用程式實作 START_EXERCISE 內建意圖 (BII), 使用者只要向 Google 助理下達指令,就能展開各種健身活動,例如: 「Ok Google,在範例應用程式上開始跑步。」

如要執行此意圖,要求比對邏輯才能處理每個 運動的類型,包括「慢跑」等變化形式「短跑」或「比賽」 隨著支援的運動增加,此邏輯很快就變得繁瑣。

若是使用支援的 BII (例如 START_EXERCISE),就能避免進行複雜的比對 邏輯脈絡和邏輯內嵌目錄是一組靜態 在 shortcuts.xml 中定義的 Android 捷徑,代表功能和內容 。

每個捷徑都包含項目 ID 和同義詞清單 代表使用者可能參照商品的各種方式。在叫用期間 BII 會比較使用者提供的 BII 參數與同義詞清單。如果 比對時,BII 參數就會更新為相符捷徑的項目 或 ID。

內嵌清查可讓 Google 助理簡化 BII 參數 應用程式動作叫用期間提供給應用程式的值。

內嵌清查功能就像 BII 參數的對照表一樣 透過各種方式說明使用者在應用程式中提及功能或內容的方式 使用您定義的商品 ID可簡化應用程式的要求比對程序 讓您的執行要求預期 BII 提供商品 ID 參數。

內嵌目錄使用者流程圖
圖 1.使用 START_EXERCISE 功能的流程圖 內嵌清查,用於解讀使用者提供的健身名稱 (僅支援支援) 應用程式中的運動類型。

限制和替代方案

內嵌目錄快速鍵具有下列限制:

  • 捷徑限制:最多只能包含 1,000 個內嵌目錄快速指令 個別應用程式的定義
  • 同義詞限制:每個內嵌目錄捷徑最多可包含 20 個 同義詞值。
  • 靜態定義:內嵌目錄捷徑會以靜態方式宣告 shortcuts.xml,只有發布新的 新的應用程式版本

有鑑於靜態設定的需求,內嵌清查最適合 適合將不常變更的非個人化應用程式資訊, Google 助理,例如菜單品項、公車路線或飲品尺寸。對於其他類型的 不妨考慮以下替代方案:

  • 網站目錄:允許 Google 助理查詢公開網路內容, 將使用者查詢與支援的應用程式內容 ID 進行比對網站目錄 查詢作業會在叫用期間即時發生, 產品目錄、社群媒體貼文和其他經常更新內容的內容 。

  • 動態捷徑:擴充個人化應用程式內容的目錄 。動態捷徑可讓使用者快速重播常用項目 動作,例如透過訂餐應用程式重新訂購喜愛的飲品,或是 在筆記應用程式叫出購物清單

建立內嵌目錄

內嵌清查能讓 Google 助理輕鬆 翻譯使用者要求應用程式內容和功能的不同方式 加到應用程式預期的可預測 ID適用對象 舉例來說,假設您的應用程式提供使用者能開始使用的各種健身課程 ,而您的應用程式預期使用者會針對 相同的運動類型:

  • 「Ok Google,在範例應用程式上開始跑步。」
  • Ok Google,使用範例應用程式開始慢跑。

在內嵌目錄捷徑中,您將 shortcutId 設為 "CARDIO_RUN"。 應用程式預期的運動 ID。接著指定「run」和 「慢跑」做為與 shortcutId 相關聯的同義詞。那麼,當使用者觸發事件時 使用上述 ID 來觸發應用程式動作時,Google 助理會使用這個 ID "CARDIO_RUN",用於產生執行要求意圖。

下列 app/res/shortcuts.xml 範例檔案的程式碼片段實作 將:

<capability android:name="actions.intent.START_EXERCISE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
    </capability-binding>
</shortcut>

在上述範例中,內嵌目錄 shortcut 會宣告 <capability-binding> 元素中的 <parameter-binding> 標記, 將其繫結至exercise.name <capability>

字串陣列資源 @array/run_names 可指定在 Google 助理可辨識的res/values/arrays.xml,並對應至 "CARDIO_RUN" 個項目 ID:

<!-- Synonym values for "CARDIO_RUN" inline inventory -->
<resources>
  <string-array name="run_names">
    <item>Run</item>
    <item>Jog</item>
    <item>Sprint</item>
  </string-array>
</resources>

如果為功能提供 <url-template>,則適用於shortcutId 產生的網址會插入相應的 預留位置。以下範例程式碼 app/res/shortcuts.xml 檔案會實作此案例:

<capability android:name="actions.intent.START_EXERCISE">
  <intent>
    <url-template android:value="myapp://workout{?exercise}" />
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
</shortcut>

在上述範例中,Google 助理會產生執行要求深層連結 myapp://workout?exercise=CARDIO_RUN

使用快速指令意圖的執行要求

根據預設,捷徑會提供相符內嵌目錄的 shortcutId 值設為捷徑繫結的 capabilityintent,如宣告 捷徑的 <capability-binding> 標記中。你可以 或者,指定直接用於捷徑本身定義的 intent<shortcut-fulfillment> 標記新增至 capability

app/res/shortcuts.xml 範例檔案中的下列程式碼實作 快速執行要求:

<capability android:name="actions.intent.START_EXERCISE">
  <shortcut-fulfillment>
    <parameter android:name="exercise.name"/>
  </shortcut-fulfillment>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
  <intent android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</shortcut>

在上述範例中,如果使用者查詢與內嵌目錄值相符 對於 exercise.name 參數,<shortcut-fulfillment> 標記 會指定將繫結捷徑的 intent 用於執行要求。

適用於開放式應用程式功能 BII 的內嵌目錄

雖然內嵌目錄通常是 BII 的選用功能, 但某些 BII 需要支援,例如 OPEN_APP_FEATURE。這個 使用者可以透過常用的 BII,深層連結到特定的應用程式功能 取得支援 開啟應用程式功能 BII 需要應用程式功能名稱的內嵌目錄,才能 在使用者要求深層連結之前,驗證該功能是否確實存在

app/res/shortcuts.xml 範例檔案中的下列程式碼實作 使用單一捷徑代表應用程式訂單狀態功能的 BII:

<capability android:name="actions.intent.OPEN_APP_FEATURE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="feature"
       android:key="featureParam" />
  </intent>
  <!-- Required fallback fulfillment to handle when parameters are missing from user query. -->
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="HOME_SCREEN"
       android:key="featureParam" />
  </intent>
</capability>

<!-- Inline inventory for OPEN_APP_FEATURE. -->

<shortcut android:shortcutId="ORDER_STATUS">
  <capability-binding android:key="actions.intent.OPEN_APP_FEATURE">
    <parameter-binding
      android:key="feature"
      android:value="@array/order_status_names" />
    </capability-binding>
</shortcut>

res/values/arrays.xml 中的字串陣列資源, @array/order_status_names,會指定 此功能的同義詞:

<resources>
  <string-array name="order_status_names">
    <item>Order status</item>
    <item>Orders</item>
    <item>Order history</item>
  </string-array>
</resources>

有了上述功能,Google 助理就能提供各式各樣的 相同特徵的詞組

  • 「Ok Google,在範例應用程式上顯示我的訂單狀態。」
  • 「Ok Google,在範例應用程式上顯示我的訂單。」
  • 「Ok Google,在範例應用程式上顯示我的訂單記錄。」

測試內嵌目錄

檢查 Google 助理提供的 BII 參數值,藉此測試庫存 同時執行相關的應用程式動作功能。內嵌 廣告空間的運作方式,是針對綁定廣告空間的 BII,替換使用者提供的值 參數,其為相符的內嵌目錄捷徑的 shortcutId

適用對象 舉例來說,START_EXERCISE BII 功能可能會使用內嵌目錄 翻譯使用者提供的 BII 參數「run」與相應的運動 ID,"CARDIO_RUN"

Google 助理外掛程式可讓您預覽內嵌清查應用程式 測試裝置上的 Google 助理動作。如何使用外掛程式測試您的庫存 步驟如下:

  1. 使用以下項目,設定 BII 功能的商品目錄繫結參數: 與內嵌目錄相關的同義詞值。
  2. 透過外掛程式觸發 BII,在測試裝置上叫用該 BII。
  3. 檢查 Google 助理提供給 應用程式動作執行要求。