A sincronização de solicitações aciona uma solicitação SYNC
para o fulfillment de qualquer usuário do Google
com dispositivos que têm a
agentUserId
associados a eles (que você
enviada na solicitação SYNC original). Isso permite que você atualize as informações dispositivos
sem desvincular e vincular
novamente a conta. Todos os usuários vinculados a esta
vai receber uma solicitação SYNC
.
Você precisa acionar uma solicitação SYNC
:
- Se o usuário adicionar um novo dispositivo.
- Se o usuário remover um dispositivo atual.
- Se o usuário renomear um dispositivo existente.
- Se você implementar um novo tipo de dispositivo, uma nova 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 API HomeGraph.
Acessar a página da API HomeGraph - Selecione o projeto que corresponde ao ID do seu projeto do smart home.
- Clique em ATIVAR.
Criar uma chave de 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, insira um ID.
Na lista Papel, selecione Contas de serviço > Criador de token da conta de serviço.
Em Tipo de chave, selecione a opção JSON.
- Clique em Criar. Um arquivo JSON que contém a chave para o seu computador.
Chamar a API
HTTP
A API Home Graph fornece um endpoint HTTP
- Use o arquivo JSON da conta de serviço salvo 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 a
escopo
https://www.googleapis.com/auth/homegraph
usando oauth2l: - Crie a solicitação JSON com o
agentUserId
. Este é um exemplo de solicitação JSON para a sincronização de solicitações: - Combinar o JSON de sincronização de solicitação e o token no seu HTTP POST
para o endpoint do Google Home Graph. Aqui está um exemplo de como
para fazer a solicitação na linha de comando usando
curl
, conforme 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 (em inglês).
- Confira 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
O cliente Node.js das APIs do Google fornece vinculações para a API Home Graph.
- Inicialize o serviço
google.homegraph
com o Application Default Credentials. - Chame o método
requestSync
com RequestSyncDevicesRequest. Ele retorna umPromise
com uma RequestSyncDevicesResponse vazia.
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 à API Home Graph.
- Inicialize o
HomeGraphApiService
usando o Application Default Credentials. - Chame o método
requestSync
com oRequestSyncDevicesRequest
. Ele retorna umaReportStateAndNotificationResponse
vazia.
// 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
: não foi possível processar o servidor a solicitação enviada pelo cliente devido a uma sintaxe inválida. Causas comuns incluir JSON incorreto ou usarnull
em vez de "" para um valor de string.403 Forbidden
: o servidor não conseguiu processar a a solicitação deagentUserId
fornecido devido a um erro ao atualizando o token. Verifique se o endpoint OAuth responde corretamente para atualizar as solicitações de token e verificar a vinculação da conta do usuário o status atual da conta.404 Not Found
- O recurso solicitado não pôde ser foram encontradas, mas podem estar disponíveis no futuro. Normalmente, isso significa que a conta do usuário não está vinculada ao Google ou recebemos umaagentUserId
: Verifique se oagentUserId
corresponde ao valor fornecido no sua resposta SYNC e você estará processamento de intents DISCONNECT.429 Too Many Requests
: número máximo de sincronizações simultâneas solicitações foram excedidas para oagentUserId
especificado. O autor da chamada só pode emitir uma solicitação de sincronização simultânea, a menos que oasync
é definida como verdadeira.