O Request Sync aciona uma solicitação SYNC para seu 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). Isso permite atualizar os dispositivos dos usuários
sem desvincular e vincular a conta novamente. Todos os usuários vinculados a esse
identificador vão receber uma solicitação de SYNC.
Você precisa acionar uma solicitação SYNC:
- Se o usuário adicionar um novo dispositivo.
- Se o usuário remover um dispositivo.
- Se o usuário renomear um dispositivo.
- Se você implementar um novo tipo de dispositivo, característica ou adicionar um novo recurso.
Primeiros passos
Para implementar a sincronização de solicitações, siga estas etapas:
Ativar a API Google HomeGraph
- 
    No Google Cloud Console, acesse a página da API HomeGraph. Acessar a página da API HomeGraph
- Selecione o projeto que corresponde ao ID do 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 no Google Cloud Console:
- 
    No Google Cloud Console, acesse a página Contas de serviço. Acesse a página "Contas de serviço".Talvez seja necessário selecionar um projeto antes de acessar a página "Contas de serviço". 
- Clique em Criar conta de serviço. 
- No campo Nome da conta de serviço, insira um nome. 
- No campo ID da conta de serviço, insira um ID. 
- No campo Descrição da conta de serviço, insira uma descrição. 
- Clique em Criar e continuar. 
- No menu suspenso Papel, selecione Contas de serviço > Criador do token de identidade do OpenID Connect da conta de serviço. 
- Clique em Continuar. 
- Clique em Concluído. 
- Selecione a conta de serviço que você acabou de criar na lista de contas de serviço e escolha Gerenciar chaves no menu Ações. 
- Selecione Adicionar chave > Criar nova chave. 
- Em Tipo de chave, selecione a opção JSON. 
- Clique em Criar. O download de um arquivo JSON com sua chave é feito no computador. 
Chamar a API
HTTP
A API Home Graph fornece um endpoint HTTP
- Use o arquivo JSON da conta de serviço baixado para criar um JSON Web Token (JWT). Para mais informações, consulte Autenticação usando uma conta de serviço.
- Receba um token de acesso do OAuth 2.0 com o escopo
    https://www.googleapis.com/auth/homegraphusando oauth2l:
- Crie a solicitação JSON com o agentUserId. Confira um exemplo de solicitação JSON para a sincronização de solicitações:
- Combine o JSON de sincronização de solicitação e o token na sua solicitação HTTP POST
    para o endpoint do Google Home Graph. Confira um exemplo de como
    fazer a solicitação na linha de comando usando curl, como um 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 fornece um endpoint gRPC
- Solicite a definição de serviço de Buffers de protocolo da API Home Graph.
- Siga a documentação para desenvolvedores do gRPC e gere stubs de cliente para uma das linguagens compatíveis.
- Chame o método RequestSync.
Node.js
O cliente Node.js das APIs do Google fornece vinculações para a API Home Graph.
- Inicialize o serviço google.homegraphusando as credenciais padrão do aplicativo.
- Chame o método requestSynccom o RequestSyncDevicesRequest. Ele retorna umPromisecom 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 oferece vinculações para a API Home Graph.
- Inicialize o HomeGraphApiServiceusando as credenciais padrão do aplicativo.
- Chame o método requestSynccom oRequestSyncDevicesRequest. Ele retorna umReportStateAndNotificationResponsevazio.
// 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 a sincronização de solicitação. 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 o uso de- nullem vez de "" para um valor de string.
- 403 Forbidden: o servidor não conseguiu processar a solicitação do- agentUserIddevido a um erro ao atualizar o token. Verifique se o endpoint OAuth responde corretamente às solicitações de token de atualização e confira o status da vinculação de conta do usuário.
- 404 Not Found- Não foi possível encontrar o recurso solicitado, mas ele pode estar disponível no futuro. Normalmente, isso significa que a conta de usuário não está vinculada ao Google ou que recebemos um- agentUserIdinválido. Verifique se o- agentUserIdcorresponde ao valor fornecido na resposta 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 o- agentUserIdespecificado. Um caller só pode emitir uma solicitação de sincronização simultânea, a menos que a flag- asyncesteja definida como "true".