Este é o Centro para Desenvolvedores do Google Home, o novo destino para aprender a desenvolver ações de casa inteligente.
Envie comentários
Solicitar sincronização
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Ponto principal:
é necessário implementar a sincronização de solicitações para enviar uma
integração Cloud-to-cloud .
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 de SYNC original). Isso permite atualizar os dispositivos dos usuários
sem desvincular e vincular novamente a conta deles. Todos os usuários vinculados a esse
identificador vão 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.
Se o usuário renomear um dispositivo.
Se você implementar um novo tipo de dispositivo, característica ou adicionar um novo recurso de dispositivo.
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 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 :
Observação : verifique se você está usando o projeto correto do GCP ao realizar
estas etapas. Esse é o projeto que corresponde ao ID do projeto smart home .
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 de 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 baixado para criar um token da Web JSON (JWT). Para mais informações, consulte
Como autenticar usando uma conta de serviço .
Receba um token de acesso do OAuth 2.0 com o
escopo https://www.googleapis.com/auth/homegraph
usando
oauth2l :
oauth2l fetch --credentials service-account.json \
--scope https://www.googleapis.com/auth/homegraph
Crie a solicitação JSON com o agentUserId
.
Confira um exemplo de solicitação JSON para a sincronização de solicitações:
{
"agentUserId": "user-123"
}
Combine o JSON de sincronização de solicitações e o token na sua solicitação HTTP POST
com o endpoint do Google Home Graph. Confira um exemplo de como
fazer a solicitação na linha de comando usando curl
, como
teste:
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN " \
-H "Content-Type: application/json" \
-d @request-body.json \
"https://homegraph.googleapis.com/v1/devices:requestSync"
Java
A biblioteca de cliente da API HomeGraph para Java fornece vinculações para a API Home Graph.
Inicialize o HomeGraphApiService
usando as credenciais padrão do aplicativo .
Chame o método requestSync
com o RequestSyncDevicesRequest
. Ele retorna um ReportStateAndNotificationResponse
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 );
Observação : interrompa a chamada de sincronização de solicitação ao receber uma intent DISCONNECT , indicando que o usuário desvinculou a conta.
Respostas de erro
Você pode receber uma das seguintes respostas de erro ao chamar a sincronização de solicitações.
Essas respostas são enviadas 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 null
em vez de "" para um valor de string.
403 Forbidden
: o servidor não conseguiu processar a solicitação para o agentUserId
fornecido devido a um erro ao atualizar o token. Verifique se o endpoint OAuth responde
corretamente às solicitações de atualização de token e verifique o status de vinculação
da conta do usuário.
404 Not Found
: o recurso solicitado não foi encontrado,
mas pode estar disponível no futuro. Isso geralmente significa que
a conta do usuário não está vinculada ao Google ou que recebemos um
agentUserId
inválido. Verifique se o agentUserId
corresponde 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 agentUserId
fornecido. Um autor da chamada
só pode emitir uma solicitação de sincronização simultânea, a menos que a flag async
esteja definida como verdadeira.
Envie comentários
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons , e as amostras de código são licenciadas de acordo com a Licença Apache 2.0 . Para mais detalhes, consulte as políticas do site do Google Developers . Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2022-10-31 UTC.
Quer enviar seu feedback?
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Incorrect information","incorrectInformation","thumb-down"],["Not enough information/samples","notEnoughInformationSamples","thumb-down"],["Too complicated","tooComplicated","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2022-10-31 UTC."],[],[]]