Request Sync attiva una richiesta SYNC
al tuo fulfillment per qualsiasi utente Google
con dispositivi che hanno l'agentUserId
specificato
associato (che hai inviato nella richiesta SYNC originale). In questo modo puoi aggiornare i dispositivi degli utenti
senza scollegare e ricollegare il loro account. Tutti gli utenti collegati a questo
identificatore riceveranno una richiesta di 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 di dispositivo, tratto o aggiungi una nuova funzionalità del dispositivo.
Inizia
Per implementare Request Sync:
Abilita l'API Google HomeGraph
-
In Google Cloud Console, vai alla pagina API HomeGraph.
Vai alla pagina dell'API HomeGraph - Seleziona il progetto che corrisponde al tuo ID progetto smart home.
- Fai clic su ABILITA.
Crea una chiave del service account
Segui queste istruzioni per generare una chiave del service account da Google Cloud Console:
-
In Google Cloud Console, vai alla pagina Service account.
Vai alla pagina Service account.Potresti dover selezionare un progetto prima di accedere alla pagina Service Account.
Fai clic su
Crea service account.Nel campo Nome account di servizio, inserisci un nome.
Nel campo ID account di servizio, inserisci un ID.
Nel campo Descrizione service account, inserisci una descrizione.
Fai clic su Crea e continua.
Dal menu a discesa Ruolo, seleziona Account di servizio > Service Account OpenID Connect Identity Token Creator.
Fai clic su Continua.
Fai clic su Fine.
Seleziona l'account di servizio appena creato dall'elenco degli account di servizio e seleziona Gestisci chiavi dal menu
Azioni.Seleziona Aggiungi chiave > Crea nuova chiave.
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 HomeGraph fornisce un endpoint HTTP
- Utilizza il file JSON dell'account di servizio scaricato per creare un JSON Web Token (JWT). Per maggiori informazioni, vedi Autenticazione tramite un service account.
- 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 Request Sync: - Combina il JSON Request Sync e il token nella richiesta HTTP POST
all'endpoint 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 dei buffer di protocollo per l'API Home Graph.
- Segui la documentazione per sviluppatori gRPC per generare stub client per una delle lingue supportate.
- 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 le credenziali predefinite dell'applicazione. - Chiama il metodo
requestSync
con RequestSyncDevicesRequest. Restituisce unPromise
con un 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 HomeGraph.
- Inizializza
HomeGraphApiService
utilizzando le credenziali predefinite dell'applicazione. - Chiama il metodo
requestSync
conRequestSyncDevicesRequest
. Restituisce unReportStateAndNotificationResponse
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 Request Sync, potresti ricevere una delle seguenti risposte di errore. Queste risposte si presentano sotto forma di codici di stato HTTP.
400 Bad Request
- Il server non è riuscito a 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 stringa.403 Forbidden
- Il server non è riuscito a elaborare la richiesta peragentUserId
a causa di un errore durante l'aggiornamento del token. Assicurati che l'endpoint OAuth risponda correttamente alle richieste di token di aggiornamento e controlla lo stato del collegamento dell'account dell'utente.404 Not Found
- Impossibile trovare la risorsa richiesta, ma potrebbe essere disponibile in futuro. In genere, questo significa che l'account utente non è collegato a Google o abbiamo ricevuto unagentUserId
non valido. Assicurati cheagentUserId
corrisponda al valore fornito nella risposta SYNC e che tu gestisca correttamente gli intent DISCONNECT.429 Too Many Requests
- È stato superato il numero massimo di richieste di sincronizzazione simultanea per ilagentUserId
specificato. Un chiamante può inviare una sola richiesta di sincronizzazione simultanea, a meno che il flagasync
non sia impostato su true.