La sincronizzazione delle richieste attiva una richiesta SYNC
al tuo fulfillment per qualsiasi utente Google
con dispositivi con
agentUserId
associati (che hai
inviato nella richiesta SYNC originale). Questo ti permette di aggiornare dispositivi
senza scollegare e ricollegare il proprio account. Tutti gli utenti collegati all'account
riceverà 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.
- Nel campo Nome account di servizio, inserisci un nome.
- 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 vengono scaricati 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 file JSON Web token (JWT). Per ulteriori informazioni, vedi Autenticazione con un account di servizio.
- Ottieni un token di accesso OAuth 2.0 con
https://www.googleapis.com/auth/homegraph
ambito utilizzando oauth2l: - Crea la richiesta JSON con
agentUserId
. Ecco una richiesta JSON di esempio per la sincronizzazione delle richieste: - Combinare il file JSON di sincronizzazione della richiesta e il token nel file POST HTTP
all'endpoint di Google Home Graph. Ecco un esempio di come
per effettuare la richiesta nella riga di comando utilizzando
curl
, come un 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 è riuscito a elaborare la richiesta inviata dal client a causa di una sintassi non valida. Cause comuni includi un file JSON non corretto o utilizzinull
al posto di "" per un valore stringa.403 Forbidden
- Il server non è riuscito a elaborare il la richiesta peragentUserId
a causa di un errore durante aggiornare il token. Assicurati che il tuo endpoint OAuth risponda per aggiornare le richieste di token e controllare il collegamento dell'account dell'utente .404 Not Found
- Impossibile eseguire la risorsa richiesta trovati, ma potrebbero essere disponibili in futuro. Generalmente, ciò significa che l'account utente non è collegato a Google o abbiamo ricevuto un messaggio non validoagentUserId
. Assicurati cheagentUserId
corrisponda al valore specificato in la risposta SYNC, dopodiché potrai e gestire gli intent DISCONNECT.429 Too Many Requests
- Numero massimo di sincronizzazioni simultanee richieste sono state superate per ilagentUserId
specificato. Un chiamante può inviare una sola richiesta di sincronizzazione in contemporanea a meno che l'async
sia impostato su true.