Jede App ist anders und nicht alle Funktionen entsprechen einem verfügbaren App Actions-integrierter Intent. Für Fälle, in denen keine einen BII für Ihre App-Funktionen haben, können Sie stattdessen einen benutzerdefinierten die Absicht, deine App mit App Actions zu erweitern.
Wie BIIs folgen auch benutzerdefinierte Intents
shortcuts.xml
-Schema und fungiert als
Verbindungspunkte zwischen Assistant und Ihren definierten Auftragsausführungen. Benutzerdefiniert
Intents haben auch Intent-Parameter, die Sie Parametern in Ihrem
der entsprechenden Auftragsausführung.
Im Gegensatz zu BIIs sind für benutzerdefinierte Intents Abfragemuster erforderlich, um beschreiben Beispielabfragen von Nutzenden. Dieser Ansatz unterscheidet sich von integrierte Intents, die gängige Methoden zum Ausdrucken von Absichten von Nutzern abbilden.
Beschränkungen
Für benutzerdefinierte Intents gelten folgende Einschränkungen:
- Der Name eines benutzerdefinierten Intents darf nicht mit „
actions.intent
“ beginnen. - Der Name eines benutzerdefinierten Intents darf unter den Namen für benutzerdefinierte Intents nur einmal vorkommen für Ihre App.
- Für die Parameterextraktion durch Google stehen nur bestimmte Datentypen zur Verfügung Weitere Informationen zu den unterstützten Typen
- Benutzerdefinierte Intents müssen Beispiele für verwendbare Abfragemuster enthalten (siehe Abfragemuster).
- Jede Abfrage unterstützt maximal zwei Textparameter. Diese Beschränkung gilt nicht auf andere Datentypen anwenden.
- Für benutzerdefinierte Intents wird nur US-Englisch unterstützt. Außerdem werden das Gerät und Assistant Spracheinstellungen müssen übereinstimmen.
Unterstützte Typen
Benutzerdefinierte Intents unterstützen die folgenden schema.org-Typen für Parameterextraktion:
https://schema.org/Text
https://schema.org/Date
https://schema.org/Time
https://schema.org/Number
App-Aktionen mit benutzerdefinierten Intents definieren
Wie bei anderen App Actions, die BIIs verwenden, definieren Sie eine benutzerdefinierte
Intent im <capability>
-Element in
shortcuts.xml
Die Funktionen werden im Stammelement <shortcuts>
definiert. Wenn Sie
definiere dein <shortcuts>
-Element und füge die Namespaces von
Attribute, auf die Sie zugreifen möchten, wie im folgenden Beispiel gezeigt:
<shortcuts
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
...
</shortcuts>
Geben Sie im Attribut android:name
den Namen des benutzerdefinierten Intents an.
auf eine Abfragemuster-Ressourcendatei im
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>
Namen von benutzerdefinierten Intents dürfen nicht mit
actions.intent
, da dieser Namespace für BIIs reserviert ist. Wenn Sie stattdessen
Benennen Sie Ihre benutzerdefinierten Intents, verwenden Sie das Präfix
custom.actions.intent
, um Ihre benutzerdefinierten Intents von beiden zu unterscheiden
BIIs und Android Intents,
anders funktionieren.
Geben Sie für jeden Parameter den unterstützten Schema.org-Typ an.
die die Bedeutung des Parameters am besten beschreibt. So können Sie beispielsweise
https://schema.org/Date
für ein Datum, das Sie voraussichtlich erhalten werden:
...
<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>
...
Definieren Sie Tastenkombinationen für benutzerdefinierte Intents in shortcuts.xml
im selben Format
als Kürzel für BIIs.
Der folgende Code beschreibt eine App Action, die die referenzierte Abfrage verwendet
Muster zum Auslösen des benutzerdefinierten Intents SCHEDULE_APPOINTMENT
und verwendet eine definierte
Satz von Werten, DRIVERS_LICENSE
und VEHICLE_REGISTRATION
, für die 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>
Sie können benutzerdefinierte
Intent-Parameter mit Inline-Inventar konfigurieren,
mit dem Sie die Entitätsextraktion an eine Reihe unterstützter Entitäten leiten können
in shortcuts.xml
angegeben.
Abfragemuster
Für jeden benutzerdefinierten Intent sind bestimmte Abfragen erforderlich, diese Absicht. Dieser Ansatz unterscheidet sich von BIIs, bei denen Abfragen bereits modelliert werden kann, mit denen Nutzende Aufgaben, die sie erledigen möchten, nach Informationen suchen.
Geben Sie in einer Android-Ressourcendatei (normalerweise /res/values/strings.xml
) die Abfrage an
Muster als Elemente in einem String-Array. Wenn Ihre
App Action aufgerufen wird, gleicht Google Assistant die Nutzeranfrage mit deiner
Abfragemuster als Teil des Abgleichs der Absicht des Nutzers für die Auftragsausführung hinzufügen. Jede Abfrage
Muster, das Sie angeben, eine Wortgruppe darstellt, die Sie für den
der entsprechenden benutzerdefinierten Zielgruppe mit gemeinsamer Absicht.
Beim Bereitstellen von Abfragemustern für benutzerdefinierte Intents muss jedes Muster befolgt werden expliziten Aufruf wie „Beispiel-App öffnen und“ oder „Start Beispiel-App und“. Betrachten Sie beispielsweise die folgenden Nutzerabfragen:
- „Hey Google, öffne die Beispielspiel-App und fang an, einen Kuchen zu backen.“
- „Hey Google, öffne die Example Game App und fang an, einen Apfelkuchen zu backen.“
- „Hey Google, starte die Beispielspiel-App und fertige 5 Tortenartikel an.“
- „Hey Google, verwende die Beispielspiel-App, um fünfmal Kuchen zu backen.“
Stellen Sie für den Abgleich mit Nutzeranfragen Anfragemuster bereit, die den Teil des nach der Aufrufphrase ein. Für Informationen, die Sie aus dem wie Text oder eine vom Nutzer angegebene Zahl, weisen Sie dem Parameter zugehörigen Intent-Parameter mit Platzhaltern im Abfragemuster.
Um in einem Abfragemuster auf einen Parameter zu verweisen, fügen Sie $
an den Namen des
in Ihrem Muster verwenden. Um beispielsweise einen Platzhalterwert für einen
Parameter wie
<parameter name="date1" ...
(in actions.xml
) oder
<parameter android:name="date1" ...
(in shortcuts.xml
) verwenden Sie $date1
.
Der folgende Code beschreibt Abfragemuster, die dem vorherigen Nutzer entsprechen. Abfragen und extrahieren Werte für Elementnamen und die Anzahl der zu erstellenden Elemente:
<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>
Abfragemuster unterstützen Bedingungen. Beispiel: set (an)? appointment
$date $time
. In diesem Fall gilt: „Termin heute 12:00 Uhr vereinbaren“ und
„vereinbare einen Termin heute um 12 Uhr“ sind gültige Abfragen.