Ogólne
Pytanie: Gdzie i w jakim języku powinniśmy wdrożyć infrastrukturę realizacji zamówień w chmurze?
O: Jeśli tylko obsługuje nowoczesny protokół SSL (TLS) i OAuth 2.0, możesz wdrożyć infrastrukturę na dowolnej platformie i w dowolnym języku. Zalecamy wdrożenie jak najbliżej pozostałej części infrastruktury, aby zwiększyć niezawodność i skrócić czas oczekiwania na wykonanie na urządzeniach użytkowników.
P: Czy identyfikatory urządzeń muszą być unikalne?
O: Identyfikatory powinny być unikalne. Jeśli nie masz unikalnych identyfikatorów w całej usłudze, muszą one być unikalne przynajmniej na poziomie użytkownika. Wyobraź sobie użytkownika, który ma kilka domów, a w każdym z nich ma integrację. Prośba o włączenie światła w jednym domu nie powinna włączać światła o tym samym identyfikatorze w innym domu.
P: Czy nazwy urządzeń muszą być unikalne?
O: Nazwy nie muszą być niepowtarzalne, ale z czasem możemy zachęcać użytkowników do poprawiania nieodpowiednich nazw po skonfigurowaniu urządzenia, aby zapewnić lepsze wrażenia.
Oto krótki przewodnik po nazwach:
- Nazwy powinny być takie, aby użytkownicy mogli je wypowiedzieć.
- Rozpoznajemy podzbiory ciągów znaków, więc jeśli masz „acme color light”, odpowiemy też na zapytanie „acme light”.
- Zalecamy podanie zarówno nazwy opisowej produktu, jak i co najmniej jednej nazwy zdefiniowanej przez użytkownika.
- Użytkownicy nie muszą podawać nazw pomieszczeń, w których znajdują się światła, ponieważ mamy już pomieszczenia. Każde światło powinno mieć unikalną nazwę w danym pomieszczeniu, ale zawsze można użyć liczby mnogiej, aby wydać polecenie wszystkim światłom (np. 2 żarówki w kinkietach w biurze to „światło północne” i „światło wschodnie”, ale można nimi sterować, używając po prostu słowa „światła”).
P: Jak często aktualizowany jest stan urządzenia?
O: Stan tymczasowy jest pobierany w przypadku zapytań QUERY lub EXECUTE, które są działaniami inicjowanymi przez użytkownika. Jeśli użytkownik zapyta „czy światło jest włączone?” lub będzie chciał rozjaśnić światło, musimy wysłać zapytanie, aby określić bieżący stan.
P: Czy można bezpośrednio aktualizować Home Graph o bieżący stan urządzenia?
O: tak, użyj wywołania interfejsu API Report State.
Łączenie kont i OAuth
P: Czy musimy połączyć konta?
O: Tak, połączenie kont jest wymagane, aby połączyć urządzenia użytkownika z usługami w chmurze dostawcy.
P: W przypadku OAuth tokeny dostępu wygasają co 15,213 godziny.Czy to w porządku?
O: Tak, ale przetestuj to z dość krótkim czasem wygaśnięcia, np. 10–20 minut. Nasz klient OAuth powinien odświeżać tokeny w razie potrzeby, a testowanie z krótkim czasem wygaśnięcia potwierdzi, że to działa.
Intencje
P: Kiedy następuje synchronizacja?
O: SYNCHRONIZACJA następuje natychmiast po zakończeniu procesu OAuth i po wywołaniu funkcji Request Sync.
P: Dlaczego SYNC nie działa?
O: Może to wynikać z kilku przyczyn.
Wysyłasz nieprawidłowe typy urządzeń.
- Na przykład oczekujemy wartości
action.devices.types.LIGHT, ale Ty wysyłaszaction.devices.types.Light.
- Na przykład oczekujemy wartości
Wysyłasz nieobsługiwane typy urządzeń.
- Na przykład wysyłasz
action.devices.types.FLASHLIGHT– nie obsługujemy tego.
- Na przykład wysyłasz
Wysyłasz nieprawidłowe lub nieobsługiwane pola.
- Na przykład masz pole, które nie jest zgodne z naszą specyfikacją.
W odpowiedzi SYNC wystąpił inny problem z formatowaniem.
- Sprawdź swoje grupy!
Występuje problem z połączeniem konta.
- Sprawdź, czy w nagłówku Auth żądania SYNC otrzymujesz prawidłowy token dostępu.
Odpowiedź na żądanie SYNC trwa zbyt długo.
- Sprawdź, czy odpowiadasz na żądanie SYNC w ciągu 5 sekund.
P: Czy odpowiedź „oczekująca” jest w porządku?
O: jeśli urządzenia są dostępne w czasie rzeczywistym, zdecydowanie wolimy odpowiedź „sukces” lub „niepowodzenie” zamiast „oczekuje”. Skontaktuj się z nami, jeśli uważasz, że potrzebujesz odpowiedzi „oczekująca” – zdajemy sobie sprawę, że niektóre urządzenia o niskim poborze mocy, które nie działają w czasie rzeczywistym, mogą wymagać odpowiedzi „oczekująca” i asynchronicznego modelu wykonywania.
Testowanie i przesyłanie
P: Czy możemy skonfigurować chmurowe środowisko programistyczne?
O: tak, możesz przetestować niewdrożone środowisko i konfigurację chmury.
P: Moja akcja nie jest widoczna w sekcji Sterowanie domem w aplikacji Google Home. Co się dzieje?
O: potwierdź, że jesteś programistą tego projektu.
Stan raportu
P: Czy wdrożenie funkcji Report State wymaga spełnienia jakichś warunków?
O: Projekt musi korzystać z interfejsu Smart Home API, obsługiwać OAuth2 i mieć cechy, które mają stany do zgłoszenia.
P: Jak często musimy zgłaszać stan urządzenia?
O: Interesuje nas przejście i stan końcowy. Jeśli jednak w krótkim czasie nastąpi wiele zmian stanu (np. użytkownik otworzy i zamknie lodówkę 3 razy w ciągu minuty lub przesunie suwak ściemniacza), wystarczy nam zgłoszenie stanu końcowego.
P: Czy podczas wywoływania funkcji Report State trzeba wysyłać pełny stan urządzenia?
O: częściowe aktualizacje stanu nie są obsługiwane, więc wywołania Report State powinny zawsze zawierać wszystkie dane dotyczące konkretnej cechy, która została zaktualizowana. Jeśli 2 cechy powodują niespójność, należy je zgłosić razem.
Pytanie: czy Google może wysyłać do mojego urządzenia zapytania o jego stan (czyli sprawdzać stan urządzenia)?
O: jest to mechanizm awaryjny, którego nie zalecamy. Jeśli będziemy musieli często odpytywać urządzenia tych użytkowników, nie możemy zagwarantować, jakie będzie dodatkowe obciążenie. Wynika to z pojawienia się nowych platform wizualnych. Oprócz problemu z nieznanym obciążeniem spowoduje to pogorszenie wrażeń użytkownika. Uważamy, że Report State ma kluczowe znaczenie dla platformy.
P: Jakie cechy są obecnie obsługiwane przez funkcję zgłaszania stanu?
O: obsługiwane są wszystkie publiczne cechy, które mają powiązane stany. Należy też zgłaszać wszelkie zmiany stanu urządzenia w trybie online.
Pamiętaj, że sceny nie mają stanów. Mogą one jednak spowodować zmianę stanu urządzeń. Jeśli na urządzeniu w Google Home Graph nastąpi zmiana stanu, należy ją zgłosić.
P: Czy funkcja Report State wymaga wysłania sygnatury czasowej?
O: Nie wymagamy sygnatury czasowej. Ostatni wysłany stan zastąpi poprzednie wywołania.
P: Czy muszę osobno zgłaszać stan, jeśli wysyłam go już w zapytaniu lub wykonaniu?
O: Home Graph przechowuje tylko stan wysłany za pomocą Report State. Stan zwracany w odpowiedzi na intencje EXECUTE i QUERY jest używany tylko w przypadku odpowiedzi głosowych dla użytkownika i nie jest przechowywany. W rezultacie należy wywołać Report State, nawet jeśli nowy stan urządzenia został już zwrócony w odpowiedzi na intencję EXECUTE lub QUERY.
P: Jakie są konsekwencje niepełnego wdrożenia funkcji Report State w wyznaczonym terminie?
O: spowoduje to pogorszenie wrażeń użytkowników, np. w przypadku Google Home app (GHA) i elementów wizualnych. Oznacza to, że wiele intencji QUERY będzie wysyłanych w celu sprawdzenia stanu, a my nie możemy zagwarantować, że będzie to odpowiadać dodatkowemu obciążeniu chmury partnera.
P: Jak mogę przetestować wdrożenie funkcji Report State?
O: Użyj przeglądarki Home Graph – samoobsługowego narzędzia testowego, które pokazuje bieżące stany urządzeń zapisane w Home Graph.
Pytanie: czy w przypadku stanu raportu możemy użyć losowego identyfikatora requestId?
O: zalecamy partnerom używanie tego samego identyfikatora requestId, który otrzymali w odpowiedzi na żądanie EXECUTE, jeśli wywołanie funkcji Report State następuje w odpowiedzi na żądanie EXECUTE. W przeciwnym razie możesz użyć losowego identyfikatora requestId.
P: Jeśli użytkownik ma kilka urządzeń i na jednym z nich zmieni się stan, czy musimy zgłosić najnowszy stan wszystkich urządzeń?
O: Nie. Musisz zgłosić tylko stan tego konkretnego urządzenia.
Sprawdzone metody
P: Jakie opóźnienie jest dopuszczalne?
O: Idealny czas to poniżej 1000 ms, a dopuszczalny to 2–5 s. Jeśli opóźnienie wynosi około 5 sekund, skontaktuj się z nami.
P: Jak sprawić, aby głośnik aktywowany głosem prawidłowo reagował, gdy jest offline?
O: zwracaj stan offline w przypadku urządzeń offline. W przypadku tego błędu zwracamy komunikat „niedostępne w tej chwili” jako TTS. Więcej informacji znajdziesz w sekcji Błędy i wyjątki.