보고서 상태

<ph type="x-smartling-placeholder"> </ph>

Report StateHome 작업은 사용자의 기기를 Google Home Graph로 다시 돌아가 QUERY 인텐트

Report State에서 Google에 사용자 기기 상태를 보고합니다. 지정된 agentUserId가 연결되어 있음 (원본으로 전송됨) SYNC 요청). Google Assistant님이 액션을 취하려고 할 때 기기의 현재 상태를 이해해야 하는 경우, 대신 Home Graph에서 상태 정보를 위로 올립니다. 서드 파티 클라우드에 QUERY 인텐트를 발급하는 EXECUTE 인텐트

Report State가 없으면 다음 위치에 있는 여러 제공업체의 광원이 Ok Google, 거실 밝게 해 줘 명령이 필요한 경우 Google Cloud가 아닌 여러 클라우드로 전송된 여러 QUERY 인텐트를 기존 밝기에 따라 현재 밝기 값을 확인할 수 있습니다. 최상의 사용자 경험을 위해 Assistant에 기기의 현재 상태가 있어야 합니다. 여러 가지 방법을 제공합니다.

기기의 초기 SYNC 다음에 플랫폼은 QUERY 인텐트를 전송합니다. Home Graph를 채우기 위해 기기의 상태를 수집합니다. 이 시점 이후에는 Home GraphReport State(으)로 전송되었습니다.

Report State 호출 시 전체 상태 데이터를 생성합니다. Home Graph은(는) 특정 트레잇을 기반으로 Report State이(가) 호출됩니다. 예를 들어 StartStop 트레잇의 상태, 페이로드 isRunningisPaused 값을 모두 포함해야 합니다.

시작하기

Report State를 구현하려면 다음 단계를 따르세요.

Google HomeGraph API 사용 설정

  1. Google Cloud Console에서 HomeGraph API 페이지로 이동합니다.

    HomeGraph API 페이지로 이동
  2. smart home 프로젝트 ID와 일치하는 프로젝트를 선택합니다.
  3. 사용 설정을 클릭합니다.

서비스 계정 키 만들기

다음 안내에 따라 Google Cloud Console에서 서비스 계정 키를 생성합니다.

참고: 수행할 때 올바른 GCP 프로젝트를 사용하고 있는지 확인하세요. 다음 단계를 따르세요. smart home 프로젝트 ID와 일치하는 프로젝트입니다.
  1. Google Cloud Console에서 서비스 계정 키 만들기 페이지로 이동합니다.

    서비스 계정 키 만들기 페이지로 이동
  2. 서비스 계정 목록에서 다음을 선택합니다. 새 서비스 계정.
  3. 서비스 계정 이름 필드에 이름을 입력합니다.
  4. 서비스 계정 ID 필드에 ID를 입력합니다.
  5. 역할 목록에서 서비스 계정 >을 선택합니다. <ph type="x-smartling-placeholder"></ph> 서비스 계정 토큰 생성자로 이동합니다.

  6. 키 유형JSON 옵션을 선택합니다.

  7. 만들기를 클릭합니다. 키가 포함된 JSON 파일 컴퓨터에 다운로드할 수 있습니다.

API 호출

아래 탭에서 옵션을 선택합니다.

HTTP

Home GraphHTTP 엔드포인트를 제공합니다.

  1. 다운로드한 서비스 계정 JSON 파일을 사용하여 JSON 웹을 만듭니다. 토큰 (JWT)입니다. 자세한 내용은 <ph type="x-smartling-placeholder"></ph> 서비스 계정을 사용하여 인증을 참조하세요.
  2. 다음을 사용하여 OAuth 2.0 액세스 토큰을 가져옵니다. https://www.googleapis.com/auth/homegraph 범위 사용 oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId를 사용하여 JSON 요청을 만듭니다. 다음은 보고서 상태 및 알림에 대한 JSON 요청 샘플입니다.
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. HTTP POST에서 보고서 상태, 알림 JSON, 토큰을 결합 Google Home Graph 엔드포인트에 요청할 수 있습니다. 이 예시에서는 다음과 같이 curl를 사용하여 명령줄에서 요청합니다. 테스트:
  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

Home Graph는 요청 시 사용할 수 있는 gRPC 엔드포인트

  1. Home Graph API의 프로토콜 버퍼 서비스 정의를 확인합니다.
  2. gRPC 개발자 문서에 따라 지원되는 언어 중 하나로 클라이언트 스텁을 생성합니다.
  3. ReportStateAndNotification 메서드를 호출합니다.

Node.js

Google API Node.js 클라이언트Home Graph API에 바인딩을 제공합니다.

  1. 애플리케이션 기본 사용자 인증 정보를 사용하여 google.homegraph 서비스를 초기화합니다.
  2. ReportStateAndNotificationRequest를 사용하여 reportStateAndNotification 메서드를 호출합니다. 이 메서드는 ReportStateAndNotificationResponse와 함께 Promise를 반환합니다.
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용 HomeGraph API 클라이언트 라이브러리는 Home Graph API의 결합을 제공합니다.

  1. 애플리케이션 기본 사용자 인증 정보를 사용하여 HomeGraphApiService를 초기화합니다.
  2. ReportStateAndNotificationRequest를 사용하여 reportStateAndNotification 메서드를 호출합니다. 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);
}
    

테스트 보고서 상태

<ph type="x-smartling-placeholder"></ph>
이 작업에 권장되는 도구

인증을 위해 작업을 준비하려면 테스트를 진행해야 합니다 Report State

이렇게 하려면 Home Graph 뷰어 도구를 사용하는 것이 좋습니다. 독립형 웹 앱으로 다운로드하거나 배포할 필요가 없습니다

Report State 대시보드는 계속 사용할 수 있지만 더 이상 지원되지 않습니다

보고서 상태 대시보드

기본 요건

작업을 테스트하려면 서비스 계정이 필요합니다. 키와 agentUserId 이미 서비스 계정 키가 있고 agentUserId, Report State 배포 참조 대시보드.

보고서 상태 대시보드 배포하기

프로젝트의 서비스 계정 키와 에이전트 사용자 ID가 있으면 최신 버전 다운로드 및 배포 Report State 대시보드. 최신 버전을 다운로드했으면 포함된 README.MD 파일이 있습니다.

Report State 대시보드를 배포한 후 다음에 액세스합니다. 대시보드를 만듭니다 (your_project_id를 프로젝트 ID):

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

대시보드에서 다음을 수행합니다.

  • 계정 키 파일 선택
  • agentUserId를 추가합니다.

그런 다음 목록을 클릭합니다.

모든 기기가 나열됩니다. 목록이 채워지면 기기 상태를 업데이트하는 새로고침 버튼 기기 상태 변경이 있는 경우 행이 녹색으로 강조표시됩니다.

오류 응답

호출 시 다음 오류 응답 중 하나가 표시될 수 있습니다. Report State 이 응답은 HTTP 상태 형식으로 표시됩니다. 있습니다.

  • 400 Bad Request - 서버에서 처리하지 못했습니다. 잘못된 구문으로 인해 클라이언트가 보낸 요청에서 오류가 발생합니다. 일반적인 원인 잘못된 형식의 JSON을 포함하거나 "" 대신 null을(를) 사용하세요. - 문자열 값
  • 404 Not Found - 요청한 리소스를 나중에 사용 가능할 수도 있습니다. 일반적으로 이는 요청한 기기를 찾을 수 없습니다. 또한 사용자 계정이 Google에 연결되어 있지 않거나 잘못된 agentUserId을(를) 수신했습니다. agentUserId가 응답을 SYNC해야 하며, DISCONNECT 인텐트를 처리합니다.