網站清查

透過應用程式動作,使用者只需要說出「Ok Google,用範例應用程式顯示 Three Dot Cafe 的菜單。」這類句子,即可直接前往應用程式內容。這項功能稱作深層連結,讓使用者可以用更輕鬆的方式使用您的應用程式。

為了執行這類要求類型,Google 助理會為應用程式內的相符內容產生深層連結。如果您會主動維護網站,提供各種內容或產品資訊,且應用程式內的深層連結都是公開的網站內容,即可設定讓 Google 助理使用網站清查擷取網站網址,做為動作的執行要求

所謂網站清查,便是應用程式支援的網站項目位置網址。當使用者叫用應用程式動作時,Google 助理會比對使用者查詢內容 (如「Three Dot Cafe」) 和您在 Android 應用程式 shortcuts.xml 內指定的網站 Google 搜尋索引的對應網址。

優點

若有應用程式設有既大型又需要定期更新的項目清單,且使用者需要在應用程式內檢視或訂購清單內容,那麼網站清查能對這類應用程式有所助益。

  • 網站清查資料會留在您的網站內,不像內嵌清查資料會在應用程式內儲存項目清單。允許 Google 助理存取網站資料,可以避免發生內嵌清查資料過時的問題,因為內嵌清查資料只能藉由發布新應用程式版本更新。

  • 內嵌清查的上限為 1,000 筆項目。而網站清查沒有項目數量限制,可以隨您的需求擴充。

  • 網站清查可以讓執行要求只處理網站擷取而來的可預測內容網址,藉此簡化應用程式的邏輯。而如果您並未設定清查,Google 助理會藉由將意圖參數對應至網址範本變數的方式產生執行要求的深層連結。如此一來,您的執行要求便需要分析這個動態產生的網址,才能判定使用者是否要求取得應用程式支援的實體。

運作方式

在應用程式動作期間,Google 助理會透過您在 shortcuts.xml 定義的內建意圖 (BII) 深層連結到應用程式內容。Google 助理會使用自然語言處理辨識使用者要求內的相關項目,並擷取成 BII 參數。然後 Google 助理會使用參數,並根據 shortcuts.xml. 內的執行要求設定產生深層連結。

有三種方法可產生執行要求的深層連結:

  • 參數對應:將意圖參數對應到執行要求網址範本內的預留位置。
  • 內嵌清查:比對意圖參數和應用程式內定義的支援 entities
  • 網站清查:比對意圖參數和網站 Google 搜尋索引中找到的內容。

網站清查是由開發人員定義的網站網址模式 (例如 https://www.exampleapp.com/restaurants/.*),代表某應用程式支援的實體的實體集。

如果有 BII 參數是按照網站清查設定,則 Google 助理會查詢網站內容,以便執行和使用者查詢內容相符的實體。然後,Google 助理會傳遞符合設定網址模式 (如 https://www.exampleapp.com/restaurants/three-dot-cafe) 的網址結果給執行要求。

圖 1. 使用網站清查取得餐廳實體項目的 Google 助理查詢範例。

支援的內建意圖

以下 BII 可支援網站清查的特定意圖參數:

新增網站清查

辨識出支援的 BII 後,您即可更新 shortcuts.xml 並加入網站詳細資料,即可讓此 BII 使用網站清查。shortcuts.xml 檔案是 Android 專案資源,您可以在此定義對應至應用程式功能的 BII,以及各 BII 應該如何產生深層連結,以便供應用程式執行。若要進一步瞭解 shortcuts.xml,請見「建立 shortcuts.xml」。

若要讓支援 BII 使用網站清查,請按照以下步驟操作:

  1. 在應用程式 shortcuts.xml 檔案中新增 <capability> 標記,並將 android:name 屬性設定為您要使用網站清查處理的 BII 名稱,例如:actions.intent.ORDER_MENU_ITEM

  2. <capability> 標記中新增 <intent> 標記,並將 android:action 屬性設定為此意圖要啟用的檢視畫面名稱。

  3. 在同一個 <intent> 標記中新增 <parameter> 標記,並將其 android:name 屬性設定為最接近網頁描述實體的 BII 參數。舉例來說,為 ORDER_MENU_ITEM 提供網站清查時,您應該將選單頁面連結到 menuItem.name

  4. 在新的 <parameter> 標記中新增 <data> 標記,並將其 android:pathPattern 屬性設定為您希望網站清查使用的路徑網址模式。

您使用這些步驟設定 shortcuts.xml 之後,Google 助理即可從您在 android:pathPattern 屬性中提供的網址模式的 Google 搜尋索引中擷取網站內容了。然後,Google 助理會使用和您定義的網址路徑模式相符的結果,為執行要求提供網址值。接著,您的應用程式會根據 Google 助理提供的網址資料,將使用者導向到應用程式的特定位置。

舉例來說,您的網站內有網址路徑開頭為 https://www.examplecafe.com/items/ 的產品清單。您使用的是 pathPatternhttps://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>

在以上範例中,pathPattern 指定為 menuItem.name,讓 Google 助理只會回傳符合以下網址模式的網址:https://www.examplecafe.com/items/.*

更多 shortcuts.xml 範例請看支援網路清查的 BII 參考文件

遺失搜尋結果的備用處理方式

如果網站清查結果無法回傳給執行要求,此時應用程式應該要實作備份邏輯,以便執行動作,儘可能提供最佳的使用者體驗。導致結果遺失的狀況包括:

  • 缺少意圖參數:使用者在查詢內容中遺漏預期的參數,或是 Google 助理無法理解使用者要求裡的參數。
  • 缺少網址結果:Google 助理無法在您符合使用者查詢內容的網站中找到任何實體。

您可以為單一功能定義多個 intent 元素,藉此處理遺失的參數值。如果 Google 助理無法滿足第一項意圖,便會備用進入下一個意圖,以此類推。

備用意圖不應要求取得參數。而應該用更廣泛的深層連結執行功能,例如顯示使用者查詢內容的搜尋結果。

在以下的 shortcuts.xml 範例中,ORDER_MENU_ITEM BII 定義兩個執行要求:第一個預期從 menuItem.name 參數獲得網址。第二個不需要參數,並會轉送使用者前往顯示所有選單項目的頁面。

含有備用意圖的 shortcuts.xml

<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 範例定義了兩個意圖元素:

  1. 第一個需要 menuItem.name 參數的網站清查深層連結。
  2. 如果未傳回深層連結,第二個意圖則會顯示搜尋結果,並使用 menuItem.name 的使用者查詢內容 (如果有的話)。

含有搜尋備用的 shortcuts.xml

<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 執行要求定義網站清查之後,Google 助理便會使用和您為指定 BII 參數定義的 urlTemplate 模式相符的網站結果產生深層連結。如果 Google 助理找不到網站清查結果,便會產生和備用意圖 urlTemplate 模式相符的網址。您可以驗證 Google 助理提供的網址和網站清查 urlTemplate 模式是否相符,藉此測試網站清查的實作情形。

在以下 ORDER_MENU_ITEM BII 範例中,Google 助理按照 menuItem.name 參數指定的 urlFilter 模式,產生了相符的網站清查執行要求,例如:https://www.examplecafe.com/items/nuggets。第二個意圖擷取了 menuItem.name 的值,並在第一個意圖失敗時進行搜尋,以便符合網址模式。

含有搜尋意圖的 shortcuts.xml

<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>

在實體或虛擬裝置上,使用應用程式動作測試工具測試網站清查。

如要使用這個測試工具,請按照下列步驟操作:

  1. 連結到執行您的應用程式的測試裝置。
  2. 在 Android Studio 中,前往「Tools」(工具) >「App Actions」(應用程式動作)>「App Actions Test Tool」(應用程式動作測試工具)
  3. 按一下「Create Preview」(建立預覽)
  4. 在 Android Studio 中,使用您的測試裝置執行應用程式。
  5. 在測試裝置上使用 Google 助理應用程式,藉此測試應用程式動作。比方說,您可以說類似「Ok Google,在範例咖啡廳點雞塊。」的句子。
  6. 觀察應用程式行為,或使用 Android Studio 偵錯工具確認是否達到想要的動作結果。