Сторонний фон умного дома Google вызывает ошибку домашнего графика - PullRequest
0 голосов
/ 10 июля 2020

Я делаю набор тестов. Обратитесь к изображению блок-схемы набора тестов. Облако разработчика может получать инструкции, отправленные помощником Google. Но когда я передаю отчет Homegraph, я получаю это исключение. Не знаю почему?

Я ссылаюсь на этот сайт https://developers.google.com/assistant/smarthome/develop/request-sync Step. Включите Google Homegraph API, создайте ключ учетной записи службы и, наконец, вызовите API.

private void onDeviceAdded() throws IOException {
  FileInputStream stream = new FileInputStream("service-account-key.json");
  GoogleCredentials credentials = GoogleCredentials.fromStream(stream);
  mySmartHomeApp.setCredentials(credentials);

  RequestSyncDevicesResponse response = mySmartHomeApp.requestSync("my-self-user-id");
}

Получено исключение:

io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
    at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:233)
    at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:214)
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:139)
    at com.google.home.graph.v1.HomeGraphApiServiceGrpc$HomeGraphApiServiceBlockingStub.requestSyncDevices(HomeGraphApiServiceGrpc.java:406)

исключение img i got

Блок-схема Test Suite

1 Ответ

0 голосов
/ 22 июля 2020

Кажется, существует проблема с тем, как ваша служба вызывает API.

Вы можете посмотреть на вызов методов gRP C непосредственно из вашего приложения и убедиться, что у вас правильный agentUserId и ключ учетной записи службы.

Реализация из вызова библиотеки вставлена ​​ниже:

val channel = ManagedChannelBuilder.forTarget("homegraph.googleapis.com").build()

val blockingStub = HomeGraphApiServiceGrpc.newBlockingStub(channel)
    // See https://grpc.io/docs/guides/auth.html#authenticate-with-google-3.
    .withCallCredentials(MoreCallCredentials.from(this.credentials))

val request = HomeGraphApiServiceProto.RequestSyncDevicesRequest.newBuilder()
    .setAgentUserId(agentUserId)
    .build()

return blockingStub.requestSyncDevices(request)
...