Inline-Inventar

Wenn Sie App Actions für Ihre Android-App implementieren, müssen Sie möglicherweise Anfragen zu unterschiedlichen Themen verarbeiten. Angenommen, Ihre Fitness-App implementiert den integrierten Intent (BII) von START_EXERCISE, damit Nutzer eine breite Palette von Trainingseinheiten starten können, indem sie Assistant Dinge sagen wie: „Hey Google, starte einen Lauf mit der Beispiel-App.“

Die Erfüllung dieses Intents erfordert Ihre Anfrageabgleichslogik, um jede Art von Training, einschließlich Varianten wie „Jog“, „Sprint“ oder „Rennen“, zu verarbeiten. Diese Logik wird schnell umständlich, wenn die unterstützten Trainingseinheiten zunehmen.

Bei unterstützten BIIs wie START_EXERCISE können Sie diese komplexe Zuordnungslogik vermeiden, indem Sie ein Inline-Inventar verwenden. Ein Inline-Inventar ist eine Reihe statischer Android-Tastenkombinationen, die in shortcuts.xml definiert sind, die Funktionen und Inhalte in Ihrer App darstellen.

Jede Verknüpfung enthält eine Element-ID und eine Liste von Synonymen, die Varianten darstellen, wie Nutzer auf das Element verweisen können. Während des Aufrufs vergleicht die BII den vom Nutzer bereitgestellten BII-Parameter mit der Synonymliste. Wird eine Übereinstimmung gefunden, wird der BII-Parameter auf die Element-ID der entsprechenden Verknüpfung aktualisiert.

Mit Inline-Inventar kann Google Assistant die BII-Parameterwerte vereinfachen, die Ihrer App bei Aufrufen von App-Aktionen zur Verfügung gestellt werden.

Inline-Inventare funktionieren wie Suchtabellen für BII-Parameter und drücken die Vielfalt aus, wie Nutzer auf Funktionen oder Inhalte in Ihrer App verweisen. Dazu werden von Ihnen definierte Artikel-IDs verwendet. Sie vereinfachen die Logik für den Anfrageabgleich Ihrer Anwendung, da die Auftragsausführungen Artikelkennungen aus BII-Parametern vorhersehen können.

Nutzerfluss-Diagramm für Inline-Inventar
Abbildung 1: Ein Flussdiagramm einer START_EXERCISE-Funktion, die ein Inline-Inventar verwendet, um vom Nutzer bereitgestellte Trainingsnamen für unterstützte Trainingstypen in der App zu interpretieren.

Einschränkungen und Alternativen

Für Inline-Inventar-Verknüpfungen gelten folgende Einschränkungen:

  • Limit für Verknüpfungen:Pro Anwendung können maximal 1.000 Verknüpfungen für Inline-Inventar definiert werden.
  • Synonymlimit:Jede Inline-Inventar-Verknüpfung kann maximal 20 Synonymwerte enthalten.
  • Statische Definition:Verknüpfungen für Inline-Inventar werden in shortcuts.xml statisch deklariert und können für Ihre Nutzer nur durch Veröffentlichen einer neuen Version Ihrer Anwendung aktualisiert werden.

Angesichts der Anforderung einer statischen Konfiguration eignet sich ein Inline-Inventar am besten, um selten sich ändernde, nicht personalisierte App-Informationen für Assistant bereitzustellen, z. B. Menüpunkte, Busrouten oder Getränkegrößen. Für andere Inhaltstypen kannst du folgende Alternativen in Betracht ziehen:

  • Webinventar:Ermöglicht Assistant, öffentliche Webinhalte abzufragen, wenn Nutzeranfragen unterstützten App-Inhalts-IDs zugeordnet werden. Webinventarabfragen werden während eines Aufrufs in Echtzeit ausgeführt, sodass Sie Produktkataloge, Beiträge in sozialen Medien und andere häufig aktualisierte Inhalte auf Assistant erweitern können.

  • Dynamische Verknüpfungen:Erweitern Sie ein Inventar von personalisierten App-Inhalten auf Assistant. Mithilfe von dynamischen Verknüpfungen können Nutzer gängige Aktionen schnell wiederholen, z. B. das Nachbestellen ihres Lieblingsgetränks über eine Bestell-App oder das Aufrufen einer Einkaufsliste in einer Notizen-App.

Inline-Inventar erstellen

Ein Inline-Inventar vereinfacht die Entwicklung, indem Assistant eine praktische Möglichkeit bietet, die verschiedenen Arten, auf die Nutzer die Inhalte und Funktionen Ihrer App anfordern, in vorhersehbare Kennungen zu übersetzen, die von Ihrer Anwendung erwartet werden. Angenommen, Ihre App bietet verschiedene Trainingseinheiten an, die Nutzer mit ihrer Stimme verwenden können, und Ihre App erwartet, dass Nutzer die folgenden Anfragen für denselben Übungstyp stellen:

  • Hey Google, starte einen Lauf in der Beispiel-App.
  • Hey Google, starte mit der Beispiel-App eine Joggingrunde.

In Ihrer Inline-Inventar-Verknüpfung legen Sie shortcutId auf "CARDIO_RUN" fest, die von Ihrer App erwartete Trainings-ID. Anschließend geben Sie "run" und "jog" als Synonyme an, die mit shortcutId verknüpft sind. Wenn ein Nutzer dann deine App-Aktion mit den vorherigen Abfragen auslöst, verwendet Assistant beim Generieren eines Auftragsausführungs-Intents die Kennung "CARDIO_RUN" für den BII-Parameter.

Das folgende Snippet aus einer Beispieldatei app/res/shortcuts.xml implementiert diesen Fall:

<capability android:name="actions.intent.START_EXERCISE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
    </capability-binding>
</shortcut>

Im vorherigen Beispiel deklariert das Inline-Inventar-shortcut ein <parameter-binding>-Tag innerhalb eines <capability-binding>-Elements und bindet es an den in <capability> definierten exercise.name-BII-Parameter.

Die String-Array-Ressource @array/run_names gibt eine Liste von Synonymen in res/values/arrays.xml an, die Assistant erkennt und der "CARDIO_RUN"-Element-ID zuordnet:

<!-- Synonym values for "CARDIO_RUN" inline inventory -->
<resources>
  <string-array name="run_names">
    <item>Run</item>
    <item>Jog</item>
    <item>Sprint</item>
  </string-array>
</resources>

Wenn ein <url-template> für die Funktion bereitgestellt wird, wird der shortcutId für einen übereinstimmenden Wert am entsprechenden Platzhalter für den Parameter in die generierte URL eingefügt. Mit dem folgenden Code aus einer Beispieldatei app/res/shortcuts.xml wird dieser Fall implementiert:

<capability android:name="actions.intent.START_EXERCISE">
  <intent>
    <url-template android:value="myapp://workout{?exercise}" />
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
</shortcut>

Im vorherigen Beispiel generiert Assistant den Deeplink myapp://workout?exercise=CARDIO_RUN für die Auftragsausführung.

Auftragsausführung mithilfe von Verknüpfungs-Intents

Standardmäßig wird über eine Verknüpfung der shortcutId eines übereinstimmenden Inline-Inventarwerts an den intent der capability übergeben, an die die Verknüpfung gebunden ist, wie im Tag <capability-binding> der Verknüpfung angegeben. Alternativ können Sie angeben, dass ein in der Verknüpfung selbst definierter intent für die Auftragsausführung verwendet werden soll. Dazu fügen Sie dem capability ein <shortcut-fulfillment>-Tag hinzu.

Mit dem folgenden Code aus einer Beispieldatei app/res/shortcuts.xml wird die Auftragsausführung durch Kürze implementiert:

<capability android:name="actions.intent.START_EXERCISE">
  <shortcut-fulfillment>
    <parameter android:name="exercise.name"/>
  </shortcut-fulfillment>
</capability>

<shortcut android:shortcutId="CARDIO_RUN">
  <capability-binding android:key="actions.intent.START_EXERCISE">
    <parameter-binding
      android:key="exercise.name"
      android:value="@array/run_names" />
  </capability-binding>
  <intent android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.ExerciseActivity">
    <parameter android:name="exercise.name" android:key="exercise" />
  </intent>
</shortcut>

Wenn im vorherigen Beispiel die Nutzerabfrage mit einem Inline-Inventarwert für den Parameter exercise.name übereinstimmt, gibt das Tag <shortcut-fulfillment> an, dass die intent der gebundenen Verknüpfung für die Auftragsausführung verwendet wird.

Inline-Inventar für die Funktion „Open App“ BII

Inline-Inventar ist in der Regel eine optionale Funktion für die BIIs, die sie unterstützen. Für bestimmte BIIs, z. B. OPEN_APP_FEATURE, ist es jedoch erforderlich. Diese häufig verwendete BII ermöglicht es Nutzern, mit Assistant Deeplinks zu bestimmten App-Funktionen zu erstellen. Für das BII-Feature für offene Apps ist ein Inline-Inventar mit Namen von App-Funktionen erforderlich, um zu prüfen, ob ein vom Nutzer angefordertes Feature vorhanden ist, bevor ein Deeplink für den Nutzer zu Ihrer App erstellt wird.

Mit dem folgenden Code aus einer Beispieldatei app/res/shortcuts.xml wird diese BII mit einer einzigen Verknüpfung implementiert, die das Bestellstatusfeature der App darstellt:

<capability android:name="actions.intent.OPEN_APP_FEATURE">
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="feature"
       android:key="featureParam" />
  </intent>
  <!-- Required fallback fulfillment to handle when parameters are missing from user query. -->
  <intent
    android:targetPackage="com.example.myapp"
    android:targetClass="com.example.myapp.MyClass">
    <parameter
       android:name="HOME_SCREEN"
       android:key="featureParam" />
  </intent>
</capability>

<!-- Inline inventory for OPEN_APP_FEATURE. -->

<shortcut android:shortcutId="ORDER_STATUS">
  <capability-binding android:key="actions.intent.OPEN_APP_FEATURE">
    <parameter-binding
      android:key="feature"
      android:value="@array/order_status_names" />
    </capability-binding>
</shortcut>

Die String-Array-Ressourcen in res/values/arrays.xml, @array/order_status_names, geben eine Liste von Synonymen für dieses Feature an:

<resources>
  <string-array name="order_status_names">
    <item>Order status</item>
    <item>Orders</item>
    <item>Order history</item>
  </string-array>
</resources>

Mit der vorherigen Funktion kann Assistant eine Vielzahl von Wortgruppen für dieselbe Funktion ausführen:

  • „Hey Google, zeig mir den Bestellstatus in der Beispiel-App.“
  • „Hey Google, zeig mir meine Bestellungen in der Beispiel-App.“
  • „Hey Google, zeig mir meinen Bestellverlauf in der Beispiel-App.“

Inline-Inventar testen

Testen Sie Ihr Inventar, indem Sie sich die BII-Parameterwerte ansehen, die Assistant für Ihre App zur Verfügung stellt und gleichzeitig relevante App Action-Funktionen erfüllt. Bei Inline-Inventar wird der vom Nutzer angegebene Wert eines inventargebundenen BII-Parameters durch den shortcutId einer übereinstimmenden Inline-Inventar-Verknüpfung ersetzt.

Beispielsweise kann eine START_EXERCISE-BII-Funktion ein Inline-Inventar verwenden, um den vom Nutzer bereitgestellten BII-Parameter „run“ in die entsprechende Trainings-ID "CARDIO_RUN" zu übersetzen.

Mit dem Google Assistant-Plug-in können Sie sich eine Vorschau Ihrer App-Aktionen für Inline-Inventar in Assistant auf einem Testgerät ansehen. Testen Sie Ihr Inventar mithilfe des Plug-ins, indem Sie die folgenden Schritte ausführen:

  1. Konfigurieren Sie die inventargebundenen Parameter Ihrer BII-Funktion mit Synonymwerten, die Ihrem Inline-Inventar zugeordnet sind.
  2. Lösen Sie die BII aus dem Plug-in aus und rufen Sie es auf Ihrem Testgerät auf.
  3. Prüfen Sie die resultierenden Parameterwerte, die Assistant während der Auftragsausführung durch App-Aktionen für Ihre Anwendung zur Verfügung stellt.