Rozwiązywanie problemów z integracją

Google Cloud udostępnia narzędzia do monitorowania niezawodności projektów za pomocą Google Cloud Monitoring oraz rozwiązywania problemów za pomocą Google Cloud Logginglogów błędów. Gdy podczas realizacji intencji użytkownika wystąpi błąd, potok Google Home Analytics zarejestruje go w danych i opublikuje w dzienniku projektu.

Aby rozwiązać problemy z błędami, wykonaj 2 kroki:

  1. Monitoruj stan swoich projektów za pomocą danych inteligentnego domu.
  2. Aby zbadać problemy, sprawdź szczegółowe opisy błędów w logach błędów.

Proces jest podobny w przypadku integracji lokalnej za pomocą funkcji Local Home SDK. Gdy opanujesz proces rozwiązywania problemów, możesz łatwo przełączać się między danymi a logami, aby uzyskać informacje o błędach.

Opcjonalnie możesz przetestować swoje działanie, udostępniając je innym użytkownikom. Pamiętaj, aby odpowiednio obsługiwać błędy i wyjątki.

Błędy monitorowania

Aby uzyskać dostęp do danych projektu, możesz użyć Google Cloud Monitoring dashboard. Niektóre z tych wykresów są szczególnie przydatne do monitorowania jakości i debugowania:

  • Gdy monitorujesz niezawodność swoich projektów, zacznij od wykresu Współczynnik sukcesu. Spadek na tym wykresie może wskazywać przerwę w działaniu usługi dla części lub wszystkich użytkowników. Zalecamy uważnie śledzić ten wykres po każdej zmianie lub aktualizacji projektu pod kątem nieprawidłowości.
  • Wykres 95 centylow czasu oczekiwania to ważny wskaźnik skuteczności integracji Cloud-to-cloud w przypadku użytkowników. Nagłe wahania na tym wykresie mogą wskazywać, że Twoje systemy nie nadążają za żądaniami. Zalecamy okresowe sprawdzanie tego wykresu, aby wykryć nieoczekiwane zachowania.
  • Wykresy Podział błędów są najbardziej przydatne podczas rozwiązywania problemów z integracją. W zestawieniu błędów podany jest kod błędu dla każdego błędu wyróżnionego na wykresie odsetka sukcesów. W tabeli poniżej znajdziesz błędy oznaczone ikoną Google Home platform oraz 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. Informacje o rozwiązywaniu problemów znajdziesz w tabeli poniżej.

Kod błędu Opis
BACKEND_FAILURE_URL_ERROR Otrzymaliśmy od Twojej usługi kod błędu HTTP 4xx inny niż 401.

Aby sprawdzić dzienniki usługi inteligentnego domu, użyj opcji requestId w Logowaniu GCP.
BACKEND_FAILURE_URL_TIMEOUT Podczas próby dotarcia do Twojej usługi nastąpiło przekroczenie limitu czasu żądania Google.

Sprawdź, czy usługa jest dostępna online, akceptuje połączenia i nie przekracza limitu przepustowości. Sprawdź też, czy urządzenie docelowe jest włączone, online i zsynchronizowane.
BACKEND_FAILURE_URL_UNREACHABLE Google otrzymało od Twojej usługi kod błędu HTTP 5xx.

Aby sprawdzić dzienniki usługi inteligentnego domu, użyj opcji requestId w Logowaniu GCP.
DEVICE_NOT_FOUND Urządzenie nie istnieje po stronie usługi partnera.

Zazwyczaj wskazuje to na błąd synchronizacji danych lub warunki wyścigu.
GAL_BAD_3P_RESPONSE Google nie może przeanalizować odpowiedzi otrzymanej od usługi łączenia kont z powodu nieprawidłowego formatu lub wartości w danych.

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

Jeśli zauważysz zwiększoną częstotliwość występowania tego błędu w logach GCP, 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 zauważysz zwiększoną częstotliwość występowania tego błędu w logach GCP, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_NOT_FOUND Tokeny dostępu i tokeny odświeżania użytkownika przechowywane w Google są nieważne i nie można ich już odświeżyć. Aby nadal korzystać z usługi, użytkownik musi ponownie połączyć swoje konto.

Jeśli zauważysz zwiększoną częstotliwość występowania tego błędu w logach GCP, skontaktuj się z nami, aby uzyskać więcej informacji.
GAL_PERMISSION_DENIED Podczas udostępniania tokena wystąpił błąd wewnętrzny Google.

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

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

Token dostępu nie wygasł, ale Twoja usługa unieważniła go. Użyj opcji requestId w logowaniu GCP, aby sprawdzić dzienniki usługi inteligentnego domu.
INVALID_JSON Nie można przeanalizować ani zinterpretować odpowiedzi w formacie JSON.

Sprawdź strukturę odpowiedzi JSON pod kątem nieprawidłowej składni, np. niepasujących nawiasów, brakujących przecinków czy nieprawidłowych znaków.
OPEN_AUTH_FAILURE Token dostępu użytkownika wygasł, a Google nie może go odświeżyć, lub Google otrzymało od Twojej usługi kod błędu HTTP 401.

Jeśli zauważysz zwiększoną częstotliwość występowania tego kodu, sprawdź, czy nie wzrosła też liczba błędów związanych z intencjami dotyczącymi inteligentnego domu lub żądaniami odświeżania tokenów.
PARTNER_RESPONSE_INVALID_ERROR_CODE Odpowiedź wskazuje nierozpoznany kod błędu.

Jeśli odpowiedź na żądanie wskazuje na błąd, użyj jednego z naszych obsługiwanych kodów błędów.
PARTNER_RESPONSE_INVALID_PAYLOAD Nie można przeanalizować pola odpowiedzi payload jako obiektu JSON.

Sprawdź, czy pole ładunku w odpowiedzi na żądanie ma pasujące nawiasy i czy jest prawidłowo sformatowane jako pole JSON.
PARTNER_RESPONSE_INVALID_STATUS Odpowiedź nie wskazuje stanu lub wskazuje nieprawidłowy stan.

Odpowiedzi na żądania realizacji intencji powinny wskazywać stan SUCCESS, OFFLINE, ERROR, EXCEPTIONS. Więcej informacji o  postępowaniu z błędami i wyjątkami
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES W odpowiedzi brakuje co najmniej 1 intencji obecnej w żądaniu.

Sprawdź, czy odpowiedź na żądanie jest poprawnie sformatowana i czy zawiera wyniki dla wszystkich intencji z żądania.
PARTNER_RESPONSE_MISSING_DEVICE W odpowiedzi brakuje co najmniej 1 urządzenia obecnego w żądaniu.

Sprawdź, czy odpowiedź na wykonanie jest poprawnie sformatowana i czy zawiera wszystkie identyfikatory urządzeń z żądania.
PARTNER_RESPONSE_MISSING_PAYLOAD Odpowiedź nie zawiera pola payload.

Upewnij się, że w odpowiedzi na żądanie uwzględniono pole ładunku. Możesz dowiedzieć się więcej o tym, jak prawidłowo tworzyć odpowiedzi na proces wykonania.
PARTNER_RESPONSE_NOT_OBJECT Nie można przeanalizować odpowiedzi jako obiektu JSON.

Sprawdź wszystkie pola w odpowiedzi na żądanie pod kątem niechcianych znaków, niepasujących nawiasów lub błędów formatowania. Niektóre znaki Unicode mogą nie być obsługiwane. Sprawdź też, czy odpowiedź jest prawidłowo sformatowana jako obiekt JSON.
PROTOCOL_ERROR Nie udało się przetworzyć żądania.

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

Czas oczekiwania na odpowiedź wynosi 9 sekund od momentu wysłania żądania. Pamiętaj, aby wysłać odpowiedź w tym terminie.
RESPONSE_UNAVAILABLE Nie otrzymano odpowiedzi lub odpowiedź nie zawiera informacji o stanie.

Odpowiedzi na żądania dotyczące realizacji intencji powinny być uporządkowane zgodnie z  dokumentacją na temat inteligentnych urządzeń domowych i wskazywać stan.
TRANSIENT_ERROR Błąd przejściowy to błąd, który sam zniknie.

Najczęściej te błędy objawiają się jako utrata połączenia z urządzeniem lub usługą. Dotyczy to również sytuacji, gdy nie można otworzyć nowych połączeń z serwerem.

Dzienniki wyszukiwania

Gdy już zaczniesz monitorować integracje za pomocą danych, następnym krokiem będzie rozwiązywanie konkretnych błędów za pomocą Cloud Logging. Dziennik błędów to wpis w formacie JSON z polami zawierającymi przydatne informacje, takie jak czas, kod błędu i szczegóły dotyczące intencji inteligentnego domu.

W usłudze Google Cloud jest wiele systemów, które w każdej chwili wysyłają logi do Twojego projektu. Musisz stworzyć zapytania do filtrowania dzienników i wyszukiwania potrzebnych. Zapytania mogą być oparte na zakresie czasowym, zasobach, poważnych wpisach w dzienniku lub wpisach niestandardowych.

Wysyłanie zapytań do logów Cloud

Do tworzenia filtrów niestandardowych możesz używać przycisków zapytań.

Tworzenie zapytań do logów Cloud

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

Aby określić Zasób, kliknij menu Zasób, a następnie wybierz Projekt działania Asystenta Google. Spowoduje to dodanie filtra do zapytania, aby wyświetlić logi pochodzące z Twojego projektu.

Użyj przycisku Poziom ważności, aby filtrować według Alarm, Informacje, Debugowanie i innych poziomów ważności dzienników.

Możesz też użyć pola Zapytanie w sekcji Logs Explorer, aby wpisać dane niestandardowe. Mechanizm zapytań używany przez to pole obsługuje zarówno zapytania podstawowe, takie jak dopasowywanie ciągu znaków, jak i zaawansowane typy zapytań, w tym operatory porównywania (<, >=, !=) i operatory logiczne (AND, OR, NOT).

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

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

Więcej przykładów skutecznego wykonywania zapytań do dzienników znajdziesz w bibliotece zapytań.

Testowanie poprawek

Po zidentyfikowaniu błędów i zaimplementowaniu aktualizacji zalecamy dokładne przetestowanie poprawek za pomocą Google Home Test Suite. Udostępniamy przewodnik użytkownika dotyczący Test Suite, który pomoże Ci skutecznie przetestować zmiany.

Materiały szkoleniowe

W tym dokumencie znajdziesz instrukcje rozwiązywania problemów z błędami w aplikacji Dom. Aby dowiedzieć się więcej o debugowaniu, możesz też zapoznać się z naszą serią Codelabs: