Niestandardowi odbiorcy o podobnych zamiarach

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.