Benutzerdefinierte Zielgruppen mit gemeinsamer Absicht

Jede App ist anders und nicht alle Funktionen entsprechen einem verfügbaren App Actions-integrierter Intent. Für Fälle, in denen keine einen BII für Ihre App-Funktionen haben, können Sie stattdessen einen benutzerdefinierten die Absicht, deine App mit App Actions zu erweitern.

Wie BIIs folgen auch benutzerdefinierte Intents shortcuts.xml-Schema und fungiert als Verbindungspunkte zwischen Assistant und Ihren definierten Auftragsausführungen. Benutzerdefiniert Intents haben auch Intent-Parameter, die Sie Parametern in Ihrem der entsprechenden Auftragsausführung.

Im Gegensatz zu BIIs sind für benutzerdefinierte Intents Abfragemuster erforderlich, um beschreiben Beispielabfragen von Nutzenden. Dieser Ansatz unterscheidet sich von integrierte Intents, die gängige Methoden zum Ausdrucken von Absichten von Nutzern abbilden.

Beschränkungen

Für benutzerdefinierte Intents gelten folgende Einschränkungen:

  • Der Name eines benutzerdefinierten Intents darf nicht mit „actions.intent“ beginnen.
  • Der Name eines benutzerdefinierten Intents darf unter den Namen für benutzerdefinierte Intents nur einmal vorkommen für Ihre App.
  • Für die Parameterextraktion durch Google stehen nur bestimmte Datentypen zur Verfügung Weitere Informationen zu den unterstützten Typen
  • Benutzerdefinierte Intents müssen Beispiele für verwendbare Abfragemuster enthalten (siehe Abfragemuster).
  • Jede Abfrage unterstützt maximal zwei Textparameter. Diese Beschränkung gilt nicht auf andere Datentypen anwenden.
  • Für benutzerdefinierte Intents wird nur US-Englisch unterstützt. Außerdem werden das Gerät und Assistant Spracheinstellungen müssen übereinstimmen.

Unterstützte Typen

Benutzerdefinierte Intents unterstützen die folgenden schema.org-Typen für Parameterextraktion:

  • https://schema.org/Text
  • https://schema.org/Date
  • https://schema.org/Time
  • https://schema.org/Number

App-Aktionen mit benutzerdefinierten Intents definieren

Wie bei anderen App Actions, die BIIs verwenden, definieren Sie eine benutzerdefinierte Intent im <capability>-Element in shortcuts.xml

Die Funktionen werden im Stammelement <shortcuts> definiert. Wenn Sie definiere dein <shortcuts>-Element und füge die Namespaces von Attribute, auf die Sie zugreifen möchten, wie im folgenden Beispiel gezeigt:

<shortcuts
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
  ...
</shortcuts>

Geben Sie im Attribut android:name den Namen des benutzerdefinierten Intents an. auf eine Abfragemuster-Ressourcendatei im 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>

Namen von benutzerdefinierten Intents dürfen nicht mit actions.intent, da dieser Namespace für BIIs reserviert ist. Wenn Sie stattdessen Benennen Sie Ihre benutzerdefinierten Intents, verwenden Sie das Präfix custom.actions.intent, um Ihre benutzerdefinierten Intents von beiden zu unterscheiden BIIs und Android Intents, anders funktionieren.

Geben Sie für jeden Parameter den unterstützten Schema.org-Typ an. die die Bedeutung des Parameters am besten beschreibt. So können Sie beispielsweise https://schema.org/Date für ein Datum, das Sie voraussichtlich erhalten werden:

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

Definieren Sie Tastenkombinationen für benutzerdefinierte Intents in shortcuts.xml im selben Format als Kürzel für BIIs.

Der folgende Code beschreibt eine App Action, die die referenzierte Abfrage verwendet Muster zum Auslösen des benutzerdefinierten Intents SCHEDULE_APPOINTMENT und verwendet eine definierte Satz von Werten, DRIVERS_LICENSE und VEHICLE_REGISTRATION, für die 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>

Sie können benutzerdefinierte Intent-Parameter mit Inline-Inventar konfigurieren, mit dem Sie die Entitätsextraktion an eine Reihe unterstützter Entitäten leiten können in shortcuts.xml angegeben.

Abfragemuster

Für jeden benutzerdefinierten Intent sind bestimmte Abfragen erforderlich, diese Absicht. Dieser Ansatz unterscheidet sich von BIIs, bei denen Abfragen bereits modelliert werden kann, mit denen Nutzende Aufgaben, die sie erledigen möchten, nach Informationen suchen.

Geben Sie in einer Android-Ressourcendatei (normalerweise /res/values/strings.xml) die Abfrage an Muster als Elemente in einem String-Array. Wenn Ihre App Action aufgerufen wird, gleicht Google Assistant die Nutzeranfrage mit deiner Abfragemuster als Teil des Abgleichs der Absicht des Nutzers für die Auftragsausführung hinzufügen. Jede Abfrage Muster, das Sie angeben, eine Wortgruppe darstellt, die Sie für den der entsprechenden benutzerdefinierten Zielgruppe mit gemeinsamer Absicht.

Beim Bereitstellen von Abfragemustern für benutzerdefinierte Intents muss jedes Muster befolgt werden expliziten Aufruf wie „Beispiel-App öffnen und“ oder „Start Beispiel-App und“. Betrachten Sie beispielsweise die folgenden Nutzerabfragen:

  • „Hey Google, öffne die Beispielspiel-App und fang an, einen Kuchen zu backen.“
  • „Hey Google, öffne die Example Game App und fang an, einen Apfelkuchen zu backen.“
  • „Hey Google, starte die Beispielspiel-App und fertige 5 Tortenartikel an.“
  • „Hey Google, verwende die Beispielspiel-App, um fünfmal Kuchen zu backen.“

Stellen Sie für den Abgleich mit Nutzeranfragen Anfragemuster bereit, die den Teil des nach der Aufrufphrase ein. Für Informationen, die Sie aus dem wie Text oder eine vom Nutzer angegebene Zahl, weisen Sie dem Parameter zugehörigen Intent-Parameter mit Platzhaltern im Abfragemuster.

Um in einem Abfragemuster auf einen Parameter zu verweisen, fügen Sie $ an den Namen des in Ihrem Muster verwenden. Um beispielsweise einen Platzhalterwert für einen Parameter wie <parameter name="date1" ... (in actions.xml) oder <parameter android:name="date1" ... (in shortcuts.xml) verwenden Sie $date1.

Der folgende Code beschreibt Abfragemuster, die dem vorherigen Nutzer entsprechen. Abfragen und extrahieren Werte für Elementnamen und die Anzahl der zu erstellenden Elemente:

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

Abfragemuster unterstützen Bedingungen. Beispiel: set (an)? appointment $date $time. In diesem Fall gilt: „Termin heute 12:00 Uhr vereinbaren“ und „vereinbare einen Termin heute um 12 Uhr“ sind gültige Abfragen.