Rozwiązywanie problemów z integracją

Google Cloud udostępnia narzędzia do monitorowania niezawodności projektów z wykorzystaniem Google Cloud Monitoring i debugowania problemów za pomocą logów błędów Google Cloud Logging. Gdy podczas realizacji intencji użytkownika wystąpi błąd, potok Google Home Analytics rejestruje ten błąd w Twoich wskaźnikach i publikuje dziennik błędów w logach projektu.

Rozwiązywanie problemów z błędami odbywa się na 2 sposoby:

  1. Monitoruj stan swoich projektów za pomocą wskaźników dotyczących inteligentnego domu.
  2. Badaj problemy, sprawdzając szczegółowe opisy błędów w logach błędów.

Ten proces jest podobny w przypadku integracji lokalnej z użyciem Local Home SDK. Po opanowaniu procedury rozwiązywania problemów możesz łatwo przełączać się między wskaźnikami i logami, aby uzyskać szczegółowe informacje o błędach.

Błędy monitorowania

Aby uzyskać dostęp do wskaźników projektu, możesz użyć Google Cloud Monitoring dashboard. Poniżej znajdziesz kilka kluczowych wykresów, które są szczególnie przydatne do monitorowania jakości i debugowania:

  • Wykres Wskaźnik sukcesu to pierwszy wykres, od którego należy zacząć monitorowanie niezawodności projektów. Spadki na tym wykresie mogą wskazywać na przerwę w działaniu usługi w przypadku części lub całości użytkowników. Zalecamy uważne monitorowanie tego wykresu pod kątem ewentualnych nieprawidłowości po każdej zmianie lub aktualizacji projektu.
  • Wykres 95 centyl czasu oczekiwania to ważny wskaźnik skuteczności działania inteligentnego domu w przypadku użytkowników. Nagłe wahania na tym wykresie mogą wskazywać, że Twoje systemy mogą nie nadążać za żądaniami. Zalecamy okresowe sprawdzanie tego wykresu, aby zaobserwować ewentualne nieoczekiwane zachowanie.
  • Wykresy z zestawieniem błędów najbardziej przydatne do rozwiązywania problemów z integracją. W przypadku każdego błędu wyszczególnionego na wykresie procentowym sukcesu w zestawieniu błędów wyświetlany jest kod błędu. W tabeli poniżej możesz sprawdzić błędy oznaczone przez interfejs Google Home platform i sposoby ich rozwiązywania.

Kody błędów platformy

Oto kilka typowych kodów błędów, które możesz zobaczyć w logach projektu, aby zidentyfikować problemy wykryte przez Google Home platform. W poniższej tabeli znajdziesz informacje na temat rozwiązywania problemów.

Kod błędu Opis
BACKEND_FAILURE_URL_ERROR Google otrzymał z Twojej usługi kod błędu HTTP 4xx inny niż 401.

Użyj usługi requestId w usłudze GCP Logging, aby sprawdzić logi usługi inteligentnego domu.
BACKEND_FAILURE_URL_TIMEOUT Podczas próby nawiązania połączenia z usługą upłynął limit czasu żądania Google.

Sprawdź, czy usługa jest online, akceptuje połączenia i nie przekracza limitu. Sprawdź też, czy urządzenie docelowe jest włączone, online i zsynchronizowane.
BACKEND_FAILURE_URL_UNREACHABLE Firma Google otrzymała z Twojej usługi kod błędu HTTP 5xx.

Użyj usługi requestId w usłudze GCP Logging, aby sprawdzić logi usługi inteligentnego domu.
DEVICE_NOT_FOUND Urządzenie nie istnieje po stronie usługi partnera.

Zwykle oznacza to niepowodzenie synchronizacji danych lub warunek wyścigu.
GAL_BAD_3P_RESPONSE Google nie może przeanalizować odpowiedzi z usługi łączenia kont z powodu nieprawidłowego formatu lub wartości w ładunku.

Użyj requestId w GCP Logging, aby sprawdzić logi błędów w usłudze łączenia kont.
GAL_INTERNAL Podczas próby pobrania tokena dostępu wystąpił błąd wewnętrzny Google.

Jeśli w GCP Logging widzisz wzrost liczby tych błędów, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_INVALID_ARGUMENT Podczas próby pobrania tokena dostępu wystąpił błąd wewnętrzny Google.

Jeśli w GCP Logging widzisz wzrost liczby tych błędów, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_NOT_FOUND Tokeny dostępu użytkownika i tokeny odświeżania przechowywane w Google są unieważnione i nie można ich już odświeżać. Użytkownik musi ponownie połączyć swoje konto, aby nadal korzystać z Twojej usługi.

Jeśli w GCP Logging widzisz wzrost liczby tych błędów, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_PERMISSION_DENIED Gdy udostępnianie tokenów nie jest autoryzowane, wystąpił błąd wewnętrzny Google.

Jeśli w GCP Logging widzisz wzrost liczby tych błędów, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_REFRESH_IN_PROGRESS Token dostępu użytkownika wygasł. Trwa już inna próba jego odświeżenia.

Nie jest to problem i nie musisz nic robić.
INVALID_AUTH_TOKEN Google otrzymało z Twojej usługi kod błędu HTTP 401.

Token dostępu nie wygasł, ale usługa go unieważniła. Aby sprawdzić logi usługi inteligentnego domu, użyj usługi requestId w usłudze GCP Logging.
INVALID_JSON Odpowiedzi JSON nie można przeanalizować ani zrozumieć.

Sprawdź strukturę odpowiedzi JSON pod kątem nieprawidłowej składni, takiej jak niezgodność nawiasów, brakujące przecinki czy nieprawidłowe znaki.
OPEN_AUTH_FAILURE Token dostępu użytkownika stracił ważność i Google nie może go odświeżyć lub Google otrzymał kod błędu HTTP 401 z Twojej usługi.

Jeśli zauważysz wzrost liczby tego kodu, sprawdź, czy występuje też zwiększona liczba błędów związanych z intencjami inteligentnego domu lub żądaniami tokena odświeżania.
PARTNER_RESPONSE_INVALID_ERROR_CODE Odpowiedź zawiera nierozpoznany kod błędu.

Jeśli odpowiedź na żądanie wskazuje błąd, użyj kodu podanego w obsługiwanych kodach błędów.
PARTNER_RESPONSE_INVALID_PAYLOAD Pola odpowiedzi payload nie można przeanalizować jako obiektu JSON.

Sprawdź, czy pole ładunku w odpowiedzi na żądanie ma pasujące nawiasy i czy ma prawidłową strukturę jak pole JSON.
PARTNER_RESPONSE_INVALID_STATUS Odpowiedź nie wskazuje stanu lub wskazuje nieprawidłowy.

Odpowiedzi na żądania realizacji intencji powinny wskazywać stan o wartości SUCCESS, OFFLINE, ERROR, EXCEPTIONS. Dowiedz się więcej o obsłudze błędów i wyjątków.
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES W odpowiedzi brakuje co najmniej 1 intencji podanej w żądaniu.

Sprawdź, czy odpowiedź na wykonanie ma prawidłową strukturę i czy w odpowiedzi znajdują się wyniki dotyczące wszystkich intencji z żądania.
PARTNER_RESPONSE_MISSING_DEVICE W odpowiedzi brakuje co najmniej 1 urządzenia uwzględnionego w żądaniu.

Sprawdź, czy odpowiedź na wykonanie ma prawidłową strukturę i czy w odpowiedzi znajdują się wszystkie identyfikatory urządzeń z żądania.
PARTNER_RESPONSE_MISSING_PAYLOAD Odpowiedź nie zawiera pola payload.

Pamiętaj, aby w odpowiedzi na żądanie dodać pole ładunku. Dowiedz się więcej o tym, jak prawidłowo utworzyć odpowiedź wykonania.
PARTNER_RESPONSE_NOT_OBJECT Odpowiedzi nie można przeanalizować jako obiektu JSON.

Sprawdź, czy wszystkie pola w odpowiedzi na żądanie zawierają niezamierzone znaki, nawiasy kwadratowe oraz błędy formatowania. Niektóre znaki Unicode mogą być nieobsługiwane. Sprawdź też, czy odpowiedź ma prawidłową strukturę jako obiekt JSON.
PROTOCOL_ERROR Przetwarzanie żądania nie powiodło się.

Aby sprawdzić logi usługi inteligentnego domu, użyj requestId w Google Cloud Logging.
RESPONSE_TIMEOUT Podczas oczekiwania na odpowiedź żądanie przekroczyło limit czasu.

Czas oczekiwania na odpowiedź wynosi 9 sekund od momentu wysłania żądania. Pamiętaj, aby wysłać odpowiedź przed upływem tego czasu.
RESPONSE_UNAVAILABLE Nie otrzymano odpowiedzi lub odpowiedź nie wskazuje stanu.

Odpowiedzi na żądania realizacji intencji powinny być uporządkowane zgodnie z dokumentacją inteligentnego domu i muszą wskazywać stan.
TRANSIENT_ERROR Błąd przejściowy to błąd, który rozwiąże się sam.

Błędy te najczęściej pojawiają się jako połączenie z urządzeniem lub usługą. Dzieje się tak również wtedy, gdy nie można nawiązać nowych połączeń z serwerem.

Dzienniki wyszukiwania

Gdy nauczysz się już monitorować integracje za pomocą wskaźników, kolejnym krokiem będzie rozwiązanie problemów z poszczególnymi błędami za pomocą narzędzia Cloud Logging. Log błędów to wpis w formacie JSON zawierający pola zawierające przydatne informacje, takie jak czas, kod błędu i szczegóły dotyczące pierwotnej intencji inteligentnego domu.

W Google Cloud jest kilka systemów, które przez cały czas wysyłają logi do Twojego projektu. Aby przefiltrować logi, musisz napisać zapytania i znaleźć te, których potrzebujesz. Zapytania mogą być oparte na zakresie czasu, zasobie, ważności logu lub wpisach niestandardowych.

Wykonywanie zapytań dotyczących logów Cloud

Przyciski zapytania ułatwiają tworzenie filtrów niestandardowych.

Tworzenie zapytań do Cloud Log

Aby określić Zakres czasu, kliknij przycisk wyboru zakresu czasu i wybierz jedną z dostępnych opcji. Spowoduje to odfiltrowanie logów i wyświetlenie tych, które pochodzą z wybranego zakresu czasu.

Aby określić Zasób, kliknij menu Zasób, a potem wybierz Google Assistant Action Project (Projekt akcji Asystenta Google). Spowoduje to dodanie do zapytania filtra, który będzie wyświetlał logi pochodzące z Twojego projektu.

Za pomocą przycisku Waga możesz filtrować dane według poziomu logowania Alarmowe, Informacje, Debugowanie i innych poziomów logu ważności.

Wpisy niestandardowe możesz też wpisywać w polu Zapytanie w Logs Explorer. Mechanizm zapytań używany w tym polu obsługuje zarówno zapytania podstawowe, np. dopasowywanie ciągów, jak i bardziej zaawansowane typy zapytań, w tym porównywarki (<, >=, !=) i operatory logiczne (AND, OR, NOT).

Na przykład poniższy wpis niestandardowy zwróci błędy pochodzące z urządzenia typu LIGHT:

resource.type = "assistant_action_project" AND severity = ERROR AND jsonPayload.executionLog.executionResults.actionResults.device.deviceType = "LIGHT"

Więcej przykładów skutecznego wysyłania zapytań do logów znajdziesz w bibliotece zapytań.

Testowanie poprawek

Gdy zidentyfikujesz błędy i zastosujesz aktualizacje, żeby je naprawić, zalecamy dokładne przetestowanie poprawek w narzędziu Google Home Test Suite. Udostępniliśmy przewodnik użytkownika, który wyjaśnia, jak używać narzędzia Test Suite, z którego dowiesz się, jak skutecznie testować zmiany.

Materiały szkoleniowe

Ten dokument zawiera instrukcje rozwiązywania problemów z działaniem w inteligentnym domu. Możesz też zapoznać się z naszymi ćwiczeniami z programowania, aby dowiedzieć się więcej o debugowaniu: