Rozwiązywanie problemów z błędami integracji

Z chmury do chmury    Sprawa

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

Aby rozwiązać ten problem, wykonaj 2 czynności:

  1. Monitoruj stan projektów za pomocą wskaźników inteligentnego domu.
  2. Aby badać problemy, sprawdź 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ć informacje o błędach.

Monitorowanie błędów

Aby uzyskać dostęp do wskaźników projektu, możesz użyć Google Cloud Monitoring dashboard. Oto kilka kluczowych wykresów, które przydają się przy monitorowaniu jakości i debugowaniu:

  • Wykres Wskaźnik sukcesu to pierwszy wykres, od którego zaczyna się monitorowanie niezawodności projektów. Spadek na wykresie może oznaczać przerwę w działaniu usługi w przypadku części lub wszystkich użytkowników. Zalecamy dokładne monitorowanie tego wykresu pod kątem wszelkich 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 u użytkowników. Nagłe wahania tego wykresu mogą wskazywać, że Twoje systemy nie są w stanie nadążyć za żądaniami. Zalecamy okresowe sprawdzanie tego wykresu w celu zauważenia nieoczekiwanych zachowań.
  • Wykresy z podziałem błędów są najbardziej przydatne podczas rozwiązywania problemów z integracją. Każdy błąd wyróżniony na wykresie procentowym powodzenia zawiera kod błędu. Informacje o błędach oznaczonych przez Google Home platform i sposobach ich rozwiązywania znajdziesz w tabeli poniżej.

Kody błędów platformy

Oto kilka typowych kodów błędów, które mogą wystąpić w logach projektu, aby zidentyfikować problemy wykryte przez Google Home platform. W poniższej tabeli znajdziesz informacje o rozwiązywaniu problemów.

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

Użyj requestId w 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 Twoja usługa jest online, akceptuje połączenia i czy nie przekracza limitu. Sprawdź też, czy urządzenie docelowe jest włączone, online i zsynchronizowane.
BACKEND_FAILURE_URL_UNREACHABLE Otrzymaliśmy kod błędu HTTP 5xx z Twojej usługi.

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

Zwykle oznacza to błąd synchronizacji danych lub warunek wyścigu.
GAL_BAD_3P_RESPONSE Google nie może przeanalizować odpowiedzi z usługi łączenia kont ze względu na nieprawidłowy format lub nieprawidłowe 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 przez Google wystąpił błąd wewnętrzny Google.

Jeśli zauważysz wzrost częstotliwości występowania tego błędu w GCP Logging, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_INVALID_ARGUMENT Podczas próby pobrania tokena dostępu przez Google wystąpił błąd wewnętrzny Google.

Jeśli zauważysz wzrost częstotliwości występowania tego błędu w GCP Logging, 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 zauważysz wzrost częstotliwości występowania tego błędu w GCP Logging, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_PERMISSION_DENIED Gdy udostępnianie tokenów nie było autoryzowane, wystąpił błąd wewnętrzny Google.

Jeśli zauważysz wzrost częstotliwości występowania tego błędu w GCP Logging, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_REFRESH_IN_PROGRESS Token dostępu użytkownika wygasł i jest już wykonywana inna próba jego odświeżenia.

Nie jest to problem i nie musisz nic robić.
INVALID_AUTH_TOKEN Otrzymaliśmy kod błędu HTTP 401 z Twojej usługi.

Token dostępu nie wygasł, ale usługa unieważniła go. Użyj requestId w GCP Logging, aby sprawdzić logi usługi inteligentnego domu.
INVALID_JSON Odpowiedź JSON nie może zostać przeanalizowana lub niezrozumiała.

Sprawdź, czy struktura odpowiedzi JSON nie zawiera nieprawidłowej składni, np. niezgodnych nawiasów, brakujących przecinków czy nieprawidłowych znaków.
OPEN_AUTH_FAILURE Token dostępu użytkownika wygasł i Google nie może go odświeżyć lub otrzymaliśmy z Twojej usługi kod błędu HTTP 401.

Jeśli zauważysz zwiększoną częstotliwość wysyłania tego kodu, sprawdź, czy nie zauważasz też większej liczby błędów związanych z intencjami inteligentnego domu lub odświeżaniem żądań tokenów.
PARTNER_RESPONSE_INVALID_ERROR_CODE Odpowiedź wskazuje nierozpoznany kod błędu.

Jeśli odpowiedź na żądanie wskazuje błąd, upewnij się, że korzystasz z kodu podanego w naszych 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 zawiera pasujące nawiasy i ma prawidłową strukturę jako pole JSON.
PARTNER_RESPONSE_INVALID_STATUS Odpowiedź nie wskazuje stanu lub wskazuje nieprawidłowy stan.

Odpowiedzi na żądania realizacji intencji powinny wskazywać stan za pomocą SUCCESS, OFFLINE, ERROR, EXCEPTIONS. Więcej informacji o obsłudze błędów i wyjątków.
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES W odpowiedzi brakuje co najmniej 1 intencji znajdującej się w żądaniu.

Sprawdź, czy odpowiedź wykonania ma prawidłową strukturę i czy zawiera ona wyniki wszystkich intencji z żądania.
PARTNER_RESPONSE_MISSING_DEVICE W odpowiedzi brakuje co najmniej 1 urządzenia.

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

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

Sprawdź, czy wszystkie pola w odpowiedzi na żądanie nie zawierają niezamierzonych znaków, niepasujących nawiasów ani błędów formatowania. Niektóre znaki Unicode mogą nie być obsługiwane. Sprawdź też, czy odpowiedź ma prawidłową strukturę jako obiekt JSON.
PROTOCOL_ERROR Nie udało się przetworzyć żądania.

Użyj requestId w Google Cloud Logging, aby sprawdzić logi usługi inteligentnego domu.
RESPONSE_TIMEOUT Podczas oczekiwania na odpowiedź przekroczono limit czasu żądania.

Limit czasu na wysłanie odpowiedzi wynosi 9 sekund od momentu wysłania żądania. Pamiętaj, aby odpowiedzieć w tym czasie.
RESPONSE_UNAVAILABLE Nie otrzymano odpowiedzi lub odpowiedź nie określa stanu.

Odpowiedzi na żądania dotyczące realizacji intencji powinny być uporządkowane zgodnie z dokumentacją inteligentnego domu i podawać ich stan.
TRANSIENT_ERROR Błąd przejściowy to błąd, który ustąpi samoistnie.

Zwykle te błędy pojawiają się jako brak połączenia z urządzeniem lub usługą. Także wtedy, gdy nie można nawiązać nowych połączeń z serwerem.

Dzienniki wyszukiwania

Gdy nabierzesz wprawy w monitorowaniu integracji za pomocą wskaźników, możesz rozwiązać problemy z określonymi błędami za pomocą narzędzia Cloud Logging. Dziennik błędów to taki wpis w formacie JSON zawierający pola zawierające przydatne informacje, takie jak godzina, kod błędu i szczegóły dotyczące źródłowej intencji inteligentnego domu.

W projekcie Google Cloud jest wiele systemów, które zawsze wysyłają logi do Twojego projektu. Musisz napisać zapytania, aby filtrować logi i znajdować potrzebne Ci informacje. Zapytania mogą być oparte na zakresie czasu, zasobie, poziomie ważności logu lub wpisach niestandardowych.

Wysyłanie zapytań dotyczących logów Cloud

W tworzeniu filtrów niestandardowych możesz używać przycisków zapytań.

Tworzenie zapytań Cloud Log

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

Aby określić Zasób, kliknij menu Zasób i wybierz Projekt akcji Asystenta Google. Spowoduje to dodanie do zapytania filtra, który wyświetli logi pochodzące z Twojego projektu.

Użyj przycisku Waga, aby filtrować według poziomów ważności Alarmowe, Informacje, Debugowanie i inne poziomy ważności.

Możesz też użyć pola Zapytanie w Logs Explorer, aby wpisać wpisy niestandardowe. Mechanizm zapytań używany w tym polu obsługuje zarówno podstawowe zapytania, takie jak dopasowywanie ciągów znaków, jak i bardziej zaawansowane typy zapytań, w tym komparatory (<, >=, !=) i operatory logiczne (AND, OR, NOT).

Na przykład ten niestandardowy wpis zwróciłby błędy, które są wynikiem działania urządzenia typu LIGHT:

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

Otwórz Bibliotekę zapytań, aby znaleźć więcej przykładów skutecznego wysyłania zapytań dotyczących logów.

Poprawki testów

Gdy wykryjesz błędy i zastosujesz aktualizacje, aby je naprawić, zalecamy dokładne przetestowanie poprawek w narzędziu Google Home Test Suite. Udostępniamy przewodnik użytkownika, z którego dowiesz się, jak korzystać z narzędzia Test Suite, z którego dowiesz się, jak skutecznie testować zmiany.

Materiały szkoleniowe

W tym dokumencie opisujemy sposoby rozwiązywania problemów z działaniem Inteligentnym domem. Możesz też zapoznać się z naszymi ćwiczeniami z programowania, aby dowiedzieć się więcej o debugowaniu: