A sincronização de solicitações aciona uma solicitação SYNC
para o fulfillment para qualquer usuário do Google
com dispositivos que tenham o
agentUserId
especificado associado a eles (que você
enviou na solicitação SYNC original). Isso permite que você atualize 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 remover um dispositivo existente.
- Se o usuário renomear um dispositivo existente.
- Se você implementar um novo tipo de dispositivo, traço ou adicionar um novo recurso.
Começar
Para implementar a sincronização de solicitações, siga estas etapas:
Ativar a API Google HomeGraph
-
No Google Cloud Console, acesse a página API HomeGraph.
Acessar a página da API HomeGraph - Selecione o projeto que corresponde ao ID smart home do seu projeto.
- Clique em ATIVAR.
Criar uma chave da conta de serviço
Siga estas instruções para gerar uma chave da 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 é 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 o Request Sync: - Combine o JSON do Request Sync e o token na 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 gRPC
- Consiga a definição do serviço de 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
As Google APIs Node.js Client fornecem 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. Ele retorna umPromise
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 do gráfico do Google Home.
- Inicialize o
HomeGraphApiService
usando o Application Default Credentials. - Chame o método
requestSync
comRequestSyncDevicesRequest
. Ele 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
Você pode receber 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 pôde processar a solicitação enviada pelo cliente devido a sintaxe inválida. As causas comuns incluem JSON malformado ou o uso denull
em vez de "" para um valor de string.403 Forbidden
: o servidor não pôde processar a solicitação para um 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 da vinculação da conta do usuário.404 Not Found
: o recurso solicitado não foi encontrado, mas pode 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 os intents DISCONNECT.429 Too Many Requests
: o número máximo de solicitações de sincronização simultâneas foi excedido para oagentUserId
especificado. O autor da chamada pode emitir apenas uma solicitação de sincronização simultânea, a menos que a sinalizaçãoasync
esteja definida como verdadeira.