當您為 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,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
值設為捷徑繫結的 capability
的 intent
,如宣告
捷徑的 <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 助理動作。如何使用外掛程式測試您的庫存 步驟如下: