일반
Q: 클라우드 간 처리 인프라를 구현해야 하는 위치와 언어는 무엇인가요?
A: 최신 SSL (TLS) 및 OAuth 2.0을 지원하는 한 원하는 플랫폼과 언어로 인프라를 구현할 수 있습니다. 실제 사용자 기기에 대한 실행 안정성을 개선하고 지연 시간을 줄이려면 나머지 인프라와 최대한 가까운 곳에 배포하는 것이 좋습니다.
Q: 기기 ID는 고유해야 하나요?
A: ID는 고유해야 합니다. 서비스 전반에 고유한 ID가 없는 경우 최소한 사용자 수준에서 고유해야 합니다. 두 집 모두 동일한 사용자와 통합된 여러 집을 가진 사용자를 생각해 보세요. 한 집에서 조명을 켜도록 요청해도 다른 집에서 동일한 ID의 조명이 켜지지 않아야 합니다.
Q: 기기 이름은 고유해야 하나요?
A: 이름은 고유하지 않아도 되지만, 시간이 지남에 따라 더 나은 사용자 환경을 위해 설정 후 잘못된 이름을 개선하도록 권장할 수 있습니다.
다음은 간단한 이름 지정 가이드입니다.
- 이름은 실제로 말할 수 있는 것이어야 합니다.
- 문자열의 하위 집합을 인식하므로 'acme color light'가 있는 경우 'acme light'에도 답변합니다.
- 제품의 설명 이름과 하나 이상의 사용자 정의 이름을 모두 사용하는 것이 좋습니다.
- Google에는 방이 있으므로 사용자는 조명에 방 이름을 지정할 필요가 없습니다. 방마다 고유한 이름이 있어야 하지만 항상 복수형을 사용하여 모든 것을 명령할 수 있습니다 (예: 사무실 벽 조명의 두 전구는 '북쪽 조명'과 '동쪽 조명'이지만 '조명'으로만 명령할 수 있음).
Q: 기기 상태는 얼마나 자주 업데이트되나요?
A: 일시적인 상태는 사용자 시작 작업인 QUERY 또는 EXECUTE 시에 가져옵니다. 사용자가 '조명이 켜져 있나요?'라고 묻거나 조명을 밝게 하려는 경우 현재 상태를 파악하기 위해 쿼리를 실행해야 합니다.
Q: 기기의 현재 상태로 Home Graph를 직접 업데이트할 수 있나요?
A: 예, Report State API 호출을 사용하세요.
계정 연결 및 OAuth
Q: 계정 연결을 해야 하나요?
A: 예, 사용자의 기기를 제공업체의 클라우드 서비스에 연결하려면 계정 연결이 필요합니다.
Q: OAuth의 경우 15.213시간마다 액세스 토큰이 만료되는데 괜찮나요?
A: 예, 하지만 만료 시간이 10~20분 정도의 짧은 시간으로 테스트해 주세요. OAuth 클라이언트는 필요에 따라 토큰을 새로고침해야 하며, 만료 시간이 짧은 토큰으로 테스트하면 토큰이 작동하는지 확인할 수 있습니다.
인텐트
Q: SYNC는 언제 발생하나요?
A: SYNC는 OAuth가 완료된 직후와 Request Sync 호출이 이루어진 후에 발생합니다.
Q: SYNC가 작동하지 않는 이유는 무엇인가요?
A: 이 오류가 발생하는 데는 여러 가지 일반적인 이유가 있습니다.
잘못된 기기 유형을 전송하고 있습니다.
- 예를 들어 Google은
action.devices.types.LIGHT를 예상하지만action.devices.types.Light를 전송합니다.
- 예를 들어 Google은
지원되지 않는 기기 유형을 전송하고 있습니다.
- 예를 들어
action.devices.types.FLASHLIGHT를 전송합니다. 이는 Google에서 지원하지 않는 항목입니다.
- 예를 들어
잘못되었거나 지원되지 않는 필드를 전송하고 있습니다.
- 예를 들어 Google 사양에 없는 필드가 있습니다.
SYNC 응답에 다른 형식 문제가 있습니다.
- 괄호를 확인하세요.
계정 연결 문제가 발생했습니다.
- SYNC 요청의 인증 헤더에서 유효한 액세스 토큰을 수신하고 있는지 확인하세요.
SYNC 요청에 응답하는 데 시간이 너무 오래 걸립니다.
- 5초 이내에 SYNC 요청에 응답하고 있는지 확인하세요.
Q: '대기 중' 응답이 괜찮나요?
A: 기기를 실시간으로 사용할 수 있는 경우 대기 중이 아닌 성공/실패 응답을 사용하는 것이 좋습니다. '대기 중' 응답이 필요하다고 생각되면 문의해 주세요. 일부 저전력 비실시간 기기에는 대기 중 응답과 비동기 실행 모델이 필요할 수 있습니다.
테스트 및 제출
Q: 개발 클라우드 환경을 설정할 수 있나요?
A: 예, 출시되지 않은 클라우드 환경과 구성을 테스트할 수 있습니다.
Q: Google Home 앱의 홈 컨트롤 섹션에 내 액션이 표시되지 않습니다. 어떻게 해야 하나요?
A: 이 프로젝트의 개발자인지 확인하세요.
상태 보고
Q: 상태 보고를 구현하기 위한 기본 요건이 있나요?
A: 프로젝트는 스마트 홈 API를 사용하고 OAuth2를 지원해야 하며 보고할 상태가 있는 특성이 있어야 합니다.
Q: 기기에서 상태를 얼마나 자주 보고해야 하나요?
A: Google은 전환 및 최종 상태에 관심이 있습니다. 하지만 짧은 시간 내에 상태가 여러 번 변경되는 경우 (예: 사용자가 1분 동안 냉장고를 세 번 열고 닫거나 조광기를 슬라이드하는 경우) 최종 상태만 보고하면 됩니다.
Q: 상태 보고 호출을 할 때 전체 기기 상태를 전송해야 하나요?
A: 부분 상태 업데이트는 지원되지 않으므로 Report State 호출에는 항상 업데이트된 특정 특성의 모든 데이터가 포함되어야 합니다. 두 특성이 불일치를 일으키는 경우 함께 보고해야 합니다.
Q: Google에서 기기를 쿼리하여 상태를 가져올 수 있나요 (즉, 기기를 폴링할 수 있나요)?
A: 이는 권장하지 않는 대체 메커니즘입니다. 이러한 사용자를 위해 기기를 자주 폴링해야 하는 경우 추가 로드가 어떻게 될지 보장할 수 없습니다. 이러한 필요성은 새로운 시각적 노출 영역에서 비롯됩니다. 알 수 없는 로드 문제 외에도 사용자 환경이 저하됩니다. Google은 Report State이 플랫폼에 매우 중요하다고 생각합니다.
Q: 현재 상태 보고를 지원하는 특성은 무엇인가요?
A: 상태가 연결된 모든 공개 특성이 지원됩니다. 기기의 온라인 상태 변경사항도 보고해야 합니다.
장면에는 상태가 없습니다. 하지만 기기의 상태가 변경될 수 있습니다. Google Home Graph의 기기에 상태 변경이 있는 경우 이를 다시 보고해야 합니다.
Q: 상태 보고를 하려면 타임스탬프를 전송해야 하나요?
A: 타임스탬프는 필요하지 않습니다. 마지막으로 전송된 상태가 이전 호출을 재정의합니다.
Q: 이미 쿼리 또는 실행에서 상태를 전송하고 있는 경우 상태 보고를 별도로 해야 하나요?
A: Home Graph 상태 보고를 통해 전송된 상태만 저장합니다 Report State. EXECUTE 및 QUERY 인텐트에 대한 응답으로 반환되는 상태는 사용자에게 음성 응답을 제공하는 데만 사용되며 저장되지 않습니다. 따라서 Report State을 호출해야 합니다. 기기의 새 상태가 이미 EXECUTE 또는 QUERY 인텐트에 대한 응답으로 반환된 경우에도 마찬가지입니다.
Q: 지정된 기한 내에 상태 보고를 완전히 구현하지 않으면 어떻게 되나요?
A: 이로 인해 Google Home app (GHA) 및 시각적 노출 영역과 같은 사용자 환경이 저하됩니다. 상태를 폴링하기 위해 많은 QUERY 인텐트가 전송되며, 이는 파트너 클라우드의 추가 로드에 상응하는지 보장할 수 없습니다.
Q: 상태 보고 구현을 어떻게 테스트할 수 있나요?
A: Home Graph에 저장된 현재 기기 상태를 보여주는 셀프서비스 테스트 도구인 Home Graph 뷰어를 사용하세요.Home Graph
Q: 상태 보고에 임의의 requestId를 사용할 수 있나요?
A: 상태 보고가 EXECUTE 요청에 의해 트리거되는 경우 파트너는 EXECUTE 요청에서 받은 동일한 requestId를 사용하는 것이 좋습니다. 그렇지 않은 경우 임의의 requestId를 사용하면 됩니다.Report State
Q: 사용자에게 여러 기기가 있고 그중 하나의 상태가 변경된 경우 모든 기기의 최신 상태를 보고해야 하나요?
A: 아니요. 특정 기기의 상태만 보고하면 됩니다.
권장사항
Q: 어떤 종류의 지연 시간이 허용되나요?
A: 1, 000ms 미만이 이상적이며 2~5초는 괜찮습니다. 지연 시간이 5초 정도인 경우 Google에 문의하세요.
Q: 음성으로 활성화된 스피커가 오프라인일 때 제대로 응답하도록 하려면 어떻게 해야 하나요?
A: 오프라인 기기의 오프라인 상태를 반환합니다. 이 오류에 대해 '지금은 사용할 수 없음'을 TTS로 반환합니다. 자세한 내용은 오류 및 예외를 참고하세요.