Intégrer l'Assistant à votre projet (autres langages)

Suivez les instructions de chaque section ci-dessous pour intégrer l'Assistant Google à votre projet.

Liaisons gRPC

Le service de l'Assistant Google repose sur gRPC, un framework RPC Open Source hautes performances. Ce framework est adapté au streaming audio bidirectionnel.

Python

Si vous utilisez Python, commencez par suivre ce guide.

C++

Consultez notre exemple C++ sur GitHub.

Node.js

Consultez notre exemple Node.js sur GitHub.

Android Things

Vous vous intéressez aux appareils embarqués ? Consultez l'exemple de SDK Assistant pour Android Things.

Autres langues

  • Clonez le dépôt googleapis pour obtenir les définitions de l'interface de tampon de protocole de l'API Google Assistant Service.
  • Suivez la documentation gRPC pour générer des liaisons gRPC pour le langage de votre choix.
  • Suivez la procédure décrite dans les sections ci-dessous.

Autorisez et authentifiez votre compte Google pour qu'il fonctionne avec l'Assistant.

L'étape suivante consiste à autoriser votre appareil à parler à l'Assistant Google à l'aide de votre compte Google.

Obtenir des jetons OAuth avec le champ d'application du SDK de l'Assistant

Le SDK de l'Assistant utilise des jetons d'accès OAuth 2.0 pour autoriser votre appareil à se connecter à l'Assistant.

Lors du prototypage, vous pouvez utiliser l'outil d'autorisation pour générer facilement des identifiants OAuth2.0 à partir du fichier client_secret_<client-id>.json généré lors de l'enregistrement du modèle de votre appareil.

Procédez comme suit pour générer les identifiants:

  1. Utilisez un environnement virtuel Python pour isoler l'outil d'autorisation et ses dépendances des packages Python système.

    sudo apt-get update
    sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
    python3 -m venv env
    env/bin/python -m pip install --upgrade pip setuptools wheel
    source env/bin/activate
    
  2. Installez l'outil d'autorisation:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. Exécutez l'outil. Supprimez l'indicateur --headless si vous l'exécutez depuis un terminal de l'appareil (et non une session SSH):

    google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
    

Lorsque vous êtes prêt à intégrer l'autorisation dans le mécanisme de provisionnement de votre appareil, lisez nos guides sur l'utilisation d'OAuth 2.0 pour accéder aux API Google afin de comprendre comment obtenir, conserver et utiliser des jetons d'accès OAuth pour permettre à votre appareil de communiquer avec l'API Assistant.

Utilisez les éléments suivants lorsque vous parcourez ces guides:

Consultez les bonnes pratiques en matière de confidentialité et de sécurité pour obtenir des recommandations sur la sécurisation de votre appareil.

Authentifier votre connexion gRPC avec des jetons OAuth

Enfin, réunissez tous les éléments en lisant comment utiliser l'authentification basée sur des jetons avec Google pour authentifier la connexion gRPC à l'API Assistant.

Enregistrer votre appareil

Enregistrez le modèle et l'instance de votre appareil manuellement ou à l'aide de l'outil d'enregistrement (disponible en Python).

Implémenter une boîte de dialogue de conversation de base avec l'Assistant

  1. Mettez en œuvre un client gRPC de streaming bidirectionnel pour l'API Google Assistant Service.
  2. Attendez que l'utilisateur déclenche une nouvelle requête (par exemple, attendez une interruption GPIO suite à une pression sur un bouton).
  3. Envoyez un message AssistRequest avec le champ config défini (voir AssistConfig). Assurez-vous que le champ config contient les éléments suivants:

    • Le champ audio_in_config, qui indique comment traiter les données audio_in qui seront fournies dans les requêtes ultérieures (voir AudioInConfig).
    • Le champ audio_out_config, qui spécifie le format que le serveur doit utiliser lorsqu'il renvoie des messages audio_out (voir AudioOutConfig).
    • Le champ device_config, qui identifie l'appareil enregistré auprès de l'Assistant (voir DeviceConfig)
    • Le champ dialog_state_in, qui contient l'identifiant language_code associé à la requête (voir DialogStateIn)
  4. Démarrez l'enregistrement.

  5. Envoyez plusieurs messages AssistRequest sortants contenant les données audio de la requête vocale dans le champ audio_in.

  6. Gérer les messages AssistResponse entrants.

  7. Extraire les métadonnées de conversation du message AssistResponse Par exemple, à partir de dialog_state_out, obtenez conversation_state et volume_percentage (voir DialogStateOut).

  8. Arrêtez l'enregistrement lors de la réception d'un AssistResponse avec un event_type défini sur END_OF_UTTERANCE.

  9. Lire le contenu audio de la réponse de l'Assistant avec les données audio provenant du champ audio_out

  10. Prenez le conversation_state que vous avez extrait précédemment et copiez-le dans le message DialogStateIn du AssistConfig pour le AssistRequest suivant.

Vous devriez alors être prêt à envoyer vos premières requêtes à l'Assistant Google via votre appareil.

Étendre une boîte de dialogue de conversation avec les actions sur l'appareil

Développez la boîte de dialogue de conversation de base ci-dessus pour déclencher les fonctionnalités matérielles uniques de votre appareil:

  1. Dans les messages AssistResponse entrants, extrayez le champ device_action (voir DeviceAction).
  2. Analyser la charge utile JSON du champ device_request_json. Reportez-vous à la page Caractéristiques de l'appareil pour obtenir la liste des caractéristiques prises en charge. Chaque page du schéma de trait affiche un exemple de requête EXECUTE avec la ou les commandes d'appareil et les paramètres renvoyés dans la charge utile JSON.

Obtenir la transcription de la requête de l'utilisateur

Si un écran est connecté à l'appareil, vous pouvez l'utiliser pour afficher la requête de l'utilisateur. Pour obtenir cette transcription, analysez le champ speech_results dans les messages AssistResponse. Une fois la reconnaissance vocale terminée, cette liste contient un élément dont la valeur stability est définie sur 1.0.

Obtenir le rendu textuel et/ou visuel de la réponse de l'Assistant

Si un écran est connecté à l'appareil, vous pouvez l'utiliser pour afficher la réponse de l'Assistant en texte brut à la requête de l'utilisateur. Ce texte se trouve dans le champ DialogStateOut.supplemental_display_text.

L'Assistant accepte des réponses visuelles via HTML5 pour certaines requêtes (Quel temps fait-il à Mountain View ? ou Quelle heure est-il ?). Pour l'activer, définissez le champ screen_out_config dans AssistConfig. Le message ScreenOutConfig contient un champ screen_mode qui doit être défini sur PLAYING.

Le champ screen_out sera alors défini pour les messages AssistResponse. Vous pouvez extraire les données HTML5 (le cas échéant) du champ data.

Envoyer des requêtes via la saisie de texte

Si une interface de texte (un clavier, par exemple) est connectée à l'appareil, définissez le champ text_query dans le champ config (voir AssistConfig). Ne définissez pas le champ audio_in_config.

Dépannage

Si vous rencontrez des problèmes, consultez la page Dépannage.