当设备或请求没有达到预期效果时,务必要提供 良好的错误处理和沟通方式,确保用户了解 并尽可能说明如何纠正错误。请务必仔细考虑 设备可能出现的故障场景以及设备的响应方式: 会打断正在进行的任务吗?如果用户请求通过设备执行某项操作,该怎么办? 该怎么办?为这些问题做好规划并帮助您的用户恢复 可以避免用户产生不满 。
本指南提供了一些用于处理错误的 intent 响应示例。请参阅
错误和异常
查看错误和异常的有效 errorCode
值。
示例 1:针对 EXECUTE
intent 的错误响应
最终用户在客厅安装了两个智能灯。用户
发出“打开客厅的灯”的指令并且 Google 发送了 EXECUTE
intent 添加到您的执行方式网址。你发现用户的设备处于离线状态且不受控制,因此你的执行方式会返回包含 status
ERROR
和 errorCode
deviceOffline
的 EXECUTE
响应。
此示例演示了如何返回包含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 会提示用户“the device are
目前无法播放”。请记住,你仍然
对于处于报告状态的设备,需要在发送后发送离线状态
“EXECUTE
”回复中的errorCode
deviceOffline
。
示例 2:针对 EXECUTE
intent 的非阻塞异常
一位用户尝试使用设备为前门上锁的智能锁
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,则会发生此错误 主动通知。
一台智能烘干机正在运行,有人在烘干程序结束之前打开了门。您可以调用 Google Home Graph API
reportStateAndNotifications
方法,用于发送带有
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 会提示用户输入“the device door is 打开”。您可以将相应的 设备状态和通知。
示例 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 会提示用户输入“the device is 卡住了”。您可以将相应的 具有相同载荷的通知的设备状态。
如需了解详情和 errorCodes
,请参阅
错误和异常
参考文档。