Inline-Inventar

Wenn du App Actions für deine Android-App implementierst, Anfragen bearbeiten müssen, die Varianten eines Themas sind. Sagen Sie zum Beispiel, implementiert die Fitness-App den integrierten Intent von START_EXERCISE (BII), um Nutzende starten eine breite Palette von Trainings, indem sie Assistant Fragen stellen wie: „Hey Google, starte einen Lauf in Beispiel-App.“

Um diesen Intent zu erfüllen, muss Ihre Logik für den Anfrageabgleich Art des Trainings, einschließlich Variationen wie „Joggen“, „Sprint“, oder „Ethnische Herkunft“. Diese Logik wird mit zunehmender Anzahl unterstützter Trainingseinheiten schnell umständlich.

Bei unterstützten BIIs wie START_EXERCISE können Sie diesen komplexen Abgleich vermeiden mithilfe von Inline-Inventar. Ein Inline-Inventar ist eine Reihe statischer In shortcuts.xml definierte Android-Tastenkombinationen, die Funktionen und Inhalte darstellen in Ihrer App.

Jede Tastenkombination enthält eine Element-ID und eine Liste mit Synonymen Sie stellen Variationen dar, wie Nutzende auf den Artikel verweisen könnten. Während des Aufrufs vergleicht der BII den vom Nutzer bereitgestellten BII-Parameter mit der Synonymliste. Wenn ein gefunden wird, wird der BII-Parameter auf das Element der übereinstimmenden Verknüpfung aktualisiert. Kennung.

Mit einem Inline-Inventar kann Google Assistant den BII-Parameter vereinfachen. -Werte, die Ihrer App bei App Action-Aufrufen bereitgestellt werden.

Inline-Inventare funktionieren wie Suchtabellen für BII-Parameter, aus, wie Nutzer auf Funktionen oder Inhalte in Ihrer App verweisen. mit von Ihnen definierten Artikel-IDs. Sie vereinfachen den Anfrageabgleich Ihrer App Logik, indem die Ausführungen die Artikel-IDs aus BII vorhersehen Parameter.

<ph type="x-smartling-placeholder">
</ph> User-Flow-Diagramm für Inline-Inventar <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Ein Flussdiagramm einer START_EXERCISE-Funktion, die einen Inline-Inventar, um die vom Nutzer bereitgestellten Workout-Namen für unterstützte Übungsarten in der App.

Einschränkungen und Alternativen

Verknüpfungen für Inline-Inventar unterliegen den folgenden Einschränkungen:

  • Verknüpfungslimit: Es sind maximal 1.000 Verknüpfungen für Inline-Inventar möglich. pro App definiert ist.
  • Synonymlimit:Jede Inline-Inventarverknüpfung darf maximal 20 Zeichen enthalten. Synonymerkennungen.
  • Statische Definition:Verknüpfungen für Inline-Inventar sind statisch deklariert in shortcuts.xml. Sie können nur für Ihre Nutzer aktualisiert werden, indem Sie ein neues Version Ihrer App.

Aufgrund der Anforderung an eine statische Konfiguration eignet sich Inline-Inventar am besten sind geeignet, um sich selten ändernde, nicht personalisierte App-Informationen Informationen über die Speisekarte, Busrouten oder Getränkegrößen Für andere Arten von sollten Sie folgende Alternativen in Betracht ziehen:

  • Webinventar:Damit kann Assistant öffentliche Webinhalte abfragen, wenn Nutzeranfragen mit unterstützten App-Content-IDs abgeglichen. Webinventar Abfragen in Echtzeit während eines Aufrufs ausgeführt werden. Produktkataloge, Beiträge in sozialen Medien und andere häufig aktualisierte Inhalte an Assistant senden.

  • Dynamische Verknüpfungen:Erweitern Sie Ihr Inventar mit personalisierten App-Inhalten. an Assistant senden. Mit dynamischen Tastenkombinationen können Nutzer häufig verwendete wie die Bestellung eines Lieblingsgetränks über eine App zur Essensbestellung oder das Aufrufen einer Einkaufsliste in einer Notizen-App.

Inline-Inventar erstellen

Ein Inline-Inventar vereinfacht die Entwicklung, indem es Assistant eine praktische Möglichkeit bietet, wie Nutzer die Inhalte und Funktionen Ihrer App anfordern können in die vorhersehbaren IDs, die Ihre Anwendung erwartet. Für Angenommen, Ihre App bietet verschiedene Trainingseinheiten an, die die Nutzenden verwenden können. und Ihre App erwartet, dass Nutzer die folgenden Anfragen Trainingsart:

  • Hey Google, starte einen Lauf in Beispiel-App.
  • Hey Google, starte mit der Example App joggen.

In der Verknüpfung für Inline-Inventar haben Sie shortcutId auf "CARDIO_RUN" festgelegt. die von deiner App erwartete Trainings-ID. Dann geben Sie „run“ an. und „joggen“ als Synonyme, die mit shortcutId verknüpft sind. Wenn ein Nutzer App Action mit den vorherigen Abfragen teilen, verwendet Assistant die ID "CARDIO_RUN" für den BII-Parameter, wenn ein Auftragsausführungs-Intent generiert wird.

Mit dem folgenden Snippet aus einer Beispieldatei app/res/shortcuts.xml diesem 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 einen <parameter-binding>-Tag innerhalb eines <capability-binding>-Elements, Bindung an den BII-Parameter exercise.name, der im <capability>

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

<!-- 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 für die Capability ein <url-template> angegeben wird, werden die shortcutId für wird ein übereinstimmender Wert in die generierte URL an der entsprechenden Platzhalter für den Parameter. Der folgende Beispielcode aus einem In der Datei 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 für die Auftragsausführung myapp://workout?exercise=CARDIO_RUN

Auftragsausführung mit Shortcut-Intents

Standardmäßig wird über eine Tastenkombination das shortcutId eines übereinstimmenden Inline-Inventars bereitgestellt Wert auf den intent des capability, an den die Verknüpfung gebunden ist (wie angegeben) im Tag <capability-binding> der Verknüpfung. Sie können können Sie alternativ angeben, dass ein in der Tastenkombination selbst definiertes intent für Auftragsausführung durch Hinzufügen eines <shortcut-fulfillment>-Tags zum capability.

Mit dem folgenden Code aus einer app/res/shortcuts.xml-Beispieldatei wird Shortcut-Ausführung:

<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 obigen Beispiel die Nutzerabfrage mit einem Inline-Inventarwert übereinstimmt für den Parameter exercise.name, das Tag <shortcut-fulfillment> gibt an, dass die intent der gebundenen Tastenkombination für die Auftragsausführung verwendet wird.

Inline-Inventar für BII der Open-App-Funktion

Während Inline-Inventar in der Regel eine optionale Funktion für BIIs ist, unterstützen, ist es für bestimmte BIIs wie OPEN_APP_FEATURE erforderlich. Dieses häufig verwendeter BII ermöglicht Nutzern Deeplinks zu bestimmten App-Funktionen mit Google Assistant. Die Open-App-Funktion BII erfordert eine Inline-Bestandsaufnahme der Namen von App-Funktionen, Prüfen, ob die vom Nutzer angeforderte Funktion vorhanden ist, bevor der Nutzer über einen Deeplink für Ihre App.

Mit dem folgenden Code aus einer app/res/shortcuts.xml-Beispieldatei wird dies BII mit einer einzelnen Verknüpfung, die die Bestellstatusfunktion 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, gibt eine Liste von Synonyme für diese Funktion:

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

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

Inline-Inventar testen

Testen Sie Ihr Inventar, indem Sie sich die BII-Parameterwerte ansehen, die Assistant für und gleichzeitig relevante App Action-Funktionen erfüllen. Ein Inline- Inventar nutzt den vom Nutzer bereitgestellten Wert eines inventargebundenen BII mit dem shortcutId einer übereinstimmenden Inline-Inventarverknüpfung.

Für Eine BII-Funktion START_EXERCISE könnte z. B. ein Inline-Inventar verwenden, um den vom Nutzer bereitgestellten BII-Parameter „run“ übersetzen mit der entsprechenden Übung ID, "CARDIO_RUN".

Mit dem Google Assistant-Plug-in können Sie eine Vorschau Ihrer Inline-Inventar-App ansehen. Aktionen in Assistant auf einem Testgerät. Testen Sie Ihr Inventar mit dem Plug-in, indem Sie Gehen Sie dazu so vor:

  1. Konfigurieren Sie die inventargebundenen Parameter Ihrer BII-Funktion mit Synonymwerten, die Ihrem Inline-Inventar zugeordnet sind.
  2. Lösen Sie den BII aus dem Plug-in aus und rufen Sie ihn auf Ihrem Testgerät auf.
  3. Untersuchen Sie die resultierenden Parameterwerte, die Assistant Ihren