Когда устройства или запросы не работают должным образом, важно обеспечить хорошую обработку ошибок и связь для ваших пользователей, чтобы они понимали, что произошло, и, когда это возможно, как это исправить. Убедитесь, что вы продумали возможные сценарии отказа и то, как ваше устройство отреагирует: что, если пользователь прервет выполняемую задачу? Что делать, если пользователь запрашивает действие с устройства, когда оно находится в автономном режиме? Планирование этих проблем и помощь пользователю в устранении их может помочь избежать разочарования пользователей и повысить качество работы ваших устройств.
В этом руководстве приведены некоторые примеры ответов о намерениях, которые обрабатывают ошибки. См. Ошибки и исключения , чтобы просмотреть допустимые значения errorCode
для ошибок и исключений.
Пример 1: Ответ об ошибке для намерения EXECUTE
У конечного пользователя есть два умных светильника, установленных в гостиной. Пользователь отдает команду «включить свет в гостиной», и Google отправляет намерение EXECUTE
на ваш URL-адрес выполнения. Вы обнаружили, что устройства пользователя отключены и не поддаются контролю, поэтому ваше выполнение возвращает ответ EXECUTE
со status
ERROR
и errorCode
deviceOffline
.
В этом примере показано, как вернуть ответ EXECUTE
с errorCode
от легкого устройства, как описано ранее:
{ "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" } ] } }
Google Assistant сообщит пользователю « устройство сейчас недоступно» после получения ответа. Помните, что вам по-прежнему необходимо отправлять состояние офлайн для устройств в состоянии отчета после отправки errorCode
deviceOffline
в ответе EXECUTE
.
Пример 2: Неблокирующее исключение для намерения EXECUTE
Пользователь пытается запереть свой смарт-замок на входной двери с помощью устройства с Assistant . Вы можете успешно управлять их блокировкой, но обнаруживаете, что батарея устройства разряжена, поэтому ваше выполнение возвращает ответ EXECUTE
со status
SUCCESS
и exceptionCode
lowBattery
.
В этом примере показано, как отправить ответ EXECUTE
с exceptionCode
с устройства блокировки, как описано ранее:
{ "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" } }] } }
Assistant сообщит пользователю «У устройства низкий заряд батареи» после получения ответа.
Пример 3: Упреждающие уведомления об ошибках
В некоторых случаях может быть полезно предупредить пользователей об ошибке, особенно для функций, выполнение которых пользователи ожидают автоматически. Для черт, которые поддерживают упреждающие уведомления, вы можете упреждающе уведомлять пользователя, когда происходит ошибка, если вы реализовали упреждающие уведомления smart home .
Умная сушилка работает, и кто-то открывает дверь до завершения цикла. Вы можете вызвать метод reportStateAndNotifications
API Google Home Graph , чтобы отправить упреждающее уведомление с errorCode
:
В этом примере показано, как отправить упреждающее уведомление с 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": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
Assistant предложит пользователю «дверца устройства открыта» после получения уведомления. Вы можете отправлять соответствующие состояния устройства вместе с уведомлениями в той же полезной нагрузке.
Пример 4: Последующее уведомление
Для команд признаков, которые поддерживают последующие уведомления, вы можете отправить пользователю последующее уведомление при возникновении ошибки или исключения, если вы внедрили последующие уведомления smart home .
Пользователь отдает команду закрыть дверь гаража, но дверь заклинивает при закрытии. Вы можете отправить последующее уведомление с 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 } } } } }
Assistant подскажет пользователю « устройство заблокировано» после получения уведомления. Вы можете отправлять соответствующие состояния устройства с уведомлениями в той же полезной нагрузке.
Дополнительные сведения и подробные errorCodes
см. в справочной документации по ошибкам и исключениям .
Когда устройства или запросы не работают должным образом, важно обеспечить хорошую обработку ошибок и связь для ваших пользователей, чтобы они понимали, что произошло, и, когда это возможно, как это исправить. Убедитесь, что вы продумали возможные сценарии отказа и то, как ваше устройство отреагирует: что, если пользователь прервет выполняемую задачу? Что делать, если пользователь запрашивает действие с устройства, когда оно находится в автономном режиме? Планирование этих проблем и помощь пользователю в устранении их может помочь избежать разочарования пользователей и повысить качество работы ваших устройств.
В этом руководстве приведены некоторые примеры ответов о намерениях, которые обрабатывают ошибки. См. Ошибки и исключения , чтобы просмотреть допустимые значения errorCode
для ошибок и исключений.
Пример 1: Ответ об ошибке для намерения EXECUTE
У конечного пользователя есть два умных светильника, установленных в гостиной. Пользователь отдает команду «включить свет в гостиной», и Google отправляет намерение EXECUTE
на ваш URL-адрес выполнения. Вы обнаружили, что устройства пользователя отключены и не поддаются контролю, поэтому ваше выполнение возвращает ответ EXECUTE
со status
ERROR
и errorCode
deviceOffline
.
В этом примере показано, как вернуть ответ EXECUTE
с errorCode
от легкого устройства, как описано ранее:
{ "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" } ] } }
Google Assistant сообщит пользователю « устройство сейчас недоступно» после получения ответа. Помните, что вам по-прежнему необходимо отправлять состояние офлайн для устройств в состоянии отчета после отправки errorCode
deviceOffline
в ответе EXECUTE
.
Пример 2: Неблокирующее исключение для намерения EXECUTE
Пользователь пытается запереть свой смарт-замок на входной двери с помощью устройства с Assistant . Вы можете успешно управлять их блокировкой, но обнаруживаете, что батарея устройства разряжена, поэтому ваше выполнение возвращает ответ EXECUTE
со status
SUCCESS
и exceptionCode
lowBattery
.
В этом примере показано, как отправить ответ EXECUTE
с exceptionCode
с устройства блокировки, как описано ранее:
{ "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" } }] } }
Assistant сообщит пользователю «У устройства низкий заряд батареи» после получения ответа.
Пример 3: Упреждающие уведомления об ошибках
В некоторых случаях может быть полезно предупредить пользователей об ошибке, особенно для функций, выполнение которых пользователи ожидают автоматически. Для черт, которые поддерживают упреждающие уведомления, вы можете упреждающе уведомлять пользователя, когда происходит ошибка, если вы реализовали упреждающие уведомления smart home .
Умная сушилка работает, и кто-то открывает дверь до завершения цикла. Вы можете вызвать метод reportStateAndNotifications
API Google Home Graph , чтобы отправить упреждающее уведомление с errorCode
:
В этом примере показано, как отправить упреждающее уведомление с 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": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
Assistant предложит пользователю «дверца устройства открыта» после получения уведомления. Вы можете отправлять соответствующие состояния устройства вместе с уведомлениями в той же полезной нагрузке.
Пример 4: Последующее уведомление
Для команд признаков, которые поддерживают последующие уведомления, вы можете отправить пользователю последующее уведомление при возникновении ошибки или исключения, если вы внедрили последующие уведомления smart home .
Пользователь отдает команду закрыть дверь гаража, но дверь заклинивает при закрытии. Вы можете отправить последующее уведомление с 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 } } } } }
Assistant подскажет пользователю « устройство заблокировано» после получения уведомления. Вы можете отправлять соответствующие состояния устройства с уведомлениями в той же полезной нагрузке.
Дополнительные сведения и подробные errorCodes
см. в справочной документации по ошибкам и исключениям .
Когда устройства или запросы не работают должным образом, важно обеспечить хорошую обработку ошибок и связь для ваших пользователей, чтобы они понимали, что произошло, и, когда это возможно, как это исправить. Убедитесь, что вы продумали возможные сценарии отказа и то, как ваше устройство отреагирует: что, если пользователь прервет выполняемую задачу? Что делать, если пользователь запрашивает действие с устройства, когда оно находится в автономном режиме? Планирование этих проблем и помощь пользователю в устранении их может помочь избежать разочарования пользователей и повысить качество работы ваших устройств.
В этом руководстве приведены некоторые примеры ответов о намерениях, которые обрабатывают ошибки. См. Ошибки и исключения , чтобы просмотреть допустимые значения errorCode
для ошибок и исключений.
Пример 1: Ответ об ошибке для намерения EXECUTE
У конечного пользователя есть два умных светильника, установленных в гостиной. Пользователь отдает команду «включить свет в гостиной», и Google отправляет намерение EXECUTE
на ваш URL-адрес выполнения. Вы обнаружили, что устройства пользователя отключены и не поддаются контролю, поэтому ваше выполнение возвращает ответ EXECUTE
со status
ERROR
и errorCode
deviceOffline
.
В этом примере показано, как вернуть ответ EXECUTE
с errorCode
от легкого устройства, как описано ранее:
{ "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" } ] } }
Google Assistant сообщит пользователю « устройство сейчас недоступно» после получения ответа. Помните, что вам по-прежнему необходимо отправлять состояние офлайн для устройств в состоянии отчета после отправки errorCode
deviceOffline
в ответе EXECUTE
.
Пример 2: Неблокирующее исключение для намерения EXECUTE
Пользователь пытается запереть свой смарт-замок на входной двери с помощью устройства с Assistant . Вы можете успешно управлять их блокировкой, но обнаруживаете, что батарея устройства разряжена, поэтому ваше выполнение возвращает ответ EXECUTE
со status
SUCCESS
и exceptionCode
lowBattery
.
В этом примере показано, как отправить ответ EXECUTE
с exceptionCode
с устройства блокировки, как описано ранее:
{ "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" } }] } }
Assistant сообщит пользователю «У устройства низкий заряд батареи» после получения ответа.
Пример 3: Упреждающие уведомления об ошибках
В некоторых случаях может быть полезно предупредить пользователей об ошибке, особенно для функций, выполнение которых пользователи ожидают автоматически. Для черт, которые поддерживают упреждающие уведомления, вы можете упреждающе уведомлять пользователя, когда происходит ошибка, если вы реализовали упреждающие уведомления smart home .
Умная сушилка работает, и кто-то открывает дверь до завершения цикла. Вы можете вызвать метод reportStateAndNotifications
API Google Home Graph , чтобы отправить упреждающее уведомление с errorCode
:
В этом примере показано, как отправить упреждающее уведомление с 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": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
Assistant предложит пользователю «дверца устройства открыта» после получения уведомления. Вы можете отправлять соответствующие состояния устройства вместе с уведомлениями в той же полезной нагрузке.
Пример 4: Последующее уведомление
Для команд признаков, которые поддерживают последующие уведомления, вы можете отправить пользователю последующее уведомление при возникновении ошибки или исключения, если вы внедрили последующие уведомления smart home .
Пользователь отдает команду закрыть дверь гаража, но дверь заклинивает при закрытии. Вы можете отправить последующее уведомление с 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 } } } } }
Assistant подскажет пользователю « устройство заблокировано» после получения уведомления. Вы можете отправлять соответствующие состояния устройства с уведомлениями в той же полезной нагрузке.
Дополнительные сведения и подробные errorCodes
см. в справочной документации по ошибкам и исключениям .