Inventario in linea

Quando implementi Azioni app per la tua app per Android, potresti ritrovarti dover gestire richieste che sono varianti di un tema. Ad esempio, supponi che l'app di fitness implementa l'intent integrato START_EXERCISE per consentire gli utenti avviano un'ampia gamma di allenamenti chiedendo all'assistente, ad esempio, "Hey Google, avvia un'esecuzione sull'app Esempio."

Per soddisfare questo intent è necessaria la logica di corrispondenza della richiesta per gestire ogni tipo di esercizio, incluse varianti come "jog", "sprint" o "razza". Questa logica diventa rapidamente difficile man mano che gli esercizi supportati aumentano.

Per gli intent integrati supportati, come START_EXERCISE, puoi evitare questa corrispondenza complessa della logica utilizzando un inventario in linea. Un inventario in linea è un insieme di Scorciatoie Android definite in shortcuts.xml che rappresentano funzionalità e contenuti all'interno dell'app.

Ogni scorciatoia contiene un identificatore articolo e un elenco di sinonimi. che rappresentano le variazioni nel modo in cui gli utenti possono fare riferimento all'elemento. Durante la chiamata, l'intent integrato confronta il parametro dell'intent integrato fornito dall'utente con l'elenco dei sinonimi. Quando , il parametro dell'intent integrato viene aggiornato all'elemento della scorciatoia corrispondente identificativo dell'utente.

Un inventario in linea consente all'Assistente Google di semplificare il parametro dell'intent integrato forniti alla tua applicazione durante le chiamate delle Azioni app.

Gli inventari in linea funzionano come tabelle di ricerca per i parametri degli intent integrati. esprimono la varietà di modi in cui gli utenti fanno riferimento a funzionalità o contenuti della tua app utilizzando gli identificatori degli articoli da te definiti. Semplificano la corrispondenza delle richieste dell'app consentendo ai tuoi completamenti di prevedere gli identificatori degli articoli dall'intent integrato. parametri.

Diagramma di flusso dell'utente dell'inventario in linea
. Figura 1. Un diagramma di flusso di una funzionalità START_EXERCISE che utilizza una inventario in linea per interpretare i nomi degli allenamenti forniti dall'utente per i tipi di allenamento nell'app.
.

Limitazioni e alternative

Le scorciatoie dell'inventario incorporato presentano le seguenti limitazioni:

  • Limite di scorciatoie: è possibile aggiungere al massimo 1000 scorciatoie per l'inventario in linea. definiti per app.
  • Limite di sinonimi: ogni scorciatoia per l'inventario incorporato può contenere al massimo 20 sinonimi.
  • Definizione statica: le scorciatoie per l'inventario in linea vengono dichiarate in modo statico in shortcuts.xml e possono essere aggiornati per i tuoi utenti solo pubblicando un nuovo all'ultima versione dell'app.

Dato il requisito della configurazione statica, un inventario in linea è la scelta migliore adatto a estendere le informazioni sulle app non personalizzate e che vengono modificate di rado alle Assistente, ad esempio voci di menu, percorsi degli autobus o porzioni di bevande. Per altri tipi di di contenuti, prendi in considerazione queste alternative:

  • Inventario web: consente all'assistente di eseguire query sui contenuti web pubblici quando abbinando le query degli utenti agli identificatori di contenuti dell'app supportati. Inventario web vengono eseguite in tempo reale durante una chiamata, consentendoti di estendere cataloghi dei prodotti, post sui social media e altri contenuti che vengono aggiornati di frequente all'assistente.

  • Scorciatoie dinamiche: ampliano un inventario di contenuti personalizzati dell'app all'assistente. Le scorciatoie dinamiche consentono agli utenti di riprodurre i contenuti più comuni come riordinare la sua bevanda preferita da un'app per ordinare cibo o che mostra una lista della spesa in un'app per prendere appunti.

Creare un inventario in linea

L'inventario in linea semplifica lo sviluppo offrendo all'assistente un modo pratico per tradurre i diversi modi in cui gli utenti richiedono i contenuti e le funzionalità della tua app negli identificatori prevedibili previsti dalla tua applicazione. Per Ad esempio, supponiamo che la tua app offra esercizi diversi che gli utenti possono iniziare a usare. la loro voce e la tua app si aspetta che gli utenti effettuino le seguenti richieste per stesso tipo di allenamento:

  • Hey Google, avvia un'esecuzione sull'app Esempio.
  • Hey Google, inizia una corsa sull'app Esempio.

Nella scorciatoia per l'inventario in linea, hai impostato shortcutId su "CARDIO_RUN", l'identificatore dell'allenamento previsto dalla tua app. Poi devi specificare "run" e "jog" come sinonimi associati a shortcutId. Quindi, quando un utente attiva l'Azione app con le query precedenti, l'assistente utilizza l'identificatore "CARDIO_RUN" per il parametro dell'intent integrato durante la generazione di un intent di completamento.

Il seguente snippet di un file app/res/shortcuts.xml di esempio viene implementato questo caso:

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

Nell'esempio precedente, l'inventario in linea shortcut dichiara un Tag <parameter-binding> in un elemento <capability-binding>; associandolo al parametro dell'intent integrato exercise.name definito nel <capability>

La risorsa di array di stringhe @array/run_names specifica un elenco di sinonimi in res/values/arrays.xml che l'assistente riconosce e mappa al ID elemento "CARDIO_RUN":

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

Quando viene fornito un elemento <url-template> per la funzionalità, il valore shortcutId per venga inserito un valore corrispondente nell'URL generato nel segnaposto per il parametro. Il seguente codice di un esempio app/res/shortcuts.xml file implementa questa richiesta:

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

Nell'esempio precedente, l'assistente genera il link diretto di completamento myapp://workout?exercise=CARDIO_RUN.

Evasione degli ordini mediante intent delle scorciatoie

Per impostazione predefinita, una scorciatoia fornisce il valore shortcutId di un inventario in linea corrispondente al valore intent del campo capability a cui è associata la scorciatoia, come dichiarato nel tag <capability-binding> della scorciatoia. Puoi puoi specificare in alternativa di utilizzare un valore intent definito nella scorciatoia stessa completamento aggiungendo un tag <shortcut-fulfillment> a capability.

Il seguente codice di un file app/res/shortcuts.xml di esempio viene implementato completamento scorciatoia:

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

Nell'esempio precedente, se la query dell'utente corrisponde a un valore di inventario in linea per il parametro exercise.name, il tag <shortcut-fulfillment> specifica che per il completamento viene utilizzato il intent della scorciatoia associata.

Inventario incorporato per intent integrato per funzionalità dell'app aperta

Sebbene l'inventario in linea sia in genere una funzionalità facoltativa per gli intent integrati che che lo supportano, è obbligatorio per alcuni intent integrati, come OPEN_APP_FEATURE. Questo Gli intent integrati di uso comune consentono agli utenti di creare link diretti a funzionalità specifiche dell'app usando l'assistente. L'intent integrato delle funzionalità dell'app aperta richiede un inventario in linea dei nomi delle funzionalità dell'app per Verificare l'esistenza di una funzione richiesta dall'utente prima di creare un link diretto all'utente la tua app.

Questa funzionalità viene implementata dal seguente codice di un file app/res/shortcuts.xml di esempio BII con una singola scorciatoia che rappresenta la funzionalità dello stato dell'ordine dell'app:

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

Le risorse dell'array di stringhe in res/values/arrays.xml, @array/order_status_names, specifica un elenco di sinonimi per questa caratteristica:

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

Con la funzionalità precedente, l'assistente è in grado di svolgere frasi per la stessa caratteristica:

  • "Hey Google, mostra lo stato del mio ordine sull'app Esempio."
  • "Hey Google, mostra i miei ordini sull'app Esempio."
  • "Hey Google, mostrami la cronologia degli ordini sull'app Esempio."

Testare l'inventario in linea

Testa l'inventario ispezionando i valori parametro dell'intent integrato forniti dall'assistente la tua applicazione soddisfacendo al contempo le funzionalità pertinenti delle Azioni app. In linea l'inventario sostituisce il valore fornito dall'utente di un intent integrato associato all'inventario con il parametro shortcutId di una scorciatoia per l'inventario in linea corrispondente.

Per Ad esempio, una funzionalità degli intent integrati START_EXERCISE potrebbe utilizzare un inventario in linea traduci il parametro dell'intent integrato fornito dall'utente "run" all'esercizio corrispondente ID, "CARDIO_RUN".

Il plug-in dell'Assistente Google ti consente di visualizzare in anteprima l'app di inventario in linea Azioni nell'assistente su un dispositivo di test. Testa l'inventario utilizzando il plug-in seguendo questi passaggi:

  1. Configura i parametri associati all'inventario della funzionalità degli intent integrati con i valori dei sinonimi associati al tuo inventario in linea.
  2. Attiva l'intent integrato dal plug-in, richiamandolo sul tuo dispositivo di test.
  3. Controlla i valori dei parametri risultanti che l'assistente fornisce al tuo durante il completamento dell'Azione app.