Demander la synchronisation

Cloud-to-cloud

La synchronisation des requêtes déclenche une requête SYNC pour votre traitement pour tout utilisateur Google dont les appareils sont associés à l'agentUserId spécifié (que vous avez envoyé dans la requête SYNC d'origine). Cela vous permet de mettre à jour les appareils des utilisateurs sans dissocier ni réassocier leur compte. Tous les utilisateurs associés à cet identifiant recevront une requête SYNC.

Vous devez déclencher une requête SYNC :

  • si l'utilisateur ajoute un nouvel appareil ;
  • si l'utilisateur supprime un appareil existant ;
  • si l'utilisateur renomme un appareil existant ;
  • si vous implémentez un nouveau type d'appareil, un nouveau trait ou si vous ajoutez une nouvelle fonctionnalité à un appareil.

Premiers pas

Pour implémenter la synchronisation des requêtes, procédez comme suit :

Activer l'API Google HomeGraph

  1. Dans la Google Cloud Console, accédez à la page API HomeGraph.

    Accéder à la page de l'API HomeGraph
  2. Sélectionnez le projet qui correspond à l'ID de votre projet smart home.
  3. Cliquez sur ACTIVER.

Créer une clé de compte de service

Suivez ces instructions pour générer une clé de compte de service à partir du Google Cloud Console :

Remarque : Assurez-vous d'utiliser le bon projet GCP lorsque vous effectuez ces étapes. Il s'agit du projet qui correspond à l'ID de votre projet smart home.
  1. Dans la Google Cloud Console, accédez à la page Comptes de service.

    Accéder à la page "Comptes de service".

    Vous devrez peut-être sélectionner un projet avant d'accéder à la page "Comptes de service".

  2. Cliquez sur Créer un compte de service.

  3. Dans le champ Nom du compte de service, saisissez un nom.

  4. Dans le champ ID du compte de service, saisissez un ID.

  5. Dans le champ Description du compte de service, saisissez une description.

  6. Cliquez sur Créer et continuer.

  7. Dans le menu déroulant Rôle, sélectionnez Comptes de service > Créateur de jetons d'identité OpenID Connect du compte de service.

  8. Cliquez sur Continuer.

  9. Cliquez sur OK.

  10. Sélectionnez le compte de service que vous venez de créer dans la liste des comptes de service, puis sélectionnez Gérer les clés dans le Actions menu.

  11. Sélectionnez Ajouter une clé > Créer une clé.

  12. Pour le Type de clé, sélectionnez l'option JSON.

  13. Cliquez sur Créer. Un fichier JSON contenant votre clé est téléchargé sur votre ordinateur.

Pour obtenir des instructions détaillées et des informations sur la création de clés de compte de service, consultez Créer et supprimer des clés de compte de service sur le site d'aide de la console Google Cloud.

Appeler l'API

HTTP

L'API Home Graph fournit un point de terminaison HTTP.

  1. Utilisez le fichier JSON du compte de service téléchargé pour créer un jeton Web Token (JWT). Pour en savoir plus, consultez la section S'authentifier à l'aide d'un compte de service.
  2. Obtenez un jeton d'accès OAuth 2.0 avec le https://www.googleapis.com/auth/homegraph champ d'application à l'aide d' oauth2l :
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. Créez la requête JSON avec l'agentUserId. Voici un exemple de requête JSON pour la synchronisation des requêtes :
  5. {
      "agentUserId": "user-123"
    }
  6. Combinez le JSON de synchronisation des requêtes et le jeton dans votre requête HTTP POST au point de terminaison Google Home Graph. Voici un exemple de requête dans la ligne de commande à l'aide de curl, à titre de test :
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:requestSync"
    

gRPC

L'API Home Graph fournit un point de terminaison gRPC.

  1. Obtenez la définition de service Protocol Buffers pour l'API Home Graph.
  2. Suivez la documentation pour les développeurs gRPC afin de générer des stubs clients pour l'un des langages compatibles.
  3. Appelez la méthode RequestSync.

Node.js

Le client Node.js des API Google fournit des liaisons pour l'API Home Graph.

  1. Initialisez le google.homegraph service à l'aide des identifiants par défaut de l'application.
  2. Appelez la requestSync méthode avec la RequestSyncDevicesRequest. Elle renvoie un Promise avec un RequestSyncDevicesResponse vide.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.requestSync({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    async: false
  }
});
    

Java

La bibliothèque cliente de l'API HomeGraph pour Java fournit des liaisons pour l'API Home Graph.

  1. Initialisez HomeGraphApiService à l'aide des identifiants par défaut de l'application.
  2. Appelez la requestSync méthode avec RequestSyncDevicesRequest. Elle renvoie un ReportStateAndNotificationResponse vide.
// Get Application Default credentials.
GoogleCredentials credentials =
    GoogleCredentials.getApplicationDefault()
        .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

// Create Home Graph service client.
HomeGraphService homegraphService =
    new HomeGraphService.Builder(
            GoogleNetHttpTransport.newTrustedTransport(),
            GsonFactory.getDefaultInstance(),
            new HttpCredentialsAdapter(credentials))
        .setApplicationName("HomeGraphExample/1.0")
        .build();

// Request sync.
RequestSyncDevicesRequest request =
    new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false);
homegraphService.devices().requestSync(request);
    

Réponses d'erreur

Vous pouvez recevoir l'une des réponses d'erreur suivantes lorsque vous appelez la synchronisation des requêtes. Ces réponses se présentent sous la forme de codes d'état HTTP.

  • 400 Bad Request : le serveur n'a pas pu traiter la requête envoyée par le client en raison d'une syntaxe non valide. Les causes courantes incluent un JSON mal formé ou l'utilisation de null au lieu de "" pour une valeur de chaîne.
  • 403 Forbidden : le serveur n'a pas pu traiter la requête pour le agentUserId donné en raison d'une erreur lors de l' actualisation du jeton. Assurez-vous que votre point de terminaison OAuth répond correctement aux requêtes d'actualisation du jeton et vérifiez l'état d'association du compte de l'utilisateur.
  • 404 Not Found - La ressource demandée est introuvable, mais elle pourra peut-être être disponible à l'avenir. En règle générale, cela signifie que le compte utilisateur n'est pas associé à Google ou que nous avons reçu un agentUserId non valide. Assurez-vous que le agentUserId correspond à la valeur fournie dans votre SYNC et que vous gérez correctement les intentions DISCONNECT.
  • 429 Too Many Requests - le nombre maximal de requêtes de synchronisation simultanées a été dépassé pour le agentUserId donné. Un appelant ne peut émettre qu'une seule requête de synchronisation simultanée, sauf si l'indicateur async est défini sur "true".