Segmenti di pubblico personalizzati per intenzione

Ogni app è diversa e non tutte le funzionalità dell'app corrispondono a una disponibilità Intent integrato Azioni app (BII). Nei casi in cui non siano di un intent integrato per la funzionalità dell'app, puoi usare un modello per estendere la tua app con Azioni app.

Come gli intent integrati, gli intent personalizzati seguono shortcuts.xml e agiscono come punti di connessione tra l'assistente e i completamenti che hai definito. Personalizzati gli intent hanno anche parametri di intent, che puoi mappare ai parametri nel tuo fulfillment corrispondente.

A differenza degli intent integrati, gli intent personalizzati richiedono pattern di query per descrivere query di esempio che un utente potrebbe pronunciare. Questo approccio differisce da intent integrati, che sono i modelli dei modi più comuni in cui gli utenti esprimono tale intenzione.

Limitazioni

Gli annunci personalizzati per intenzione presentano le seguenti limitazioni:

  • Il nome di un intent personalizzato non può iniziare con actions.intent.
  • Il nome di un intent personalizzato deve essere univoco tra i nomi di un intent personalizzato per la tua app.
  • Solo alcuni tipi di dati sono disponibili per l'estrazione dei parametri da parte di Google Assistente (vedi Tipi supportati).
  • Gli intent personalizzati devono contenere esempi di pattern di query utilizzabili (vedi Pattern di query).
  • Ogni query supporta un massimo di due parametri di testo. Questo limite non ad altri tipi di dati.
  • Gli intent personalizzati per intent supportano solo le impostazioni internazionali en-US. Inoltre, il dispositivo e l'assistente le impostazioni della lingua devono corrispondere.

Tipi supportati

Gli intent personalizzati per intent supportano i seguenti tipi di schema.org per estrazione di parametri:

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

Definire le Azioni app con intent personalizzati

Come per altre Azioni app che utilizzano gli intent integrati, definisci una nell'elemento <capability> di shortcuts.xml

Le funzionalità sono definite nell'elemento principale <shortcuts>. Quando definisci l'elemento <shortcuts>, includi gli spazi dei nomi gli attributi a cui vuoi accedere, come mostrato nell'esempio seguente:

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

Fornisci il nome dell'intent personalizzato nell'attributo android:name e fai riferimento a un file di risorse pattern di query 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>

I nomi personalizzati per intent non possono iniziare con actions.intent, perché questo spazio dei nomi è riservato per gli intent integrati. Invece, quando assegnare un nome agli intent personalizzati, utilizza il prefisso custom.actions.intent per distinguere i tuoi intent personalizzati per intenzione da entrambi intent integrati e intent Android, che funzionano in modo diverso.

Per ogni parametro, indica il tipo di schema.org supportato che descrive meglio il significato del parametro. Ad esempio, puoi utilizzare https://schema.org/Date per descrivere una data che prevedi di ricevere:

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

Definisci le scorciatoie per gli intent personalizzati in shortcuts.xml utilizzando lo stesso formato come scorciatoie per gli intent integrati.

Il seguente codice descrive un'Azione app che utilizza la query di riferimento pattern per attivare l'intent personalizzato SCHEDULE_APPOINTMENT e utilizza un valore definito insieme di valori, DRIVERS_LICENSE e VEHICLE_REGISTRATION, per 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>

Puoi configurare parametri personalizzati per intenzione con l'inventario in linea, che puoi utilizzare per guidare l'estrazione delle entità verso un insieme di entità supportate specificato in shortcuts.xml.

Pattern di query

Ogni personalizzato per intenzione che utilizzi richiede un insieme di query che ci si aspetta dall'utente per questo intento. Questo approccio è diverso dagli intent integrati, in cui le query vengono già modellato per i modi più comuni in cui gli utenti esprimono le attività che stanno cercando di fare le informazioni che cercano.

In un file di risorse Android (di solito /res/values/strings.xml), specifica la query come elementi in un array di stringhe. Quando Viene richiamata l'Azione app e l'Assistente Google confronta la query dell'utente con modelli di query nell'ambito della corrispondenza con l'intenzione dell'utente per il fulfillment. Ogni query che fornisci rappresenta una frase che consideri valida per personalizzato per intenzione corrispondente.

Quando fornisci pattern di query per intent personalizzati, tieni presente che ogni pattern seguirà una chiamata esplicita come "apri l'app di esempio e" o "avvia App Esempio e". Considera ad esempio le seguenti query utente:

  • "Hey Google, apri l'app Gioco di esempio e inizia a preparare una torta."
  • "Hey Google, apri l'app Gioco di esempio e inizia a preparare una torta di mele."
  • "Hey Google, avvia l'app di gioco Esempio e crea cinque dolciumi."
  • "Hey Google, usa l'app di gioco Esempio per produrre torte 5 volte."

Per trovare corrispondenze con le query degli utenti, fornisci pattern di query che contengano la parte del query dopo la frase di chiamata. Per le informazioni che vuoi estrarre query (come testo o un numero fornito dall'utente), assegni valori alla il parametro di intent corrispondente con segnaposto nel modello di query.

Per fare riferimento a un parametro in un pattern di query, aggiungi $ al nome del nel pattern. Ad esempio, per creare un valore segnaposto per un parametro come <parameter name="date1" ... (in actions.xml) o <parameter android:name="date1" ... (in shortcuts.xml), utilizzi $date1.

Il seguente codice descrive i pattern di query che corrispondono all'utente precedente query ed estrarre valori per i nomi degli elementi e il numero di elementi da creare:

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

I pattern di query supportano le condizionali. Ad esempio, set (an)? appointment $date $time. In questo caso, "fissa appuntamento oggi a mezzogiorno" e "fissa un appuntamento oggi a mezzogiorno" sono query valide.