Pour de nombreux intents, la meilleure solution consiste à fournir à l'utilisateur une réponse simple, une brève confirmation ou une expérience interactive rapide. Vous pouvez afficher un widget d'application Android dans l'Assistant Google pour traiter ce type d'intents.
Ce guide explique comment répondre aux requêtes des utilisateurs de l'Assistant à l'aide de widgets et comment améliorer votre expérience de widget pour l'Assistant grâce aux actions dans l'application Bibliothèque d'extensions de widgets.
Avantages
Les widgets sont des vues d'application miniatures qui peuvent être intégrées à des surfaces Android, telles que le lanceur d'applications ou l'écran de verrouillage. Avec les actions dans les applications, vous augmentez l'impact de vos widgets en les rendant éligibles à l'affichage dans l'Assistant :
- Découverte:affichez les widgets de manière proactive en fonction de l'expérience utilisateur. les requêtes en langage naturel.
- Engagement:affichez les widgets en mode mains libres, par exemple lorsque L'Assistant fournit des résultats personnels sur l'écran de verrouillage et sur Android Auto.
- Fidélisation:autorisez les utilisateurs à épingler les widgets affichés dans l'Assistant à son lanceur d'applications. La fonctionnalité d'épinglage nécessite la bibliothèque d'extensions de widgets.
Affichage des widgets par l'Assistant
Les utilisateurs peuvent appeler des widgets de deux manières :
- Demander explicitement un widget par son nom.
- Énoncer à l'Assistant une requête qui déclenche un intent intégré ou un intent personnalisé configuré pour le traitement des widgets
Appel explicite
Pour appeler explicitement des widgets pour une application installée, les utilisateurs peuvent poser des questions à l'Assistant, par exemple :
- "Hey Google, affiche le widget Exempled'Appli."
- "Widgets Exempled'Appli".
L'Assistant affiche ces widgets avec l'introduction générique: "ExempleAppli dit : "Voici un widget." Alors que l'Assistant renvoie de manière native les widgets demandés dans sans intervention de la part du développeur de l'application, cette méthode d'appel nécessite que l'utilisateur ait une connaissance explicite du widget pour le demander. Pour simplifier la découverte des widgets, utilisez la méthode de traitement des intents décrite dans la section suivante.
Traitement de l'intent
Facilitez la recherche de vos widgets en les utilisant pour répondre aux requêtes en langage naturel que les utilisateurs effectuent sur l'Assistant. Par exemple, vous pouvez renvoyer une
chaque fois qu'un utilisateur déclenche l'intent intégré GET_EXERCISE_OBSERVATION
dans votre
application de fitness en demandant "Hey Google, combien de kilomètres ai-je parcourus cette semaine pendant
Exempled'appli ?" En plus de simplifier la découverte, intégrer des widgets aux actions dans l'application offre les avantages suivants :
- Accès aux paramètres:l'Assistant fournit les paramètres d'intent extraits de la requête de l'utilisateur à votre widget, réponses personnalisées.
- Présentations vocales personnalisées:vous pouvez fournir une chaîne de synthèse vocale. pour que l'Assistant l'annonce lors de l'affichage de votre widget.
- Épinglage de widget:l'Assistant affiche un bouton Ajouter ce widget à proximité de votre widget, ce qui permet aux utilisateurs d'épingler facilement vos widgets à leur lanceur d'applications.
Implémenter le traitement des widgets
Pour implémenter le traitement de widgets pour vos intents, procédez comme suit :
- Mettez en œuvre un widget Android en suivant la procédure décrite dans Créer un widget simple.
- Dans le fichier de ressources
shortcuts.xml
de votre application, ajoutez à votre fonctionnalité un élément<app-widget>
contenant des détails de traitement et des tags d'intent intégré<parameter>
. Mettez à jour votre widget pour gérer les paramètres. - Ajoutez la bibliothèque d'extensions de widgets requise pour permettre L'Assistant transmet les noms et les paramètres d'intent intégré à vos widgets. Elle permet également Introductions personnalisées avec synthèse vocale et épinglage de widgets de Google Cloud.
La section suivante décrit le schéma <app-widget>
pour shortcuts.xml
.
Schéma du widget
Les éléments <app-widget>
sont définis comme des traitements dans les éléments <capability>
de shortcuts.xml
. Ils nécessitent les attributs suivants, sauf indication contraire :
Balise "shortcuts.xml" | Contenue dans | Attributs |
---|---|---|
<app-widget> |
<capability> |
|
<parameter> |
<app-widget> |
|
<extra> |
<app-widget> |
|
Description du schéma du widget
<app-widget>
Élément de traitement du widget de premier niveau.
Attributs :
android:identifier
: identifiant de ce traitement. Cette valeur doit être unique dans les traitements<app-widget>
et<intent>
; définis dans une<capability>
.android:targetClass
: nom complet de classe duAppWidgetProvider
dans pour gérer l'intent.
<parameter>
Met en correspondance un paramètre d'intent intégré avec une valeur d'intent <parameter>
. Vous pouvez définir zéro ou plusieurs paramètres pour chaque élément <app-widget>
. Pendant le traitement, l'Assistant
transmet les paramètres en mettant à jour les extras de l'instance de widget en tant que paires clé-valeur.
au format suivant:
- Clé :
android:key
défini pour le paramètre. - Valeur: valeur que l'intent intégré extrait de la saisie vocale d'un utilisateur.
Pour accéder à ces bonus, appelez getAppWidgetOptions()
sur le
un objet AppWidgetManager
, qui renvoie une Bundle
contenant le nom de
l'intent intégré de déclenchement et ses paramètres. Pour en savoir plus, consultez la section Extraire les valeurs des paramètres.
Pour en savoir plus sur la mise en correspondance des paramètres d'intent intégré, consultez la page Données et correspondance des paramètres.
<extra>
Balise facultative déclarant qu'une présentation personnalisée avec synthèse vocale est utilisée pour ce widget. Cette balise nécessite les valeurs d'attribut suivantes :
android:name
:"hasTts"
android:value
:"true"
Exemple de code
L'exemple suivant, issu d'un fichier shortcuts.xml
, illustre un widget
de fulfillment
Capacité d'intent intégré GET_EXERCISE_OBSERVATION
:
<capability android:name="actions.intent.GET_EXERCISE_OBSERVATION">
<app-widget
android:identifier="GET_EXERCISE_OBSERVATION_1"
android:targetClass="com.exampleapp.providers.exampleAppWidgetProvider"
android:targetPackage="com.exampleapp">
<parameter
android:name="exerciseObservation.aboutExercise.name"
android:key="exercisename">
</parameter>
<extra android:name="hasTts" android:value="true"/>
</app-widget>
</capability>
Vous pouvez spécifier plusieurs éléments <app-widget>
ou utiliser une combinaison d'éléments <app-widget>
et <intent>
par fonctionnalité. Cette approche vous permet de personnaliser l'expérience en fonction de différentes combinaisons de paramètres fournies par les utilisateurs. Par exemple, si l'utilisateur ne spécifie pas de lieu de dépôt dans sa requête, vous pouvez le rediriger vers l'activité de votre application qui présente les options permettant de définir les lieux de retrait et de dépôt. Pour en savoir plus sur la définition des intents de remplacement, consultez la section Intents de remplacement.
Extraire les valeurs des paramètres
Dans l'exemple de classe AppWidgetProvider
suivant, la fonction privée updateAppWidget()
permet d'extraire le nom et les paramètres de l'intent intégré à partir des options du widget Bundle
:
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ class MyAppWidget : AppWidgetProvider() { override fun onUpdate( context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray ) { // There might be multiple widgets active, so update all of them for (appWidgetId in appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId) } } private fun updateAppWidget( context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val widgetText: CharSequence = context.getString(R.string.appwidget_text) // Construct the RemoteViews object val views = RemoteViews(context.packageName, R.layout.my_app_widget) views.setTextViewText(R.id.appwidget_text, widgetText) // Extract the name and parameters of the BII from the widget options val optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId) val bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII) // "actions.intent.CREATE_TAXI_RESERVATION" val params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS) if (params != null && params.containsKey("dropoff")) { val dropoffLocation = params.getString("dropoff") // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // There might be multiple widgets active, so update all of them for (int appWidgetId : appWidgetIds) { updateAppWidget(context, appWidgetManager, appWidgetId); } } private static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { CharSequence widgetText = context.getString(R.string.appwidget_text); // Construct the RemoteViews object RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_app_widget); views.setTextViewText(R.id.appwidget_text, widgetText); // Extract the name and parameters of the BII from the widget options Bundle optionsBundle = appWidgetManager.getAppWidgetOptions(appWidgetId); String bii = optionsBundle.getString(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_BII); // "actions.intent.CREATE_TAXI_RESERVATION" Bundle params = optionsBundle.getBundle(AppActionsWidgetExtension.EXTRA_APP_ACTIONS_PARAMS); if (params != null && params.containsKey(("dropoff"))){ String dropoffLocation = params.getString("dropoff"); // Build your RemoteViews with the extracted BII parameter // ... } appWidgetManager.updateAppWidget(appWidgetId, views); } }
Bibliothèque d'extensions de widgets
La bibliothèque d'extensions de widgets pour les actions dans les applications améliore vos widgets pour les expériences vocales avec l'Assistant. Cette bibliothèque permet à vos widgets de recevoir des informations de traitement importantes issues de l'intent intégré de déclenchement, y compris l'intent intégré et les paramètres d'intent extraits de la requête de l'utilisateur.
Cette bibliothèque Maven vous permet de fournir une présentation personnalisée de la synthèse vocale (TTS) pour chaque widget, ce qui permet à l'Assistant d'annoncer un résumé du contenu rendu visuellement aux utilisateurs. Elle permet également d'épingler le widget au lanceur d'applications, ce qui permet aux utilisateurs d'enregistrer facilement les widgets affichés dans l'Assistant sur leur écran de lancement.
Pour commencer, ajoutez la bibliothèque à la section des dépendances du fichier build.gradle
de votre module d'application :
dependencies {
//...
implementation "com.google.assistant.appactions:widgets:0.0.1"
}
Introductions personnalisées
Après avoir importé la bibliothèque d'extensions de widgets, vous pouvez fournir des introductions vocales personnalisées pour vos widgets. Pour ajouter votre définition au fichier AppWidgetProvider
du widget, ouvrez la classe dans votre IDE et importez la bibliothèque d'extensions de widgets :
Kotlin
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension
Java
import com.google.assistant.appactions.widgets.AppActionsWidgetExtension;
Kotlin
package com.example.exampleapp //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension /** * Implementation of App Widget functionality. */ object MyAppWidget : AppWidgetProvider() { fun updateAppWidget( context: Context?, appWidgetManager: AppWidgetManager, appWidgetId: Int ) { val appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build() // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId) // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views) } }
Java
package com.example.exampleapp; //... Other module imports import com.google.assistant.appactions.widgets.AppActionsWidgetExtension; /** * Implementation of App Widget functionality. */ public class MyAppWidget extends AppWidgetProvider { static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { AppActionsWidgetExtension appActionsWidgetExtension = AppActionsWidgetExtension.newBuilder(appWidgetManager) .setResponseSpeech("Hello world") // TTS to be played back to the user .setResponseText("Hello world!") // Response text to be displayed in Assistant .build(); // Update widget with TTS appActionsWidgetExtension.updateWidget(appWidgetId); // Update widget UI appWidgetManager.updateAppWidget(appWidgetId, views); } }
Recommandations de style pour la synthèse vocale
Utilisez les recommandations de style suivantes pour optimiser votre widget personnalisé la synthèse vocale et les invites affichées.
Recommandation | recommandé | Non recommandé |
---|---|---|
Les contractionsUtilisez les contractions dans les requêtes de synthèse vocale. Messages sans contraction sur pilotis et robotique, plutôt que naturel et conversationnel. Mots prononcés comme "impossible", et à ne pas faire peut sembler agressif et agressif. |
ResponseSpeech (TTS)Malheureusement, je ne trouve aucune réservation. ResponseText Malheureusement, je ne trouve aucune réservation. |
ResponseSpeech (TTS)Malheureusement, je ne trouve aucune réservation. ResponseText Malheureusement, je ne trouve aucune réservation. |
VirgulePour plus de clarté, utilisez des virgules de série dans les listes de trois éléments ou plus. Sans la virgule de série, les éléments individuels de votre liste peuvent être mal entendues ou lues en groupe. Par exemple, dans "jonquilles, marguerites et tournesols ». "marguerites et tournesols" font croire qu'ils s'assemblent. Dans « jonquilles, marguerites et tournesols », sont clairement séparés. |
ResponseSpeech (TTS)Les plus populaires sont les roses jaunes, les jonquilles, les marguerites et les tournesols. ResponseText Les plus populaires sont les roses jaunes, les jonquilles, les marguerites et les tournesols. |
ResponseSpeech (TTS)Les plus populaires sont les roses jaunes, les jonquilles, les marguerites et les tournesols. ResponseText Les plus populaires sont les roses jaunes, les jonquilles, les marguerites et les tournesols. |
ChiffresUtilisez des chiffres plutôt que du texte pour rendre le contenu visuel plus lisible en un coup d'œil. |
ResponseSpeech (TTS)Votre tension artérielle est de 100 supérieure à 80. ResponseText Votre tension artérielle est de 100/80. |
ResponseSpeech (TTS)Votre tension artérielle est de 100/80. ResponseText Votre tension artérielle est de cent plus quatre-vingts. |
SymbolesUtiliser des symboles spécialisés plutôt que du texte pour rendre le contenu visuel plus lisible d'un coup d'œil. |
ResponseSpeech (TTS)Votre dernier achat était de 24,65 $. ResponseText Votre dernier achat était de 24,65 $. |
ResponseSpeech (TTS)Votre dernier achat était de vingt-quatre dollars et soixante-cinq cents. ResponseText Votre dernier achat était de vingt-quatre dollars et soixante-cinq cents. |
Évitez les subtilitésLes subtilités donnent l'impression que les réponses sont distantes et formelles. Laissez-les tomber conversation amicale et informelle. |
ResponseSpeech (TTS)Votre commande a été livrée. ResponseText Votre commande a été livrée. |
ResponseSpeech (TTS)Bien sûr, je peux vous le dire. Votre commande a été livrée. ResponseText Bien sûr, je peux vous le dire. Votre commande a été livrée. |
Évitez les points d'exclamation.Ils peuvent être perçus comme des cris. |
ResponseSpeech (TTS)Vous avez couru 1,5 mile aujourd'hui. ResponseText Vous avez couru 1,5 mile aujourd'hui. |
ResponseSpeech (TTS)Vous avez couru 1,5 mile aujourd'hui ! ResponseText Vous avez couru 1,5 mile aujourd'hui ! |
DuréeUtilisez des chiffres : "5:15", au lieu de "cinq-quinze" ou « trimestre après cinq ». Pour le format 12 heures, utilisez AM ou PM. |
ResponseSpeech (TTS)Votre livraison devrait arriver pour 8h15. ResponseText Votre livraison devrait arriver pour 8h15. |
ResponseSpeech (TTS)Votre livraison devrait arriver aujourd'hui dans 15 minutes après 8 heures du matin. ResponseText Votre livraison devrait arriver aujourd'hui dans 15 minutes après 8 heures du matin. |
Ne vous lancez pas dans les monologuesSoyez informatif, mais faites en sorte que les réponses soient concises. N'utilisez pas la main grossière détails sans avantage clair pour l'utilisateur. |
ResponseSpeech (TTS)Le mois dernier, vous avez consommé 159 heures d'énergie. ResponseText Le mois dernier, vous avez consommé 159 heures d'énergie. |
ResponseSpeech (TTS)Les économies d'énergie sont très importantes pour la planète et l'environnement. Mois dernier vous avez consommé 159 heures d'énergie. Ce mois-ci, vous avez utilisé 58 heures de l'énergie. ResponseText Les économies d'énergie sont très importantes pour la planète et l'environnement. Mois dernier vous avez consommé 159 heures d'énergie. Ce mois-ci, vous avez utilisé 58 heures de l'énergie. |
Utilisez des mots courts et simplesLe langage clair et simple suscite l'intérêt le plus large et le rend accessible aux des personnes de tous horizons. |
ResponseSpeech (TTS)Votre dernière mesure de glycémie était de 126. ResponseText Votre dernière mesure de glycémie était de 126 mg/dL. |
ResponseSpeech (TTS)L'avant-dernier taux de glycémie était de 126. ResponseText L'avant-dernier taux de glycémie était de 126. |
Épinglage au lanceur d'applications
La bibliothèque d'extensions de widgets permet d'afficher le bouton Ajouter ce widget.
avec votre widget dans l'Assistant. Pour activer l'épinglage, ajoutez le destinataire suivant
en AndroidManifest.xml
:
<application>
<receiver android:name="com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.google.assistant.appactions.widgets.COMPLETE_PIN_APP_WIDGET" />
</intent-filter>
</receiver>
<service
android:name=
"com.google.assistant.appactions.widgets.pinappwidget.PinAppWidgetService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action
android:name="com.google.assistant.appactions.widgets.PIN_APP_WIDGET" />
</intent-filter>
</service>
</application>
Disponibilité de l'inventaire
Les intents intégrés compatibles avec l'inventaire intégré ou l'inventaire Web peuvent étendre ces inventaires à vos traitements de widgets.
Inventaire intégré
Le code suivant issu d'un exemple de fichier shortcuts.xml
illustre une
Capacité d'intent intégré START_EXERCISE
configuré pour l'inventaire intégré et le traitement des widgets:
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.StartExerciseAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
app:shortcutMatchRequired="true">
</parameter>
</app-widget>
</capability>
<shortcut android:shortcutId="RunningShortcut">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.example.exampleapp.StartExcerciseActivity" />
<capability-binding
android:capability="actions.intent.START_EXERCISE"
android:parameter="exercise.name"
android:value="running;runs" />
</shortcut>
Dans l'exemple précédent, lorsqu'un utilisateur déclenche cette fonctionnalité en demandant
Assistant, "Commencer à s'exécuter avec ExampleApp", le bundle d'options pour la
Le fulfillment <app-widget>
contient la paire clé-valeur suivante:
- Clé =
“exerciseName”
- Valeur =
“RunningShortcut”
Inventaire Web
Le code suivant, issu d'un exemple de fichier shortcuts.xml
, montre une capacité
pour l'inventaire Web et le traitement des widgets:
<shortcuts>
<capability
android:name="actions.intent.START_EXERCISE">
<app-widget
android:identifier="START_EXERCISE_1"
android:targetClass="com.example.exampleapp.CreateTaxiAppWidgetProvider">
<parameter
android:name="exercise.name"
android:key="exerciseName"
android:mimeType="text/*">
<data android:pathPattern="https://exampleapp.com/exercise/.*" />
</parameter>
</app-widget>
</capability>
</shortcuts>
Tester les actions dans l'application
Utilisez l'outil de test des actions dans les applications, une fonctionnalité du plug-in Assistant Google pour Android Studio, pour tester les widgets sur un appareil physique ou virtuel Pour utiliser l'outil de test, procédez comme suit :
- Connectez votre appareil de test à votre application en cours d'exécution.
- Dans Android Studio, accédez à Tools > App Actions > App Actions Test Tool (Outils > Actions dans l'application > Outil de test des actions dans l'application).
- Cliquez sur Create Preview (Créer un aperçu).
- À l'aide d'Android Studio, exécutez votre application sur votre appareil de test.
- Utilisez l'application Assistant sur votre appareil de test pour tester votre action dans l'application. Pour Par exemple, dites par exemple "Hey Google, combien de kilomètres ai-je parcourus en courant cette semaine sur ExampleApp ?"
- Observez le comportement de votre application ou utilisez le débogueur Android Studio pour vérifier le résultat d'action souhaité.
Consignes relatives à la qualité
Cette section présente les exigences clés et les bonnes pratiques liées à l'intégration d'actions dans les applications avec des widgets.
Contenu des widgets
- (Obligatoire) N'affichez aucune annonce dans vos widgets.
- Axer complètement le contenu du widget sur le traitement de l'intent. À ne pas faire essayer de traiter plusieurs intents avec un seul widget ou ajouter du contenu non pertinent.
Gérer l'authentification
- (Obligatoire) Lorsque l'authentification de l'utilisateur est nécessaire pour mener à bien un parcours utilisateur, renvoyer un widget qui explique que l'utilisateur doit continuer dans l'application. L'authentification utilisateur intégrée à l'Assistant Google n'est pas compatible avec l'application les actions.
- Si les utilisateurs autorisent votre application à afficher des données à l'aide de widgets, vous pouvez renvoyer une d'erreur lors de l'exécution pour les utilisateurs non autorisés.
Intents de remplacement
(Obligatoire) Dans votre
shortcuts.xml
, fournissez toujours un élément de remplacement<intent>
en plus de votre traitement de widget pour une fonctionnalité donnée. Un intent de remplacement est un élément<intent>
sans valeurs<parameter>
obligatoires.Cela permet à l'Assistant d'effectuer une action la requête de l'utilisateur ne contient pas les paramètres requis par l'autre traitement. définis dans la capacité. Il existe une exception à cette règle lorsqu'il n'existe aucun paramètre requis pour cette fonctionnalité, auquel cas seul le traitement du widget est nécessaire.
Utilisez l'intent de remplacement pour ouvrir votre application à l'écran approprié, et non sur l'écran d'accueil.
Le code suivant issu d'un exemple de fichier shortcuts.xml
illustre une
<capability>
avec une <intent>
de remplacement compatible avec une instance principale
Traitement <app-widget>
:
<shortcuts>
<capability
android:name="actions.intent.CREATE_TAXI_RESERVATION">
<!-- Widget with required parameter, specified using the "android:required" attribute. -->
<app-widget
android:identifier="CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.CreateTaxiAppWidgetProvider">
<parameter
android:name="taxiReservation.dropoffLocation.name"
android:key="dropoff"
android:required="true">
</parameter>
</app-widget>
<!-- Fallback intent with no parameters required to successfully execute. -->
<intent
android:identifier="CREATE_TAXI_RESERVATION_3"
android:action="myapplication.intent.CREATE_TAXI_RESERVATION_1"
android:targetClass="com.example.myapplication.TaxiReservationActivity">
</intent>
</capability>
</shortcuts>
Divulgation de données Google Play
Cette section liste les données de l'utilisateur final collectées par la dernière version Bibliothèque d'extensions de widgets.
Ce SDK envoie à l'utilisateur des réponses vocales fournies par le développeur, qui sont annoncées par l'Assistant grâce à sa technologie de synthèse vocale. Ces informations ne sont pas stockées par Google.
Les actions dans l'application peuvent aussi collecter les métadonnées de l'application cliente aux fins suivantes:
- Surveiller les taux d'adoption des différentes versions du SDK
- Pour quantifier l'utilisation des fonctionnalités du SDK dans les applications.