有了應用程式動作,使用者只需要說出「Ok Google,用範例應用程式顯示 Three Dot Cafe 的菜單」這類指令,即可直接取得應用程式內容。這項功能稱作深層連結,供使用者更輕鬆使用您的應用程式。
為了執行這類要求,Google 助理會為應用程式內的相符內容產生深層連結。如果您會主動維護網站,提供各種內容或產品資訊,且應用程式內的深層連結都是依照公開網站內容建置而成,即可設定讓 Google 助理透過網站目錄,針對動作的執行要求從網站擷取網址。
網站目錄意指應用程式支援的項目網址所在的網站位置。如果您在 Android 應用程式的 shortcuts.xml
內指定了網站,當使用者叫用應用程式動作,Google 助理就會將使用者查詢內容 (如「Three Dot Cafe」) 與網站 Google 搜尋索引中的對應網址進行比對。
優點
如果應用程式設有會定期更新的大型項目清單,供使用者在應用程式內查看或點購這些項目,則使用網站目錄就有所助益:
網站目錄資料會留在您的網站內,不像內嵌目錄資料會在應用程式內儲存項目清單。內嵌目錄資料只能藉由發布新版應用程式完成更新,可能會有過時的風險,允許 Google 助理存取網站資料即可避免。
內嵌目錄的上限為 1,000 筆項目。相比之下,網站目錄沒有項目數量限制,可以隨您的需求擴充。
網站目錄可以讓執行要求只處理網站擷取而來的可預測內容網址,藉此簡化應用程式的邏輯。相對來說,如果您未設定目錄,Google 助理會將意圖參數對應至網址範本中的變數,進而產生執行要求的深層連結。如此一來,您的執行要求便需要分析這個動態產生的網址,才能判定使用者是否曾要求取得應用程式中支援的實體。
運作方式
在應用程式動作期間,Google 助理會透過您在 shortcuts.xml
定義的內建意圖 (BII) 建立與應用程式內容的深層連結。Google 助理會利用自然語言處理方式辨識使用者要求的相關項目,將其擷取成 BII 參數,然後根據 shortcuts.xml.
內的執行要求設定,利用參數產生深層連結。
有三種方法可產生執行要求的深層連結:
網站目錄是由開發人員定義的網站網址模式 (例如 https://www.exampleapp.com/restaurants/.*
),代表某應用程式支援實體的實體集。
如果您為網站目錄設定了 BII 參數,Google 助理會查詢網站,以便執行和使用者查詢內容相符的實體。然後,Google 助理會將符合設定網址模式 (如 https://www.exampleapp.com/restaurants/three-dot-cafe
) 的網址結果傳遞給執行要求。
![](https://developer.android.com/static/guide/app-actions/images/web-inventory-flow.png?authuser=0000&hl=zh-tw)
支援的內建意圖
以下 BII 可支援網站目錄的特定意圖參數:
- [
actions.intent.CREATE_REVIEW
] - [
actions.intent.GET_NEWS_ARTICLE
] - [
actions.intent.GET_REVIEW
] - [
actions.intent.GET_THING
] - [
actions.intent.ORDER_MENU_ITEM
] - [
actions.intent.GET_EXERCISE_PLAN
] - [
actions.intent.GET_DIGITAL_DOCUMENT
] - [
actions.intent.GET_ITEM_LIST
] - [
actions.intent.GET_OFFER
] - [
actions.intent.CREATE_OFFER
] - [
actions.intent.GET_PRODUCT
] - [
actions.intent.UPDATE_CART
] - [
actions.intent.CREATE_SOCIAL_MEDIA_CONNECTION
] - [
actions.intent.GET_IMAGE_OBJECT
] - [
actions.intent.GET_SOCIAL_MEDIA_POSTING
] - [
actions.intent.GET_SOCIAL_MEDIA_PROFILE
] - [
actions.intent.CREATE_TAXI_RESERVATION
] - [
actions.intent.CREATE_FLIGHT_RESERVATION
] - [
actions.intent.CREATE_LODGING_RESERVATION
] - [
actions.intent.GET_LOCAL_BUSINESS
] - [
actions.intent.GET_RESERVATION
] - [
actions.intent.UPDATE_RESERVATION
]
新增網站目錄
找出支援的 BII 後,即可更新 shortcuts.xml
並加入網站詳細資料,為網站目錄啟用該 BII。shortcuts.xml
檔案是 Android 專案資源,您可以在此定義對應至應用程式功能的 BII,以及各 BII 應該如何產生供應用程式執行的深層連結。如要進一步瞭解 shortcuts.xml
,請參閱「建立 shortcuts.xml」。
若要讓支援的 BII 使用網站目錄,請按照以下步驟操作:
在應用程式的
shortcuts.xml
檔案中新增<capability>
標記,並將android:name
屬性設為您要使用網站目錄處理的 BII 名稱,例如:actions.intent.ORDER_MENU_ITEM
。在
<capability>
標記中新增<intent>
標記,並將android:action
屬性設定為此意圖要啟用的檢視畫面名稱。在同一個
<intent>
標記中新增<parameter>
標記,並將其android:name
屬性設定為最接近網頁描述實體的 BII 參數。舉例來說,為ORDER_MENU_ITEM
提供網站目錄時,您應該將選單頁面連結到menuItem.name
。在新的
<parameter>
標記中新增<data>
標記,並將其android:pathPattern
屬性設為您希望網站目錄使用的路徑網址模式。
您按照上述步驟設定 shortcuts.xml
後,表示您在 android:pathPattern
屬性中提供了網址模式,這樣 Google 助理就能從該模式的 Google 搜尋索引中擷取網站內容,然後使用和您定義的網址路徑模式相符的結果,為執行要求提供網址值。接著,您的應用程式會根據 Google 助理提供的網址資料,將使用者導向應用程式的特定位置。
舉例來說,您的網站內有網址路徑開頭為 https://www.examplecafe.com/items/
的產品清單。您使用 pathPattern
值 https://www.examplecafe.com/items/.*
,而 Google 助理會在網頁搜尋中使用這個網址模式找出執行要求網址,例如 https://www.examplecafe.com/items/item123
。
Google 助理找到相符的網站目錄網址後,便會在執行要求意圖的 <data>
欄位中提供這筆網址,如同深層連結一樣。請使用意圖的 getData()
方法取得網址,當做 Uri
物件。接收意圖的應用程式活動會負責解析網址,並啟用合適的應用程式使用者介面。
shortcuts.xml 範例
以下範例會定義一項 ORDER_MENU_ITEM
BII,此 BII 會提供網站目錄,以便為含有 menuItem.name
BII 參數的要求傳回網址結果:
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<!-- Define URL match pattern in the pathPattern data field -->
<parameter android:name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*"/>
</parameter>
</intent>
</capability>
</shortcuts>
在以上範例中,我們為 menuItem.name
指定了 pathPattern
,指示 Google 助理僅傳回符合以下網址模式的網址:https://www.examplecafe.com/items/.*
如需查看更多 shortcuts.xml
範例,瞭解何謂支援網路目錄的 BII,請參閱參考說明文件。
遺失搜尋結果的備用處理方式
網站目錄結果不會傳回執行要求時, 應用程式應實作備用邏輯,以最佳 使用者體驗導致結果遺失的狀況包括:
- 缺少意圖參數:使用者在查詢內容中省略預期的參數,或是 Google 助理無法理解使用者要求中的參數。
- 缺少網址結果:Google 助理無法在您的網站中找到符合使用者查詢內容的實體。
您可以為單一功能定義多個 <intent>
元素,處理遺失的參數值。如果 Google 助理無法滿足第一項意圖,便會進入備用的下一個意圖,以此類推。
備用意圖不應要求取得參數,而應利用更通用的深層連結執行功能,例如顯示使用者查詢內容的搜尋結果。
在以下的 shortcuts.xml
範例中,ORDER_MENU_ITEM
BII 定義了兩個執行要求:第一個預期從 menuItem.name
參數取得網址,第二個不需要參數,並會將使用者轉送到顯示所有選單項目的頁面。
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<parameter android:name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*"/>
</parameter>
</intent>
<!-- Fallback intent with no required parameters -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.ViewMenuActivity">
<url-template android:value="myapp://app.examplecafe.com/menu/all-items" />
</intent>
</capability>
在未傳回網站目錄網址的情況下,使用者的內容 系統仍可能會將查詢用於備用意圖,例如顯示搜尋 也就是預測結果
以下的 shortcuts.xml
範例定義了兩個意圖元素:
- 第一個需要
menuItem.name
參數的網站目錄深層連結。 - 如果未傳回深層連結,第二個意圖會使用
menuItem.name
的使用者查詢內容 (如有) 顯示搜尋結果。
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<parameter android:name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*" />
</parameter>
</intent>
<!-- Fallback intent displaying search results, using "menuItem.name" -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.SearchMenuActivity">
<parameter-mapping android:name="menuItem.name" android:key="food" />
<url-template android:value="https://www.examplecafe.com/search?q={?food}" />
</intent>
</capability>
透過網站目錄新增應用程式內搜尋功能
您可以結合網路目錄與 actions.intent.GET\_THING
BII 的實作方式,讓使用者在應用程式中搜尋網路內容。
這個 BII 會依應用程式預設的應用程式搜尋功能來搜尋內容或實體,以便使用「Ok Google,用範例應用程式顯示瀑布步道」這類查詢內容。針對 GET_THING
BII 傳遞的 thing.name
功能參數設定網站目錄後,系統會傳遞網站內的相符實體結果當做執行要求。
如需網路目錄的 shortcuts.xml
範例,請參閱「GET\_THING
BII 參考資料」。
測試網路目錄
您為 BII 執行要求定義網站目錄後,表示您為指定的 BII 參數定義了 urlTemplate
模式,這樣 Google 助理就能使用和該模式相符的網站結果產生深層連結。如果找不到網站目錄結果,Google 助理會產生和備用意圖 urlTemplate
模式相符的網址。您可以驗證 Google 助理提供的連結是否為與網站目錄 urlTemplate
模式相符的網址,藉此測試網站目錄的實作情形。
在以下 ORDER_MENU_ITEM
BII 範例中,Google 助理會產生網站目錄執行要求連結,此連結與 menuItem.name
參數中指定的 urlFilter
模式相符,例如:https://www.examplecafe.com/items/nuggets
。第二個意圖則採用 menuItem.name
的值,並在第一個意圖與網址模式不符時執行搜尋。
<capability android:name="actions.intent.ORDER_MENU_ITEM">
<!-- web inventory fulfillment -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.OrderMenuItemActivity">
<parameter name="menuItem.name">
<data android:pathPattern="https://www.examplecafe.com/items/.*" />
</parameter>
</intent>
<!-- search intent -->
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.MenuSearchActivity">
<parameter-mapping android:name="menuItem.name" android:key="food" />
<url-template android:value="https://www.examplecafe.com/search?q={?food}" />
</intent>
</capability>
您可以使用應用程式動作測試工具,在實體或虛擬裝置上測試網站目錄。
如要使用這個測試工具,請按照下列步驟操作:
- 連結到執行應用程式的測試裝置。
- 在 Android Studio 中,依序前往「Tools」>「App Actions」>「App Actions Test Tool」。
- 按一下「Create Preview」。
- 在 Android Studio 中,使用您的測試裝置執行應用程式。
- 在測試裝置上使用 Google 助理應用程式,確認應用程式動作的呈現。比方說,您可以說類似「Ok Google,在範例咖啡廳點雞塊」的句子。
- 觀察應用程式行為,或使用 Android Studio 偵錯工具確認是否達到想要的動作結果。