Jeśli urządzenia lub żądania nie działają zgodnie z oczekiwaniami, zadbaj o poprawną obsługę błędów i komunikację z użytkownikami, aby wiedzieli, co się stało i jak można je naprawić. Pamiętaj o możliwych scenariuszach awarii i o tym, jak zareaguje urządzenie – co zrobić, jeśli użytkownik zakłóci działanie zadania? Co się stanie, gdy użytkownik poprosi o działanie z urządzenia w trybie offline? Planowanie tych problemów i pomaganie użytkownikom w ich regenerowaniu może uniknąć frustracji użytkowników i zwiększać jakość Twoich urządzeń.
Ten przewodnik zawiera kilka przykładów odpowiedzi na zamiar, które obsługują błędy. Prawidłowe wartości errorCode
dla błędów i wyjątków znajdziesz w sekcji Błędy i wyjątki.
Przykład 1. Odpowiedź błędu dotycząca intencji EXECUTE
Użytkownik ma 2 inteligentne żarówki zainstalowane w salonie. Użytkownik wydaje polecenie „Włącz światło w salonie”, a Google wysyła intencję EXECUTE
do Twojego adresu URL realizacji. Okazało się, że urządzenia użytkownika są offline i których nie można kontrolować, dlatego w Twojej realizacji pojawi się odpowiedź EXECUTE
z danymi status
ERROR
i errorCode
deviceOffline
.
Ten przykład pokazuje, jak zwrócić odpowiedź EXECUTE
za pomocą errorCode
z urządzenia lekkiego, jak opisano wcześniej:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [ { "ids": [ "light-device-id-1" ], "status": "ERROR", "errorCode": "deviceOffline" }, { "ids": [ "light-device-id-2" ], "status": "ERROR", "errorCode": "deviceOffline" } ] } }
Po otrzymaniu odpowiedzi Google Assistant wyświetli użytkownikowi komunikat „Urządzenie jest teraz niedostępne”. Pamiętaj, że po wysłaniu errorCode
deviceOffline
w odpowiedzi EXECUTE
nadal musisz wysłać stan offline na urządzenia w stanie raportu.
Przykład 2. Nieblokujący wyjątek dotyczący intencji EXECUTE
Użytkownik próbuje zablokować funkcję Smart Lock przy drzwiach wejściowych, używając urządzenia z urządzeniem Assistant. Możesz którymś zarządzać zamkiem, ale zauważysz, że bateria w urządzeniu jest słaba, więc w trakcie realizacji zobaczysz odpowiedź EXECUTE
z status
SUCCESS
i exceptionCode
lowBattery
.
Ten przykład pokazuje, jak wysłać odpowiedź EXECUTE
za pomocą exceptionCode
z urządzenia blokującego, jak opisano wcześniej:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["lock-device-id-1"], "status": "SUCCESS", "states": { "on": true, "online": true, "isLocked": true, "isJammed": false, "exceptionCode": "lowBattery" } }] } }
Po otrzymaniu odpowiedzi Assistant wyświetli komunikat „użytkownik urządzenia ma niski poziom baterii”.
Przykład 3. Aktywne powiadomienia o błędach
W niektórych przypadkach warto poinformować użytkowników o błędach, zwłaszcza w przypadku funkcji, które użytkownicy powinni wykonać automatycznie. W przypadku cech, które obsługują powiadomienia bez pytania, możesz powiadomić użytkownika o błędach, jeśli masz wdrożone smart home aktywne powiadomienia.
Inteligentna suszarka jest uruchomiona, a ktoś otwiera drzwi przed końcem cyklu.
Możesz wywołać metodę Google Home Graph APIreportStateAndNotifications
, aby wysłać aktywne powiadomienie za pomocą errorCode
:
Ten przykład pokazuje, jak wysłać aktywne powiadomienie z errorCode
przy użyciu suszarki, jak opisano wcześniej:
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
Po otrzymaniu powiadomienia Assistant wyświetli komunikat z informacją „otwarte drzwi urządzenia”. Wraz z powiadomieniami możesz wysłać odpowiednie stany urządzenia.
Przykład 4. Dalsze powiadomienie
W przypadku poleceń cech, które obsługują dalsze powiadomienia, możesz wysłać użytkownikowi powiadomienie po wystąpieniu błędu lub wyjątku, jeśli masz zaimplementowane smart home powiadomienia.
Użytkownik wydaje polecenie zamknięcia drzwi garażowych, ale drzwi się zacięły podczas zamykania. Możesz wysłać kolejne powiadomienie na errorCode
:
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "door-device-id": { "LockUnlock": { "priority": 0, "followUpResponse": { "status": "FAILURE", "errorCode": "deviceJammingDetected", "followUpToken": "follow-up-token-1" } } } }, "states": { "door-device-id": { "openPercent": 70 } } } } }
Po otrzymaniu powiadomienia Assistant wyświetli komunikat z informacją, że urządzenie się zacięło. Możesz wysyłać odpowiadające im stany urządzeń z powiadomieniami w tym samym ładunku.
Więcej informacji oraz szczegółowe informacje na temat obiektu errorCodes
znajdziesz w dokumentacji Błędy i wyjątki.