Сторонний фон умного дома Google вызывает ошибку домашнего графика

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

Я ссылаюсь на этот веб-сайт https://developers.google.com/assistant/smarthome/develop/request-sync Шаг. Включите 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, которое я получил

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


person SummerSolstice    schedule 10.07.2020    source источник


Ответы (1)


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

Вы можете посмотреть на вызов методов gRPC непосредственно из вашего приложения и убедиться, что у вас есть правильный 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)
person Nick Felker    schedule 21.07.2020