A Sincronização de solicitações aciona uma solicitação SYNC
para o fulfillment de qualquer usuário do Google
com dispositivos que tenham o
agentUserId
especificado associado a eles, que você
enviou na solicitação SYNC original. Com isso, você pode atualizar os dispositivos dos usuários sem desvincular e vincular novamente as contas deles. Todos os usuários vinculados a esse
identificador receberão uma solicitação SYNC
.
É necessário acionar uma solicitação SYNC
:
- Se o usuário adicionar um novo dispositivo.
- Se o usuário remove um dispositivo existente.
- Se o usuário renomear um dispositivo.
- se você implementar um novo tipo de dispositivo, característica ou adicionar um novo recurso de dispositivo.
Começar
Para implementar a solicitação de sincronização, siga estas etapas:
Ativar a API Google HomeGraph
-
No Google Cloud Console, go to the HomeGraph API page.
Acessar a página da API HomeGraph - Selecione o projeto que corresponde ao ID do seu projeto smart home.
- Clique em ATIVAR.
Criar uma chave de conta de serviço
Siga estas instruções para gerar uma chave de conta de serviço do Google Cloud Console:
-
No Google Cloud Console, acesse a página Criar chave da conta de serviço.
Acessar página "Criar chave da conta de serviço" - Na lista Conta de serviço, selecione Nova conta de serviço.
- No campo Nome da conta de serviço, insira um nome.
- No campo ID da conta de serviço, digite um ID.
Na lista Papel, selecione Contas de serviço > Criador do token da conta de serviço.
Em Tipo de chave, selecione a opção JSON.
- Clique em Criar. O download de um arquivo JSON com a chave vai ser feito no computador.
Chamar a API
HTTP
A API Home Graph oferece um endpoint HTTP.
- Use o arquivo JSON da conta de serviço salva para criar um JSON Web Token (JWT). Para mais informações, consulte Como autenticar usando uma conta de serviço.
- Consiga um token de acesso do OAuth 2.0 com o
escopo
https://www.googleapis.com/auth/homegraph
usando oauth2l: - Crie a solicitação JSON com
agentUserId
. Veja um exemplo de solicitação JSON para a Sincronização de solicitações: - Combine o JSON do Sync Sync e o token na sua solicitação POST HTTP
com o endpoint do Google Home Graph. Veja um exemplo de como
fazer a solicitação na linha de comando usando
curl
como teste:
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
A API Home Graph oferece um endpoint do gRPC.
- Encontre a definição de serviço dos buffers de protocolo para a API Home Graph.
- Siga a documentação do desenvolvedor do gRPC para gerar stubs de cliente para uma das linguagens compatíveis.
- Chame o método RequestSync.
Node.js
O cliente de APIs do Google para Node.js fornece vinculações para a API Home Graph.
- Inicialize o serviço do
google.homegraph
usando o Application Default Credentials. - Chame o método
requestSync
com RequestSyncDevicesRequest. Ela retorna umaPromise
com um RequestSyncDevicesResponse vazio.
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
A biblioteca de cliente da API HomeGraph para Java fornece vinculações para a API Home Graph.
- Inicialize o
HomeGraphApiService
usando o Application Default Credentials. - Chame o método
requestSync
com oRequestSyncDevicesRequest
. Ela retorna umReportStateAndNotificationResponse
vazio.
// 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);
Respostas de erro
Talvez você receba uma das seguintes respostas de erro ao chamar o Request Sync. Essas respostas vêm na forma de códigos de status HTTP.
400 Bad Request
: o servidor não conseguiu processar a solicitação enviada pelo cliente devido a uma sintaxe inválida. As causas comuns incluem JSON malformado ou usandonull
em vez de "" para um valor de string.403 Forbidden
: o servidor não conseguiu processar a solicitação de determinadoagentUserId
devido a um erro ao atualizar o token. Verifique se o endpoint do OAuth responde corretamente para atualizar as solicitações de token e verificar o status de vinculação da conta do usuário.404 Not Found
: o recurso solicitado não foi encontrado, mas poderá estar disponível no futuro. Normalmente, isso significa que a conta de usuário não está vinculada ao Google ou recebemos umagentUserId
inválido. Verifique seagentUserId
corresponde ao valor fornecido na resposta de SYNC e se você está processando corretamente as intents DISCONNECT.429 Too Many Requests
: o número máximo de solicitações de sincronização simultâneas foi excedido para oagentUserId
. O autor da chamada só pode emitir uma solicitação de sincronização simultânea, a menos que a sinalizaçãoasync
esteja definida como verdadeira.