Esta é a Central do desenvolvedor do Google Home, a nova plataforma para aprender a desenvolver ações de casa inteligente. Observação: você continua criando ações no Console do Actions.

Estado do relatório

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
uma modificar dafe das listas do listas do listas do pretende do pretende pretende pretende pretende pretende pretende pretende pretende pretende pretende pretende querer pretende contra pretende contra pretende contra pretende contra ideal ideal ideal ideal ideal ideal presta presta presta presta presta real presta real real real prot vender prot vender agentes agentes upload prot agentes agentes agentes prot referente referente referente referente como como como como como como sobre sobre sobre sobre sobre sobre sobre sobre sobre Além Além Além Além Está Está Está Está deixe deixe deixe naquele upload meu upload diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente diretamente associar upload upload upload durante durante deverá deverá upload upload diretamente diretamente diretamente diretamente upload diretamente diretamente diretamente upload upload diretamente diretamente diretamente diretamente Receba Receba Receba Receba Receba ( pro próximo Receba Receba Receba Receba Receba Receba Receba Receba referente Receba referente referente referente referente referente referente Receba referente Receba click ideais ideais ideais ideais ideais ideais ideais ideais ideais ideais ideais ideais ideais levando!!!!zz!!!zz!!!voc"),

Report State é um recurso importante que permite que a ação Home informe proativamente o status mais recente do dispositivo do usuário ao Google Home Graph em vez de esperar uma intent QUERY.

Report State informa ao Google os estados dos dispositivos de usuário com o agentUserId especificado associado a eles (enviados na solicitação original SYNC). Quando o Google Assistant quer realizar uma ação que exige o entendimento do estado atual de um dispositivo, ele pode simplesmente pesquisar as informações de estado no Home Graph em vez de emitir uma intent QUERY para várias nuvens de terceiros antes de emitir a intent EXECUTE.

Sem Report State, considerando as luzes de vários provedores em uma sala de estar, o comando Ok Google, ilumine minha sala de estar exige a resolução de várias intents QUERY enviadas para várias nuvens, em vez de simplesmente procurar os valores de brilho atuais com base no que foi informado anteriormente. Para ter a melhor experiência do usuário, o Assistant precisa ter o estado atual de um dispositivo, sem exigir uma viagem de ida e volta até ele.

Após a SYNC inicial de um dispositivo, a plataforma envia uma intent QUERY que coleta o estado do dispositivo para preencher Home Graph. Depois disso, Home Graph armazena apenas o estado enviado com Report State.

Ao chamar Report State, forneça dados de estado completos para uma determinada característica. O Home Graph atualiza os estados por característica e substitui todos os dados dessa característica quando uma chamada Report State é feita. Por exemplo, se você estiver informando o estado da característica StartStop, o payload precisará incluir valores para isRunning e isPaused.

Começar

Para implementar Report State, siga estas etapas:

Ativar a API Google HomeGraph

  1. No Google Cloud Platform Console, acesse a página da API HomeGraph.

    Acessar a página da API HomeGraph
  2. Selecione o projeto que corresponde ao ID do seu projeto smart home.
  3. 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 GCP Console:

Observação: verifique se você está usando o projeto correto do GCP ao realizar essas etapas. Esse é o projeto que corresponde ao ID do projeto smart home.
  1. No GCP Console, acesse a página Criar chave da conta de serviço.

    Acessar página "Criar chave da conta de serviço"
  2. Na lista Conta de serviço, selecione Nova conta de serviço.
  3. No campo Nome da conta de serviço, insira um nome.
  4. No campo ID da conta de serviço, digite um ID.
  5. Na lista Papel, selecione Contas de serviço > Criador do token da conta de serviço.

  6. Em Tipo de chave, selecione a opção JSON.

  7. Clique em Criar. O download de um arquivo JSON com a chave vai ser feito no computador.

Chamar a API

Selecione uma opção nas guias abaixo:

HTTP

O Home Graph fornece um endpoint HTTP.

  1. 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.
  2. Consiga um token de acesso do OAuth 2.0 com o escopo https://www.googleapis.com/auth/homegraph usando oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. Crie a solicitação JSON com agentUserId. Veja um exemplo de solicitação JSON para estado e notificação do relatório:
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. Combine o estado do relatório e o JSON de notificação e o token na solicitação POST HTTP para o endpoint do gráfico do Google Home. Veja um exemplo de como fazer a solicitação na linha de comando usando curl como teste:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

O Home Graph fornece um endpoint do gRPC.

  1. Encontre a definição de serviço dos buffers de protocolo para a API Home Graph.
  2. Siga a documentação do desenvolvedor do gRPC para gerar stubs de cliente para uma das linguagens compatíveis.
  3. Chame o método ReportStateAndNotification.

Node.js

O cliente de APIs do Google para Node.js fornece vinculações para a API Home Graph.

  1. Inicialize o serviço do google.homegraph usando o Application Default Credentials.
  2. Chame o método reportStateAndNotification com o ReportStateAndNotificationRequest. Ele retorna um Promise com o ReportStateAndNotificationResponse.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.reportStateAndNotification({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

Java

A biblioteca de cliente da API HomeGraph para Java fornece vinculações para a API Home Graph.

  1. Inicialize o HomeGraphApiService usando o Application Default Credentials.
  2. Chame o método reportStateAndNotification com o ReportStateAndNotificationRequest. Ela retorna um ReportStateAndNotificationResponse.
  // 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();

  // Build device state payload.
  Map<?, ?> states = Map.of("on", true);

  // Report device state.
  ReportStateAndNotificationRequest request =
      new ReportStateAndNotificationRequest()
          .setRequestId("PLACEHOLDER-REQUEST-ID")
          .setAgentUserId("PLACEHOLDER-USER-ID")
          .setPayload(
              new StateAndNotificationPayload()
                  .setDevices(
                      new ReportStateAndNotificationDevice()
                          .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states))));
  homegraphService.devices().reportStateAndNotification(request);
}
    

Estado do relatório de teste

Ferramentas recomendadas para esta tarefa

Para preparar sua ação para a certificação, é importante testar Report State.

Para fazer isso, recomendamos o uso da ferramenta Home Graph Viewer, que é um app da Web independente que não exige download ou implantação.

O painel Report State ainda está disponível, mas foi descontinuado e não é mais compatível.

Painel de estado do relatório

Pré-requisitos

Para testar a ação, você precisa da chave da conta de serviço e do agentUserId. Se você já tiver a chave da conta de serviço e agentUserId, consulte Implantar o painel Report State.

Implantar o painel de estado do relatório

Depois de definir a chave da conta de serviço e o ID do usuário do agente para seu projeto, faça o download e implante a versão mais recente no Report State Painel. Depois de fazer o download da versão mais recente, siga as instruções do arquivo README.MD incluído.

Depois de implantar o painel Report State, acesse o painel pelo URL a seguir (substitua your_project_id pelo ID do projeto):

http://<your-project-id>.appspot.com

No painel, faça o seguinte:

  • Escolha o arquivo da chave da conta
  • Adicionar seu userUserId

Em seguida, clique em Lista.

Todos os seus dispositivos estão listados. Depois que a lista for preenchida, você poderá usar o botão Atualizar para atualizar os estados do dispositivo. Se houver uma mudança de estado do dispositivo, a linha vai ser destacada em verde.

Respostas de erro

Você pode receber uma das seguintes respostas de erro ao chamar Report State. 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 usando null em vez de "" para um valor de string.
  • 404 Not Found: o recurso solicitado não foi encontrado, mas poderá estar disponível no futuro. Normalmente, isso significa que não encontramos o dispositivo solicitado. Isso também pode significar que a conta de usuário não está vinculada ao Google ou que recebemos um agentUserId inválido. Verifique se agentUserId corresponde ao valor fornecido na resposta de SYNC e se você está processando corretamente as intents DISCONNECT.