La sincronizzazione della richiesta attiva una richiesta SYNC
al tuo fulfillment per qualsiasi utente Google
con dispositivi a cui è associato il
agentUserId
specificato (che hai inviato nella richiesta SYNC originale). In questo modo puoi aggiornare i dispositivi degli utenti
senza scollegare e ricollegare i loro account. Tutti gli utenti collegati a questo
identificatore riceveranno una richiesta SYNC
.
Devi attivare una richiesta SYNC
:
- Se l'utente aggiunge un nuovo dispositivo.
- Se l'utente rimuove un dispositivo esistente.
- Se l'utente rinomina un dispositivo esistente.
- Se implementi un nuovo tipo o trait di dispositivo o aggiungi una nuova funzionalità del dispositivo.
Inizia
Per implementare la sincronizzazione della richiesta, segui questi passaggi:
Attiva l'API Google HomeGraph
-
In Google Cloud Console, vai alla pagina dell'API HomeGraph.
Vai alla pagina dell'API HomeGraph - Seleziona il progetto che corrisponde al tuo ID progetto smart home.
- Fai clic su ABILITA.
Creare una chiave dell'account di servizio
Segui queste istruzioni per generare una chiave dell'account di servizio dal Google Cloud Console:
-
In Google Cloud Console, vai alla pagina Crea chiave account di servizio.
Vai alla pagina Crea chiave dell'account di servizio - Dall'elenco Account di servizio, seleziona Nuovo account di servizio.
- Inserisci un nome nel campo Nome account di servizio.
- Nel campo ID account di servizio, inserisci un ID.
Nell'elenco Ruolo, seleziona Account di servizio > Creatore token account di servizio.
In Tipo di chiave, seleziona l'opzione JSON.
- Fai clic su Crea. Un file JSON contenente la chiave viene scaricato sul computer.
Chiama l'API
HTTP
L'API Home Graph fornisce un endpoint HTTP
- Utilizza il file JSON dell'account di servizio scaricato per creare un token web JSON (JWT). Per maggiori informazioni, consulta la sezione Autenticazione con un account di servizio.
- Ottieni un token di accesso OAuth 2.0 con l'ambito
https://www.googleapis.com/auth/homegraph
utilizzando oauth2l: - Crea la richiesta JSON con
agentUserId
. Ecco una richiesta JSON di esempio per la sincronizzazione delle richieste: - Combina il file JSON di richiesta di sincronizzazione e il token nella richiesta POST HTTP
con l'endpoint di Google Home Graph. Ecco un esempio di come effettuare la richiesta nella riga di comando utilizzando
curl
, come 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 fornisce un endpoint gRPC
- Ottieni la definizione del servizio buffer di protocollo per l'API Home Graph.
- Segui la documentazione per gli sviluppatori gRPC per generare stub client per uno dei lingue supportati.
- Chiama il metodo RequestSync.
Node.js
Il client Node.js delle API di Google fornisce associazioni per l'API Home Graph.
- Inizializza il servizio
google.homegraph
utilizzando Credenziali predefinite dell'applicazione. - Chiama il metodo
requestSync
con RequestSyncDevicesRequest. Restituisce un valorePromise
con un campo RequestSyncDevicesResponse vuoto.
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 libreria client dell'API HomeGraph per Java fornisce associazioni per l'API Home Graph.
- Inizializza
HomeGraphApiService
utilizzando Credenziali predefinite dell'applicazione. - Chiama il metodo
requestSync
conRequestSyncDevicesRequest
. Restituisce un valoreReportStateAndNotificationResponse
vuoto.
// 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);
Risposte di errore
Quando chiami la sincronizzazione della richiesta, è possibile che venga visualizzata una delle seguenti risposte di errore. Queste risposte si presentano sotto forma di codici di stato HTTP.
400 Bad Request
- Il server non è stato in grado di elaborare la richiesta inviata dal client a causa di una sintassi non valida. Le cause comuni includono JSON non valido o l'utilizzo dinull
anziché "" per un valore di stringa.403 Forbidden
- Il server non è stato in grado di elaborare la richiesta peragentUserId
specificato a causa di un errore durante l'aggiornamento del token. Assicurati che l'endpoint OAuth risponda correttamente alle richieste di aggiornamento dei token e controlla lo stato di collegamento dell'account dell'utente.404 Not Found
- Non è stato possibile trovare la risorsa richiesta, ma potrebbe essere disponibile in futuro. In genere, significa che l'account utente non è collegato a Google o che abbiamo ricevuto unagentUserId
non valido. Assicurati cheagentUserId
corrisponda al valore fornito nella risposta SYNC e che gestisci correttamente gli intent DISCONNECT.429 Too Many Requests
- Il numero massimo di richieste di sincronizzazione simultanee è stato superato per ilagentUserId
specificato. Un chiamante può inviare una sola richiesta di sincronizzazione in contemporanea a meno che il flagasync
non sia impostato su true.