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