如果裝置或要求無法正常運作,請務必提供 為使用者提供良好的錯誤處理與溝通機制,讓他們瞭解 並盡可能修正該問題請務必考量 可能的故障情況,以及裝置的回應方式:如果使用者 中斷進行中的工作?如果使用者透過裝置要求執行動作,該怎麼辦? 是否在離線狀態下?針對這些問題進行規劃並協助使用者復原 不但可避免使用者造成困擾,還能提供更優質的體驗 以及你的裝置類型
本指南提供了一些意圖回應的範例,說明如何處理錯誤。詳情請見
錯誤和例外狀況
查看有效的 errorCode
值,瞭解錯誤和例外狀況。
範例 1:EXECUTE
意圖的錯誤回應
一名使用者擁有兩個智慧型燈具,並安裝在客廳。該使用者
發出「開啟客廳的燈」指令。Google 傳送了 EXECUTE
意圖傳送至執行要求網址您發現使用者的裝置處於離線狀態
且無法控制,因此執行要求會傳回含有以下內容的 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 會透過「the device」
目前不提供」才能達到相同的效果記住
傳送後需要為處於報告狀態的裝置傳送離線狀態
在「EXECUTE
」回應中errorCode
deviceOffline
。
示例 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 會提示使用者「the device 過低」 電池」才能達到相同的效果
示例 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 會提示使用者「device」門 已開啟」在收到通知後。您可以將對應的 在同一酬載中,顯示在通知旁邊的裝置狀態。
範例 4:後續通知
如果使用支援後續通知的 trait 指令,您可以傳送 系統發生錯誤或發生例外狀況時,向使用者傳送後續通知 您已導入 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」 「卡住」在收到通知後。您可以將對應的 裝置狀態在同一酬載中顯示通知。
如需詳細資訊和詳細的 errorCodes
,請參閱
錯誤和例外狀況
參考文件