La synchronisation des requêtes déclenche une requête SYNC
auprès de votre traitement pour tout utilisateur Google disposant d'appareils associés à l'agentUserId
spécifiée (que vous avez envoyée dans la requête SYNC d'origine). Vous pouvez ainsi mettre à jour les appareils des utilisateurs sans dissocier et 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, une nouvelle caractéristique ou une nouvelle fonctionnalité
Commencer
Pour implémenter la synchronisation des requêtes, procédez comme suit:
Activer l'API Google HomeGraph
-
Dans Google Cloud Console, accédez à la page API HomeGraph.
Accéder à la page de l'API HomeGraph - Sélectionnez le projet correspondant à votre ID de projet smart home.
- Cliquez sur ENABLE (ACTIVER).
Créer une clé de compte de service
Suivez ces instructions pour générer une clé de compte de service à partir de Google Cloud Console:
-
Dans Google Cloud Console, accédez à la page Créer une clé de compte de service.
Accéder à la page Créer une clé de compte de service - Dans la liste Compte de service, sélectionnez Nouveau compte de service.
- Dans le champ Nom du compte de service, saisissez un nom.
- Dans le champ ID du compte de service, saisissez un ID.
Dans la liste Rôle, sélectionnez Comptes de service > Créateur de jetons de compte de service.
Pour Type de clé, sélectionnez l'option JSON.
- Cliquez sur Créer. Un fichier JSON contenant votre clé est téléchargé sur votre ordinateur.
Appeler l'API
HTTP
L'API Home Graph fournit un point de terminaison HTTP
- Utilisez le fichier JSON du compte de service téléchargé pour créer un jeton Web JSON (JWT). Pour en savoir plus, consultez la section S'authentifier à l'aide d'un compte de service.
- Obtenez un jeton d'accès OAuth 2.0 avec le champ d'application
https://www.googleapis.com/auth/homegraph
à l'aide de oauth2l: - Créez la requête JSON avec
agentUserId
. Voici un exemple de requête JSON pour la synchronisation des requêtes: - Combinez le fichier JSON de la demande de synchronisation et le jeton dans votre requête HTTP POST au point de terminaison Google Home Graph. Voici un exemple d'envoi de la requête dans la ligne de commande à l'aide de
curl
, à titre de test:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "user-123" }
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.
- Obtenez la définition de service Protocol Buffers pour l'API Home Graph.
- Suivez la documentation pour les développeurs gRPC pour générer des stubs de client dans l'un des langages compatibles.
- Appelez la méthode RequestSync.
Node.js
Le client Node.js des API Google fournit des liaisons pour l'API Home Graph.
- Initialisez le service
google.homegraph
à l'aide des identifiants par défaut de l'application. - Appelez la méthode
requestSync
avec RequestSyncDevicesRequest. Il renvoie unPromise
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.
- Initialisez
HomeGraphApiService
à l'aide des identifiants par défaut de l'application. - Appelez la méthode
requestSync
avecRequestSyncDevicesRequest
. Elle renvoie un objetReportStateAndNotificationResponse
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
L'une des réponses d'erreur suivantes peut s'afficher lorsque vous appelez Request Sync. 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 incorrecte. Les causes courantes incluent un JSON mal formé ou l'utilisation denull
au lieu de "" pour une valeur de chaîne.403 Forbidden
: le serveur n'a pas pu traiter la requête pouragentUserId
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 de renouvellement de jeton et vérifiez l'état de l'association de compte de l'utilisateur.404 Not Found
: la ressource demandée n'a pas été trouvée, mais elle pourrait l'être à l'avenir. Cela signifie généralement que le compte utilisateur n'est pas associé à Google ou que nous avons reçu unagentUserId
non valide. Assurez-vous queagentUserId
correspond à la valeur fournie dans votre réponse SYNC et que vous gérez correctement les intents DISCONNECT.429 Too Many Requests
: le nombre maximal de requêtes de synchronisation simultanées a été dépassé pour leagentUserId
donné. Un appelant ne peut émettre qu'une seule requête de synchronisation simultanée, sauf si l'indicateurasync
est défini sur "true".