Dzięki akcji w aplikacji użytkownicy mogą przejść bezpośrednio do treści aplikacji, mówiąc np. „OK Google, pokaż mi menu Three Dot Cafe w ExampleApp”. Ta funkcja nazywa się precyzyjnymi linkami i ułatwia użytkownikom wykonywanie zadań w aplikacji.
Aby spełnić tego rodzaju prośbę, Asystent Google generuje precyzyjny link do treści dopasowanych do treści w Twojej aplikacji. Jeśli aktywnie udostępniasz swoją witrynę za pomocą treści lub informacji o produktach, a precyzyjne linki w aplikacji są uporządkowane wokół tych publicznych treści z internetu, możesz skonfigurować Asystenta tak, aby pobierał adresy URL z Twojej witryny do realizacji działań, korzystając z zasobów reklamowych.
Internetowy asortyment to lokalizacja witryny zawierającej adresy URL produktów obsługiwanych przez Twoją aplikację. Gdy użytkownik wywołuje działanie w aplikacji, Asystent dopasowuje zapytanie użytkownika, np. „Three Dot Cafe”, do odpowiednich adresów URL w indeksie wyszukiwarki Google witryny podanej w shortcuts.xml
dotyczącej aplikacji na Androida.
Korzyści
Zasoby reklamowe w internecie zapewniają korzyści w przypadku aplikacji z dużymi, regularnie aktualizowanymi listami produktów, które użytkownicy wyświetlają lub zamawiają w aplikacji:
Dane o asortymencie w internecie znajdują się w Twojej witrynie w przeciwieństwie do danych o wbudowanych zasobach reklamowych, które przechowują listy produktów w aplikacji. Zezwolenie Asystentowi na dostęp do danych z sieci pozwala uniknąć ryzyka gromadzenia nieaktualnych danych o asortymencie, które można aktualizować tylko po opublikowaniu nowej wersji aplikacji.
Wbudowany asortyment może zawierać maksymalnie 1000 produktów. Z kolei internetowe zasoby reklamowe nie mają limitu produktów i mogą się rozwijać w zależności od potrzeb.
Zasoby reklamowe w internecie mogą uprościć logikę aplikacji, umożliwiając realizację tylko przewidywalnych adresów URL treści pobieranych z Twojej witryny. Jeśli natomiast zasoby reklamowe nie są skonfigurowane, Asystent generuje precyzyjne linki na potrzeby realizacji, mapując parametry intencji na zmienne w szablonie adresu URL. Realizacja musi następnie przeanalizować ten dynamicznie generowany adres URL, aby określić, czy użytkownik zażądał obsługiwanego elementu w Twojej aplikacji.
Jak to działa
W trakcie akcji w aplikacji Asystent tworzy precyzyjne linki do jej zawartości za pomocą wbudowanych intencji (BII), które określasz w shortcuts.xml
. Asystent korzysta z przetwarzania języka naturalnego, aby identyfikować odpowiednie elementy w żądaniu użytkownika i wyodrębniać je do parametrów BII. Następnie Asystent generuje precyzyjny link z parametrami na podstawie konfiguracji realizacji w shortcuts.xml.
Dostępne są 3 metody generowania precyzyjnych linków do realizacji:
- Mapowanie parametrów: mapuje parametry intencji na obiekty zastępcze w szablonie adresu URL realizacji.
- Wbudowane zasoby reklamowe: dopasowuje parametry intencji do listy obsługiwanych
entities
zdefiniowanych w aplikacji. - Zasoby reklamowe: dopasowuje parametry intencji do treści znalezionej w indeksie wyszukiwarki Google danej witryny.
Internetowe zasoby reklamowe to zdefiniowany przez dewelopera wzorzec adresu URL witryny, np. https://www.exampleapp.com/restaurants/.*
, który reprezentuje zestaw encji obsługiwanych przez aplikację.
Jeśli w przypadku internetowych zasobów reklamowych jest skonfigurowany parametr BII, Asystent wysyła zapytanie do witryny, aby dopasować encję do zapytania użytkownika. Następnie Asystent przekazuje do Twojej realizacji wyniki adresów URL pasujące do skonfigurowanego wzorca adresu URL, np. https://www.exampleapp.com/restaurants/three-dot-cafe
.
![](https://developer.android.com/static/guide/app-actions/images/web-inventory-flow.png?authuser=7&hl=pl)
Obsługiwane intencje wbudowane
Internetowe zasoby reklamowe są obsługiwane w przypadku określonych parametrów intencji przez te identyfikatory BI:
- [
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
]
Dodaj internetowe zasoby reklamowe
Gdy określisz obsługiwany wskaźnik BII, możesz włączyć go w internetowych zasobach reklamowych, aktualizując shortcuts.xml
o szczegóły swojej witryny. Plik shortcuts.xml
to zasób w projekcie na Androida, w którym definiujesz identyfikatory BII mapujące funkcje aplikacji i to, w jaki sposób każdy BII ma generować precyzyjne linki do realizacji Twojej aplikacji. Aby dowiedzieć się więcej na temat shortcuts.xml
, zobacz Tworzenie shortcuts.xml.
Aby używać internetowych zasobów reklamowych w obsługiwanym BII, wykonaj te czynności:
W pliku
shortcuts.xml
swojej aplikacji dodaj tag<capability>
z atrybutemandroid:name
ustawionym na nazwę BII, którą obsługujesz z internetowymi zasobami reklamowymi, np.actions.intent.ORDER_MENU_ITEM
.W tagu
<capability>
dodaj tag<intent>
z atrybutemandroid:action
ustawionym na nazwę widoku, który ma zostać aktywowany przez tę intencję.W tym samym tagu
<intent>
dodaj tag<parameter>
i ustaw jego atrybutandroid:name
na parametr BII, który najbardziej odpowiada elementowi opisanemu na Twoich stronach internetowych. Jeśli na przykład podajesz internetowe zasoby reklamowe dlaORDER_MENU_ITEM
, łącz strony menu z elementemmenuItem.name
.W nowym tagu
<parameter>
dodaj tag<data>
i ustaw jego atrybutandroid:pathPattern
na wzorzec adresu URL ścieżki, której chcesz używać na potrzeby internetowych zasobów reklamowych.
Gdy skonfigurujesz shortcuts.xml
według tych instrukcji, Asystent będzie mógł pobierać treści internetowe z indeksu wyszukiwarki Google na podstawie wzorca adresu URL podanego w atrybucie android:pathPattern
. Następnie Asystent podaje wartość adresu URL Twojej realizacji, wykorzystując wyniki pasujące do zdefiniowanego przez Ciebie wzorca ścieżki adresu URL. Na podstawie adresu URL podanego przez Asystenta aplikacja przekierowuje użytkownika do określonego miejsca w aplikacji.
Na przykład Twoja witryna zawiera informacje o produktach, których ścieżka adresu URL zaczyna się od https://www.examplecafe.com/items/
. Używasz wartości pathPattern
https://www.examplecafe.com/items/.*
, a Asystent używa tego wzorca adresu URL podczas wyszukiwania w internecie, aby znaleźć adres URL realizacji, np. https://www.examplecafe.com/items/item123
.
Jeśli Asystent znajdzie odpowiedni adres URL zasobów reklamowych w internecie, poda go w polu <data>
intencji realizacji, tak jakby był to precyzyjny link. Użyj metody getData()
intencji, aby uzyskać adres URL jako obiekt Uri
. Aktywność w aplikacji, która otrzymuje intencję, odpowiada za interpretację adresu URL i aktywowanie odpowiedniego interfejsu aplikacji.
Przykładowy skrót.xml
Ten przykład definiuje usługę ORDER_MENU_ITEM
BII, która udostępnia internetowe zasoby reklamowe do zwracania wyników adresów URL w przypadku żądań zawierających parametr 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>
W powyższym przykładzie właściwość pathPattern
została określona dla menuItem.name
, co spowoduje, że Asystent będzie zwracać tylko te adresy URL, które pasują do wzorca adresu URL: https://www.examplecafe.com/items/.*
Więcej przykładów shortcuts.xml
BII, które obsługują internetowe zasoby reklamowe, znajdziesz w dokumentacji referencyjnej.
Obsługa kreacji zastępczych w przypadku brakujących wyników
Jeśli wyniki dotyczące internetowych zasobów reklamowych nie są zwracane do realizacji, aplikacja powinna wdrożyć logikę awaryjną, aby wykonać działanie tak, aby zapewnić użytkownikom jak najlepsze wrażenia. Możliwe przyczyny braku wyników:
- Brak parametru intencji: użytkownik pominął oczekiwany parametr w zapytaniu lub Asystent nie zrozumiał parametru w żądaniu użytkownika.
- Brak wyniku adresu URL: Asystent nie mógł znaleźć w Twojej witrynie elementu pasującego do zapytania użytkownika.
Brakujące wartości parametrów możesz obsłużyć, definiując wiele elementów <intent>
funkcji. Jeśli Asystent nie może spełnić pierwszej intencji,
wraca do następnej i tak dalej.
Intencje zastępcze nie powinny wymagać parametrów. Zamiast tego powinni wypełniać tę funkcję bardziej ogólnym precyzyjnym linkiem, np. wyświetlać wyniki wyszukiwania dla danego zapytania.
W przykładzie shortcuts.xml
ORDER_MENU_ITEM
BII definiuje 2 realizacje: pierwsza wymaga adresu URL od parametru menuItem.name
. Drugie polecenie nie wymaga żadnych parametrów i przekierowuje użytkownika na stronę ze wszystkimi pozycjami menu.
<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>
Jeśli adres URL zasobów reklamowych nie jest zwracany, treść zapytania użytkownika może być używana w intencjach zastępczych, np. do wyświetlania wyników wyszukiwania.
W przykładzie poniżej shortcuts.xml
zdefiniowano 2 elementy intencji:
- Pierwszy z nich wymaga precyzyjnego linku do internetowych zasobów reklamowych z parametru
menuItem.name
. - Jeśli precyzyjny link nie zostanie zwrócony, druga intencja wyświetla wyniki wyszukiwania z użyciem zapytania użytkownika z usługi
menuItem.name
(jeśli występuje).
<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>
Dodaj wyszukiwanie w aplikacji za pomocą internetowych zasobów reklamowych
Możesz umożliwić użytkownikom wyszukiwanie treści internetowych w Twojej aplikacji, łącząc internetowe zasoby reklamowe z implementacją actions.intent.GET\_THING
BII.
Ta metoda BII wyszukuje treści lub elementy za pomocą domyślnej funkcji wyszukiwania w aplikacji, co umożliwia użycie zapytań takich jak: „OK Google, pokaż mi wycieczki do wodospadów w SampleApp”. Jeśli skonfigurujesz internetowe zasoby reklamowe dla parametru funkcji thing.name
przekazywanego przez GET_THING
BII, na potrzeby realizacji będą przekazywane pasujące wyniki encji z Twojej witryny.
Przykłady internetowych zasobów reklamowych shortcuts.xml
znajdziesz w dokumentacji GET\_THING
BII.
Testowanie internetowych zasobów reklamowych
Gdy zdefiniujesz zasoby reklamowe w internecie na potrzeby realizacji BII, Asystent wygeneruje precyzyjny link, korzystając z wyników z internetu pasującego do wzorca urlTemplate
zdefiniowanego przez Ciebie dla określonego parametru BII. Jeśli nie można znaleźć wyniku z internetowych zasobów reklamowych, Asystent wygeneruje URL pasujący do wzorca urlTemplate
intencji zastępczej. Aby przetestować implementację internetowych zasobów reklamowych, sprawdź, czy linki podawane przez Asystenta to adresy URL zgodne z wzorcami urlTemplate
zasobów reklamowych w internecie.
W przykładzie ORDER_MENU_ITEM
BII Asystent generuje linki do realizacji asortymentu w internecie pasujące do wzorca urlFilter
określonego w parametrze menuItem.name
, np. https://www.examplecafe.com/items/nuggets
. Druga intencja pobiera wartość menuItem.name
i wykonuje wyszukiwanie, jeśli pierwsza intencja nie pasuje do wzorca adresu URL.
<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>
Za pomocą narzędzia App Actions Test Tool możesz przetestować internetowe zasoby reklamowe na urządzeniu fizycznym lub wirtualnym.
Aby użyć narzędzia testowego, wykonaj następujące czynności:
- Połącz urządzenie testowe z uruchomioną aplikacją.
- W Android Studio wybierz Narzędzia > Działania w aplikacji > Narzędzie do testowania działań w aplikacji.
- Kliknij Utwórz podgląd.
- W Android Studio uruchom aplikację na urządzeniu testowym.
- Aby przetestować akcję w aplikacji, użyj aplikacji Asystent na urządzeniu testowym. Powiedz na przykład „OK Google, zamów nuggety w ExampleCafe”.
- Obserwuj działanie swojej aplikacji lub użyj debugera Android Studio, aby potwierdzić oczekiwane działanie.