Ogólne
P: gdzie i w jakim języku powinniśmy zaimplementować infrastrukturę przetwarzania danych między chmurami?
Odp.: tak długo, jak długo obsługuje ona nowoczesny protokół SSL (TLS) i OAuth 2.0, możesz wdrażać infrastrukturę na dowolnej platformie i w dowolnym wybranym języku. Zalecamy wdrażanie jak najbliżej reszty infrastruktury, aby zwiększyć niezawodność i zredukować opóźnienia w wykonywaniu na rzeczywistych urządzeniach użytkowników.
Pytanie: czy identyfikatory urządzeń muszą być unikalne?
Odp.: identyfikatory powinny być unikalne. Jeśli nie masz unikalnych identyfikatorów w usłudze, muszą być one unikalne co najmniej na poziomie użytkownika. Wyobraź sobie użytkownika, który ma kilka domów, a oba domy są zintegrowane z tym samym użytkownikiem. Prośba o włączenie światła w jednym domu nie powinna powodować włączenia światła o tym samym identyfikatorze w innym domu.
P: Czy nazwy urządzeń muszą być niepowtarzalne?
O: nazwy nie muszą być niepowtarzalne, ale z czasem możemy zachęcać użytkowników do poprawienia nieprawidłowej nazwy po konfiguracji, aby poprawić wrażenia użytkowników.
Oto krótki przewodnik po nazewnictwie:
- Nazwy powinny być słowami, które ludzie mogą wypowiadać.
- Rozpoznajemy podzbiory ciągów znaków, więc jeśli wpiszesz „acme color light”, odpowiemy też na „acme light”.
- Zachęcamy do podania zarówno nazwy opisowej produktu, jak i co najmniej jednej nazwy zdefiniowanej przez użytkownika.
- Użytkownicy nie muszą nadawać lampom nazw pokoi, ponieważ mamy do tego osobne pokoje. Lampy powinny mieć unikalne nazwy w poszczególnych pokojach, ale zawsze można wydawać polecenia w liczbie mnogiej (np. 2 żarówki w schowku w pokoju są 'lampka północna' i 'lampka wschodnia', ale można je włączać, mówiąc tylko 'lampka').
Pyt.: jak często stan urządzenia jest aktualizowany?
Odp.: stan tymczasowy jest pobierany podczas wykonywania zapytania lub wykonywania, które są działaniami inicjowanymi przez użytkownika. Jeśli użytkownik zapyta „Czy światło jest włączone?” lub będzie chciał je przyciemnić, musimy wysłać zapytanie, aby sprawdzić jego aktualny stan.
Pytanie: czy można zaktualizować Home Graph bezpośrednio, podając bieżący stan urządzenia?
Odp.: tak, użyj wywołania interfejsu API Report State.
Łączenie kont i protokół OAuth
Pytanie: czy musimy połączyć konta?
Odp.: tak, aby połączyć urządzenia użytkownika z usługami w chmurze dostawcy, wymagane jest połączenie kont.
Pytanie: czy w przypadku OAuth tokeny dostępu wygasają co 15,213 godzin?
Odp.: tak, ale przetestuj to z krótkim czasem wygaśnięcia, np. 10–20 minut. Klient OAuth powinien odświeżać tokeny w miarę potrzeby, a testowanie z krótkim czasem ważności potwierdzi, że działa prawidłowo.
Przeznaczenie
P: kiedy następuje synchronizacja?
Odp.: synchronizacja odbywa się natychmiast po zakończeniu procesu OAuth i po wywołaniu metody RequestSync.
Pyt.: dlaczego SYNC
nie działa?
Odp.: jest kilka typowych przyczyn, dla których może wystąpić błąd.
Wysyłasz niewłaściwe typy urządzeń.
- Na przykład oczekujemy danych typu
action.devices.types.LIGHT
, a Ty wysyłaszaction.devices.types.Light
.
- Na przykład oczekujemy danych typu
Wysyłasz nieobsługiwane typy urządzeń.
- Na przykład wysyłasz
action.devices.types.FLASHLIGHT
– to nie jest coś, co obsługujemy.
- Na przykład wysyłasz
Wysyłasz nieprawidłowe lub nieobsługiwane pola.
- Możesz na przykład mieć pole, które nie jest określone w naszej specyfikacji.
Wystąpił inny problem z formatowaniem odpowiedzi SYNC.
- Sprawdź nawiasy.
Wystąpił problem z połączeniem konta.
- Sprawdź, czy w nagłówku autoryzacji żądania SYNC otrzymujesz prawidłowy token dostępu.
Odpowiedź na żądanie synchronizacji trwa zbyt długo.
- Sprawdź, czy odpowiadasz na żądanie synchronizacji w ciągu 5 sekund.
Pytanie: czy odpowiedź „w oczekiwaniu” jest odpowiednia?
Odp.: zdecydowanie wolimy odpowiedź „tak” lub „nie”, a nie „w trakcie”, jeśli urządzenia są dostępne w czasie rzeczywistym. Skontaktuj się z nami, jeśli uważasz, że potrzebujesz odpowiedzi „oczekującej” – zdajemy sobie sprawę, że niektóre urządzenia o niskiej mocy i niedziałające w czasie rzeczywistym mogą wymagać odpowiedzi oczekującej i asymetrycznego modelu wykonywania.
Testowanie i przesyłanie
P: czy możemy skonfigurować środowisko programistyczne w chmurze?
Odp.: tak, możesz przetestować nieuruchomione środowisko i konfigurację chmury.
Pytanie: moje urządzenie domowe nie jest widoczne w sekcji Sterowanie domem w aplikacji Google Home. Co się dzieje?
Odp.: sprawdź, czy jesteś programistą w tym projekcie.
Stan zgłoszenia
Pytanie: czy wdrożenie stanu raportu wymaga spełnienia jakichś wymagań wstępnych?
Odp.: projekt musi używać interfejsu Smart Home API, obsługiwać OAuth2 i mieć atrybuty, które mają stany do zgłaszania.
Pytanie: jak często należy zgłaszać stan urządzenia?
Odp.: Google interesuje 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), potrzebujemy tylko ostatniego stanu.
P: czy podczas wywoływania metody ReportState należy wysyłać pełny stan urządzenia?
Odp.: częściowe aktualizacje stanu nie są obsługiwane, dlatego wywołania Report State powinny zawsze zawierać wszystkie dane dotyczące danej zaktualizowanej cechy. Jeśli 2 cechy powodują niespójność, należy je zgłosić razem.
Pytanie: czy Google może wysyłać zapytania do mojego urządzenia, aby uzyskać informacje o jego stanie (czyli czy może je sondować)?
O: nie zalecamy korzystania z tego mechanizmu zastępczego. Jeśli będziemy musieli często sięgać po dane z urządzenia w przypadku tych użytkowników, nie będziemy w stanie zagwarantować, jak duży będzie dodatkowy obciążenie. Potrzebują ich nowe powierzchnie wizualne. Oprócz nieznanego problemu z wczytywaniem, pogorszy się jakość wrażeń użytkowników. Uważamy, że Report State ma kluczowe znaczenie dla platformy.
P: które atrybuty obsługują obecnie stan raportu?
Odp.: obsługiwane są wszystkie publiczne atrybuty, które mają powiązane stany. Należy też zgłaszać wszelkie zmiany stanu urządzenia w sieci.
Pamiętaj, że sceny nie mają stanów. Mogą one jednak spowodować zmianę stanu urządzenia. Jeśli stan któregokolwiek urządzenia w grupie Google Home Graph uległ zmianie, należy to zgłosić.
P: czy stan zgłoszenia wymaga wysłania sygnatury czasowej?
O: nie wymagamy sygnatury czasowej. Ostatni stan przesłany przez aplikację zastąpi poprzednie wywołania.
P: Czy muszę wysyłać stan raportowania osobno, jeśli stan jest już wysyłany w zapytaniu lub w efekcie?
Odp.: Home Graph przechowuje tylko stan wysyłany za pomocą Report State. Stan zwracany jako odpowiedź na intencje EXECUTE i QUERY jest używany tylko do 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 jako odpowiedź na intencję QUERY lub EXECUTE.
P: jakie są konsekwencje niepełnego wdrożenia stanu raportu w określonym terminie?
Odp.: spowoduje to pogorszenie wrażeń użytkowników, na przykład w przypadku Google Home app (GHA) i elementów wizualnych. Oznacza to, że wiele intencji QUERY zostanie wysłanych do ankiety w celu sprawdzenia stanu, a nie możemy zagwarantować, że nie będzie to powodować dodatkowego obciążenia w chmurze partnera.
P: jak mogę przetestować implementację stanu raportu?
Odp.: użyj wyświetlacza domowego grafu – narzędzia do samodzielnego testowania, które pokazuje bieżące stany urządzenia zapisane w Home Graph.
Pyt.: czy możemy użyć losowego identyfikatora żądania (requestId) do stanu raportu?
Odp.: jeśli Report State jest wywoływany przez żądanie EXECUTE, zalecamy, aby partnerzy używali tego samego identyfikatora żądania, który otrzymali z żądania EXECUTE. W przeciwnym razie mogą użyć losowego identyfikatora żądania.
Pytanie: jeśli użytkownik ma kilka urządzeń i stan jednego z nich ulegnie zmianie, czy musimy zgłosić najnowszy stan wszystkich urządzeń?
Odp.: nie. Musisz tylko zgłosić stan tego konkretnego urządzenia.
Sprawdzone metody
P: Jakie opóźnienie jest dopuszczalne?
O: idealny czas to mniej niż 200 ms, a dopuszczalny – 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?
Odp.: przywracanie stanu offline na urządzeniach offline. W przypadku tego błędu zwracamy jako TTS „niedostępne w tej chwili”. Więcej informacji znajdziesz w sekcji Błędy i wyjątki.