Report State to ważna funkcja, która pozwala
Home Aktywne przekazywanie informacji o najnowszym stanie
z powrotem na urządzenie Google Home Graph, zamiast czekać na
QUERY
zamiar.
Report State przekazuje Google informacje o stanie urządzeń użytkowników
z powiązanymi z nimi agentUserId
(wysłanymi w oryginalnej wersji
SYNC
prośba). Gdy Google Assistant chce podjąć działanie
które wymagają zrozumienia bieżącego stanu urządzenia, można po prostu sprawdzić,
zaktualizuj informacje o stanie w Home Graph,
wysłanie intencji QUERY
do różnych chmur zewnętrznych przed udostępnieniem
EXECUTE
zamiar.
Bez: Report State, dane światła od różnych dostawców w:
salonu, polecenie OK Google, zwiększ jasność salonu,
rozpoznawania wielu intencji QUERY
wysyłanych do wielu chmur,
sprawdzanie bieżących wartości jasności na podstawie
wcześniej zgłoszone. Aby zadbać o jak najlepsze wrażenia użytkowników,
Assistant musi mieć bieżący stan urządzenia.
bez konieczności przesyłania danych
w obie strony.
Po początkowej wartości SYNC
dotyczącej urządzenia platforma wysyła intencję QUERY
zbierający stan urządzenia w celu wypełnienia parametru Home Graph.
Po tym czasie Home Graph przechowuje tylko stan
wysłano za pomocą: Report State.
Dzwoniąc pod numer Report State, podaj pełne informacje
i standaryzować dane
o określonej cechie. Home Graph stany aktualizacji w
z danymi cechami i zastępuje wszystkie dotyczące ich dane,
Wykonano połączenie typu Report State. Na przykład, jeśli przesyłasz dane
dla cechy StartStop, ładunek
musi zawierać wartości isRunning
i isPaused
.
Rozpocznij
Aby zaimplementować funkcję Report State, wykonaj te czynności:
Włączanie interfejsu Google HomeGraph API
-
W Google Cloud Console otwórz stronę HomeGraph API.
Otwórz stronę interfejsu HomeGraph API - Wybierz projekt, który pasuje do identyfikatora projektu smart home.
- Kliknij WŁĄCZ.
Tworzenie klucza konta usługi
Aby wygenerować klucz konta usługi z Google Cloud Console, wykonaj te instrukcje:
-
W Google Cloud Console otwórz stronę Utwórz klucz konta usługi.
Otwórz stronę tworzenia klucza konta usługi - Na liście Konto usługi wybierz Nowe konto usługi.
- W polu Nazwa konta usługi wpisz nazwę.
- W polu Identyfikator konta usługi wpisz identyfikator.
Z listy Rola wybierz Konta usługi > Twórca tokenów konta usługi.
W polu Typ klucza wybierz opcję JSON.
- Kliknij Utwórz. Plik JSON zawierający klucz pobrane na komputer.
Wywoływanie interfejsu API
Wybierz opcję z tych kart:
HTTP
Home Graph udostępnia punkt końcowy HTTP
- Użyj pobranego pliku JSON konta usługi, aby utworzyć plik JSON Web Token (JWT). Więcej informacji: Uwierzytelnianie przy użyciu konta usługi.
- Uzyskaj token dostępu OAuth 2.0 za pomocą
https://www.googleapis.com/auth/homegraph
zakres używa oauth2l: - Utwórz żądanie JSON za pomocą
agentUserId
. Oto przykładowe żądanie stanu raportu i powiadomienia w formacie JSON: - Połącz stan raportu i plik JSON powiadomienia z tokenem w żądaniu HTTP POST
do punktu końcowego Google Home Graph. Oto przykład,
żądania w wierszu poleceń za pomocą polecenia
curl
jako test:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "requestId": "123ABC", "agentUserId": "user-123", "payload": { "devices": { "states": { "light-123": { "on": true } } } } }
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 udostępnia punkt końcowy gRPC
- Pobierz definicję usługi buforów protokołów dla interfejsu Home Graph API.
- Postępuj zgodnie z dokumentacją dla programistów gRPC, aby wygenerować atrapy klienta w jednym z obsługiwanych języków.
- Wywołaj metodę ReportStateAndNotification.
Node.js
Klient Node.js interfejsów API Google zapewnia powiązania dla interfejsu Home Graph API.
- Zainicjuj usługę
google.homegraph
przy użyciu domyślnych danych logowania aplikacji. - Wywołaj metodę
reportStateAndNotification
za pomocą metody ReportStateAndNotificationRequest. ZwracaPromise
z funkcją 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
Biblioteka klienta interfejsu HomeGraph API for Java zawiera powiązania dla interfejsu Home Graph API.
- Zainicjuj
HomeGraphApiService
przy użyciu domyślnych danych logowania aplikacji. - Wywołaj metodę
reportStateAndNotification
za pomocą funkcjiReportStateAndNotificationRequest
. ZwracaReportStateAndNotificationResponse
.
// 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); }
Stan raportu z testu
Aby przygotować się do uzyskania certyfikatu, warto przetestować Report State
Zalecamy korzystanie z przeglądarki Home Graph, czyli samodzielną aplikację internetową, która nie wymaga pobierania ani wdrożenia.
Panel Report State jest nadal dostępny, ale wycofane i nie są już obsługiwane.
Panel stanu raportu
Wymagania wstępne
Aby przetestować działanie, musisz mieć konto usługi
Klucz i agentUserId
. Jeśli masz już klucz konta usługi i
agentUserId
– zobacz Wdrażanie Report State
Panel.
Wdrażanie panelu stanu raportu
Gdy już masz klucz konta usługi i identyfikator użytkownika agenta dla swojego projektu,
pobierz i wdróż najnowszą wersję z
Report State
Panel.
Po pobraniu najnowszej wersji postępuj zgodnie z instrukcjami
uwzględniono README.MD
plik.
Po wdrożeniu panelu Report State otwórz panelu pod następującym adresem URL (zastąp your_project_id swoim identyfikator projektu):
http://<your-project-id>.appspot.com
W panelu wykonaj te czynności:
- Wybierz plik klucza konta
- Dodaj identyfikator użytkownika agenta
Następnie kliknij Lista.
Na liście znajdują się wszystkie Twoje urządzenia. Po zapełnieniu listy możesz użyć funkcji Odśwież, aby zaktualizować stany urządzeń. W przypadku zmiany stanu urządzenia wiersz jest zaznaczony na zielono.
Odpowiedzi na błędy
Podczas rozmowy może pojawić się jeden z tych błędów – Report State Odpowiedzi te mają postać stanu HTTP. kodami.
400 Bad Request
– serwer nie może przetworzyć żądanie wysłane przez klienta z powodu nieprawidłowej składni. Najczęstsze przyczyny zawierają nieprawidłowy plik JSON lub używasz atrybutunull
zamiast „” dla wartości ciągu.404 Not Found
– nie można uzyskać żądanego zasobu ale mogą być dostępne w przyszłości. Zwykle oznacza to, że nie może znaleźć żądanego urządzenia. Może to też oznaczać, że konto użytkownika Adres nie jest połączony z Google lub otrzymaliśmy nieprawidłowy adresagentUserId
. Sprawdź, czy żeagentUserId
jest zgodne z wartością w polu odpowiedź SYNC działa prawidłowo. z intencjami DISCONNECT.