Każda aplikacja jest inna. Nie wszystkie funkcje są zgodne z dostępnymi Intencja wbudowana w działania w aplikacji (BII). W sytuacjach, gdy BII dla funkcji aplikacji, możesz zamiast tego użyć niestandardowego Rozszerzanie aplikacji za pomocą działań w aplikacji.
Podobnie jak BII, niestandardowe intencje są zgodne z
Schemat shortcuts.xml
i działa jako
między Asystentem i zdefiniowanymi przez Ciebie realizacjami. Niestandardowy zakres dat
intencje mają też parametry intencji, które możesz zmapować
realizacji zamówień.
W przeciwieństwie do BII intencje niestandardowe wymagają wzorców zapytań, aby opisywać przykładowe zapytania, które może powiedzieć użytkownik. To podejście różni się od intencje wbudowane, które modelują typowe sposoby wyrażania zamiarów użytkowników.
Ograniczenia
Intencje niestandardowe mają te ograniczenia:
- Nazwa intencji niestandardowej nie może się zaczynać od
actions.intent
. - Nazwa niestandardowej intencji musi być niepowtarzalna wśród nazw niestandardowych odbiorców o podobnych zamiarach do aplikacji.
- Na potrzeby wyodrębniania parametrów przez Google dostępne są tylko niektóre typy danych Asystent (zobacz Obsługiwane typy).
- Intencje niestandardowe muszą zawierać przykłady użytecznych wzorców zapytań (patrz Wzorce zapytań).
- Każde zapytanie obsługuje maksymalnie 2 parametry tekstowe. Ten limit nie mają zastosowanie do innych typów danych.
- Niestandardowe intencje obsługują tylko język en-US. Oprócz tego urządzenie i Asystent ustawienia języka muszą być takie same.
Obsługiwane typy
Intencje niestandardowe obsługują następujące typy schema.org: wyodrębnianie parametrów:
https://schema.org/Text
https://schema.org/Date
https://schema.org/Time
https://schema.org/Number
Definiowanie działań w aplikacji z niestandardowymi intencjami
Tak jak w przypadku innych akcji w aplikacji, które korzystają z BII, możesz określić własny
intencja w elemencie <capability>
w
shortcuts.xml
Możliwości są określone w elemencie głównym <shortcuts>
. Gdy
zdefiniuj element <shortcuts>
, uwzględnij przestrzenie nazw
atrybuty, do których chcesz uzyskać dostęp, jak w tym przykładzie:
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
...
</shortcuts>
Podaj nazwę niestandardowej intencji w atrybucie android:name
.
odwołania do pliku zasobów wzorców zapytań w
queryPatterns
.
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<capability
android:name="custom.actions.intent.EXAMPLE_INTENT"
app:queryPatterns="@array/ExampleQueries">
<intent ...>
<url-template
android:value="http://custom.com{?number_of_items,item_name}" />
<parameter
android:name="number_of_items"
android:key="number_of_items"
android:mimeType="https://schema.org/Number" />
<parameter
android:name="item_name"
android:key="item_name"
android:mimeType="https://schema.org/Text" />
</intent>
</capability>
...
</shortcuts>
Nazwy intencji niestandardowych nie mogą się zaczynać od
actions.intent
, ponieważ ta przestrzeń nazw jest zarezerwowana dla BII. Zamiast tego, gdy
nadając nazwę intencji niestandardowych, użyj prefiksu
custom.actions.intent
, aby odróżnić niestandardowe intencje od obydwu
BII i intencje Androida,
działają inaczej.
Dla każdego parametru podaj obsługiwany typ schema.org.
który najlepiej opisuje znaczenie parametru. Na przykład możesz użyć
https://schema.org/Date
, aby opisać oczekiwaną datę otrzymania:
...
<intent>
<url-template android:value="https://example.com/appt{?apptType,date,time}" />
<parameter
android:name="date"
android:key="date"
android:mimeType="https://schema.org/Date" />
...
</intent>
...
Zdefiniuj skróty niestandardowych intencji w tym języku (shortcuts.xml
), używając tego samego formatu
jako skrótów do BII.
Ten kod opisuje akcję w aplikacji, która korzysta z wskazanej zapytania
w celu aktywowania intencji niestandardowej SCHEDULE_APPOINTMENT
i korzystania ze zdefiniowanego
zbiór wartości DRIVERS_LICENSE
i VEHICLE_REGISTRATION
dla apptType
.
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<capability
android:name="custom.actions.intent.SCHEDULE_APPOINTMENT"
app:queryPatterns="@array/scheduleApptQueries">
<intent ...>
<url-template android:value="https://example.com/appt{?apptType,date,time}" />
<parameter
android:name="date"
android:key="date"
android:mimeType="https://schema.org/Date" />
<parameter
android:name="time"
android:key="time"
android:mimeType="https://schema.org/Time" />
<!-- The following parameter has no type because the shortcuts are bound to it -->
<parameter android:name="apptType" android:key="apptType" />
</intent>
</capability>
<shortcut
android:shortcutShortLabel="Driver's License"
android:shortcutId="DRIVERS_LICENSE">
<capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
<parameter-binding
android:key="apptType"
android:value="@string/driversLicense" />
</capability-binding>
</shortcut>
<shortcut
android:shortcutsShortLabel="Vehicle Registration"
android:shortcutId="VEHICLE_REGISTRATION">
<capability-binding android:key="custom.actions.intent.SCHEDULE_APPOINTMENT">
<parameter-binding
android:key="apptType"
android:value="@string/vehicleRegistration" />
</capability-binding>
</shortcut>
</shortcuts>
Niestandardowe parametry intencji możesz konfigurować w ramach wbudowanych zasobów reklamowych,
który może służyć do kierowania wyodrębniania encji do zbioru obsługiwanych encji
określono w funkcji shortcuts.xml
.
Wzorce zapytań
Każda niestandardowa intencja, której używasz, wymaga zestawu zapytań oczekiwanych od użytkownika z tym zamiarem. W przeciwieństwie do BII, w którym zapytania modelowanych na podstawie typowych sposobów, w jakie użytkownicy wyrażają zadania, które próbują wykonać, czego szukają.
W pliku zasobów Androida (zwykle /res/values/strings.xml
) określ zapytanie
jako elementy w tablicy ciągów znaków. Gdy
Akcja w aplikacji jest wywoływana, Asystent Google porównuje zapytanie użytkownika
i wzorców zapytań w celu dopasowania do zamiaru realizacji transakcji użytkownika. Każde zapytanie
oznacza wyrażenie, które uznajesz za prawidłowe dla
o podobnych zamiarach.
Podając wzorce zapytań na potrzeby intencji niestandardowych, pamiętaj, że każdy wzorzec musi być zgodny jawne wywołanie, na przykład „otwórz Przykładowa aplikacja i” lub „uruchom przykładową aplikację i”. Weźmy na przykład te zapytania użytkowników:
- „OK Google, otwórz aplikację Przykładowa gra i zacznij robić ciasto”.
- „OK Google, otwórz aplikację Przykładowa gra i zacznij tworzyć szarlotkę”.
- „OK Google, uruchom Przykładowa gra i ułóż 5 ciast”.
- „OK Google, użyj aplikacji Przykładowa gra, aby wypiec ciasto 5 razy”.
Aby dopasować zapytania użytkowników, podaj wzorce zapytań zawierające część po frazie wywołania. Aby wyodrębnić informacje z (np. tekst lub liczba podana przez użytkownika), przypisujesz wartości odpowiedniego parametru intencji z obiektami zastępczymi we wzorcu zapytania.
Aby odwołać się do parametru we wzorcu zapytania, dodaj $
do nazwy parametru
we wzorcu. Aby na przykład utworzyć wartość zastępczą dla atrybutu
taki jak
<parameter name="date1" ...
(w: actions.xml
) lub
<parameter android:name="date1" ...
(w shortcuts.xml
), używasz $date1
.
Ten kod opisuje wzorce zapytań pasujące do poprzedniego użytkownika zapytań i wyodrębniania wartości nazw elementów oraz liczby elementów do utworzenia:
<resources>
<string-array name="ExampleQueries">
<item>start making a $text1</item>
<item>start making an $text1</item>
<item>craft $number1 $text1 items</item>
<item>produce $text1 $number1 times</item>
</string-array>
</resources>
Wzorce zapytań obsługują warunki warunkowe. Na przykład: set (an)? appointment
$date $time
. W tym przypadku zarówno „ustal termin rozmowy na dziś w południe”, oraz
„umów się na spotkanie dzisiaj w południe” to prawidłowe zapytania.