錯誤和例外狀況

本文件列出官方支援的智慧型技術錯誤和例外情況 住宅裝置。請在意圖中使用這些指定的錯誤和例外狀況代碼 回覆或通知中 安裝完畢後,Google 助理會提醒使用者遇到與 偵測到的指令或裝置狀態如果回覆的格式不正確, errorCode,Google 助理會顯示一般錯誤訊息,例如: 「很抱歉,裝置目前無法使用。」

錯誤

當問題觸發或執行,或是該錯誤時,您應該傳回錯誤代碼 要求失敗。舉例來說,鎖門卡住了,無法 就會發生這個狀態的錯誤。此時,使用者應該會收到有關這個狀態的錯誤。

錯誤代碼可附加在裝置層級或全域層級。例如: 當使用者透過某個供應商供應多個燈具,並由中樞裝置控制時 使用者要求關閉所有燈具,供應商可能會傳回 裝置層級的錯誤,如果是單一燈具離線,則發生全域等級錯誤; 整個中樞裝置處於離線狀態,因此無法控制任何燈具。如果所有 裝置處於離線狀態,使用全域層級或裝置層級沒有差異 發生錯誤。裝置離線時,應將{"online": false}狀態回報為 reportState deviceOffline 錯誤代碼。

摘要說明:

  • 全域層級錯誤:回應中的所有裝置含有相同錯誤
  • 局部錯誤:混合回應包含錯誤和成功案例
,瞭解如何調查及移除這項存取權。

全域層級錯誤

下列 JSON 程式碼片段說明如何在 QUERY 或 EXECUTE 回應。

因中樞而造成的全域層級錯誤 deviceOffline 範例如下: 離線:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

因中樞而造成的全域層級錯誤 inSoftwareUpdate 範例如下: 更新中:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

裝置層級錯誤

QUERY 回應

下列 JSON 程式碼片段顯示如何在 QUERY 回應。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

執行回應

下列 JSON 程式碼片段顯示如何在 執行回應。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "device-id-2"
        ],
        "status": "SUCCESS",
        "states": {
          "on": true,
          "online": true
        }
      }
    ]
  }
}

含有錯誤的通知

主動通知

下列 JSON 程式碼片段顯示如何在 主動式通知

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      }
    }
  }
}

後續回應

下列 JSON 程式碼片段顯示如何在 後續追蹤回應

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "PLACEHOLDER"
            }
          }
        }
      }
    }
  }
}

錯誤清單

下列錯誤會在裝置上產生相關聯的 TTS。

  • aboveMaximumLightEffectsDuration : 時間超過 1 小時的上限。請再試一次。
  • aboveMaximumTimerDuration : 我只能設定 <裝置>最多 <timeperiod>
  • actionNotAvailable : 很抱歉,我目前無法執行這項操作。
  • actionUnavailableWhileRunning : &lt;device(s)&gt;&lt;is/are&gt;因此目前無法進行任何變更
  • alreadyArmed : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyAtMax : &lt;device(s)&gt;&lt;is/are&gt;設為最高溫度
  • alreadyAtMin : &lt;device(s)&gt;&lt;is/are&gt;設為最低溫度
  • alreadyClosed : &lt;device(s)&gt;&lt;is/are&gt;
  • alreadyDisarmed : &lt;device(s)&gt;&lt;is/are&gt;就已經解除了
  • alreadyDocked : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyInState : &lt;device(s)&gt;&lt;is/are&gt;處於這個狀態
  • alreadyLocked : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyOff : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyOn : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyOpen : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyPaused : &lt;device(s)&gt;&lt;is/are&gt;
  • alreadyStarted : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyStopped : &lt;device(s)&gt;&lt;is/are&gt;。
  • alreadyUnlocked : &lt;device(s)&gt;&lt;is/are&gt;並解鎖狀態。
  • ambiguousZoneName : 很抱歉,<裝置>無法識別所需可用區請確認各個區域皆有專屬名稱,然後再試一次。
  • amountAboveLimit : 不只是<device(s)>協助。
  • appLaunchFailed : 很抱歉,無法啟動「<應用程式名稱>」。
  • armFailure : &lt;device(s)&gt;但無法啟動。
  • armLevelNeeded : 我不確定要在哪個層級設定<device(s)>。請試著說出「設定 <裝置>」「<低安全性>」或「設定 <裝置>」設為 <高安全性>"
  • authFailure : 我無法連線到<device(s)>,請嘗試檢查應用程式,確認你的<裝置/裝置>&lt;is/are&gt;。
  • bagFull : &lt;device(s)&gt;&lt;has/have&gt;<一件全套/滿件行李>。請留空 <it/them>然後再試一次。
  • belowMinimumLightEffectsDuration : 時間下限為 5 分鐘。請再試一次。
  • belowMinimumTimerDuration : 我無法設定<裝置>讓人覺得很快請再試一次。
  • binFull : &lt;device(s)&gt;&lt;has/have&gt;<a full bin/full bins>。
  • cancelArmingRestricted : 很抱歉,我無法取消「<device(s)>」啟動警報器。
  • cancelTooLate : 很抱歉,現在取消期限已過。使用「<device(s)>」或應用程式。
  • channelSwitchFailed : 很抱歉,無法切換到「<頻道名稱>」頻道。請稍後再試。
  • chargerIssue : 抱歉,看起來是 <device(s)>&lt;has/have&gt;<充電器問題/充電器問題>。
  • commandInsertFailed : 無法處理 <device(s)> 的指令。
  • deadBattery : <裝置>&lt;has/have&gt;<電池沒電/電池沒電>。
  • degreesOutOfRange : 要求的度數超出<device(s)>的測溫範圍。
  • deviceAlertNeedsAssistance : &lt;device(s)&gt;&lt;has/have&gt;待處理警示和 <need(s)>你的協助。
  • deviceAtExtremeTemperature : <裝置>&lt;is/are&gt;在極端溫度/極端溫度的情況下
  • deviceBusy : 抱歉,看起來是 <device(s)>表示已在執行特定工作
  • deviceCharging : 抱歉,看起來是 <device(s)>因此無法執行這項動作,因為 (ha_shared.Its 他們大小=$item.devices.total_device_count) 充電中。
  • deviceClogged : 抱歉,看起來是 <device(s)>堵塞
  • deviceCurrentlyDispensing : &lt;device(s)&gt;目前正供應東西
  • deviceDoorOpen : <device(s)>開門目前開著,請關閉視窗,然後再試一次。
  • deviceHandleClosed : 這個帳號代碼在 <device(s)> 上已關閉,請開啟應用程式,然後再試一次。
  • deviceJammingDetected : &lt;device(s)&gt;&lt;is/are&gt;卡住。
  • deviceLidOpen : 蓋上機蓋打開 <device(s)>,請關閉視窗,然後再試一次。
  • deviceNeedsRepair : &lt;device(s)&gt;&lt;need(s)&gt;例如裝置。請聯絡當地服務經銷商。
  • deviceNotDocked : 抱歉,看起來是 <device(s)><不是/錯誤>在座架充電請將<他/電池>插入座架然後再試一次。
  • deviceNotFound : &lt;device(s)&gt;<is/are>無法使用。建議您設定<it/them>再次向上滑動。
  • deviceNotMounted : 抱歉,看起來是 <device(s)>就無法分享,因為<他/他們><is/are>未掛載。
  • deviceNotReady : &lt;device(s)&gt;<is/are>尚未準備就緒。
  • deviceStuck : &lt;device(s)&gt;&lt;is/are&gt;所以如果無法解決,請助你一臂之力
  • deviceTampered : <裝置>&lt;has/have&gt;可能遭竄改的內容
  • deviceThermalShutdown : 抱歉,看起來是 <device(s)>溫度過高或過低,
  • directResponseOnlyUnreachable : &lt;device(s)&gt;<不會/錯誤>支援遙控器
  • disarmFailure : &lt;device(s)&gt;無法修復的威脅
  • discreteOnlyOpenClose : 很抱歉,<裝置>只能完全開啟或完全關閉
  • dispenseAmountAboveLimit : &lt;device(s)&gt;因此無法大量發放
  • dispenseAmountBelowLimit : &lt;device(s)&gt;這些市場的量 無法獲得這麼小的預測
  • dispenseAmountRemainingExceeded : &lt;device(s)&gt;沒有足夠的<ppense item>。
  • dispenseFractionalAmountNotSupported : &lt;device(s)&gt;無法分配比例的 <dispense item>
  • dispenseFractionalUnitNotSupported : &lt;device(s)&gt;不支援該單位的 <dispense item> 分數。
  • dispenseUnitNotSupported : &lt;device(s)&gt;這個單位不支援 <dispense item>。
  • doorClosedTooLong : 距離上門已有一段時間 <device(s)>請打開門,確認裡面有東西,然後再試一次。
  • emergencyHeatOn : &lt;device(s)&gt;&lt;is/are&gt;啟動緊急熱源,<it/這些裝置>就必須手動調整。
  • faultyBattery : <裝置>&lt;has/have&gt;<電池/電池故障>。
  • floorUnreachable : &lt;device(s)&gt;無法連線至該房間。請<it/m>至正確樓層,然後再試一次。
  • functionNotSupported : 事實上,<裝置><不會/錯誤>支援該功能
  • genericDispenseNotSupported : 我必須知道你想供應什麼。請使用品名再試一次。
  • hardError : 很抱歉,發生錯誤,我現在無法控制你的住宅裝置
  • hardError : 很抱歉,發生錯誤,我現在無法控制你的住宅裝置
  • inAutoMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為自動模式如要調整溫度,請切換至 <it/them>改成不同模式
  • inAwayMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為外出模式如要控制溫度控制器,請使用手機、平板電腦或電腦上的 Nest 應用程式,手動將溫度控制器切換成在家模式。
  • inDryMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為乾燥模式如要調整溫度,請切換至 <it/them>改成不同模式
  • inEcoMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為節能模式如要調整溫度,請切換至 <it/them>改成不同模式
  • inFanOnlyMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為送風模式如要調整溫度,請切換至 <it/them>改成不同模式
  • inHeatOrCool : &lt;device(s)&gt;<is/are>目前未設為暖氣/冷氣模式
  • inHumidifierMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為加濕器模式如要調整溫度,請切換至 <it/them>改成不同模式
  • inOffMode : &lt;device(s)&gt;&lt;is/are&gt;目前處於關閉狀態。如要調整溫度,請切換至 <it/them>改成其他模式
  • inPurifierMode : &lt;device(s)&gt;&lt;is/are&gt;目前設為淨化模式如要調整溫度,請切換至 <it/them>改成不同模式
  • inSleepMode : &lt;device(s)&gt;&lt;is/are&gt;處於睡眠模式。請稍後再試。
  • inSoftwareUpdate : <裝置>&lt;is/are&gt;已經在軟體更新中
  • lockFailure : &lt;device(s)&gt;無法鎖定。
  • lockedState : &lt;device(s)&gt;&lt;is/are&gt;目前鎖定狀態
  • lockedToRange : 這個溫度不在 <device(s)> 的鎖定範圍內。
  • lowBattery : <裝置>&lt;has/have&gt;電量不足。
  • maxSettingReached : &lt;device(s)&gt;&lt;is/are&gt;設為最高設定
  • maxSpeedReached : &lt;device(s)&gt;&lt;is/are&gt;設為最高速度
  • minSettingReached : &lt;device(s)&gt;&lt;is/are&gt;已設為最低設定
  • minSpeedReached : &lt;device(s)&gt;&lt;is/are&gt;已設為最低速度
  • monitoringServiceConnectionLost : &lt;device(s)&gt;&lt;has/have&gt;失去<他們的<ph type="x-smartling-void-element"><br></ph>連線至監控服務
  • needsAttachment : 抱歉,看起來是 <device(s)>&lt;is/are&gt;缺少必要的附件請更換後再試一次
  • needsBin : 抱歉,看起來是 <device(s)>&lt;is/are&gt;缺少特徵分塊請更換後再試一次
  • needsPads : &lt;device(s)&gt;&lt;need(s)&gt;新墊子
  • needsSoftwareUpdate : <裝置>&lt;need(s)&gt;軟體更新
  • needsWater : &lt;device(s)&gt;&lt;need(s)&gt;。
  • networkProfileNotRecognized : 很抱歉,我不認得「<聯播網設定檔>」。
  • networkSpeedTestInProgress : 我已經在測試 <network><速度/速度>>。
  • noAvailableApp : 很抱歉,看起來 <應用程式名稱>無法使用。
  • noAvailableChannel : 抱歉,看起來像「<頻道名稱>」的頻道無法使用。
  • noChannelSubscription : 很抱歉,你並未訂閱「<channel name>」頻道掌握相關資訊
  • noTimerExists : 抱歉,你沒有在「<device(s)>」上設定任何計時器
  • notSupported : 很抱歉,<device(s)>不支援這個模式。
  • obstructionDetected : &lt;device(s)&gt;偵測到阻礙。
  • 離線 ,device 離線 : 抱歉,看起來是 <device(s)><is/are>目前無法使用。
  • onRequiresMode : 請指定你要開啟的模式。
  • passphraseIncorrect : 很抱歉,PIN 碼似乎不正確。
  • percentOutOfRange : 很抱歉,我無法設定<device(s)>降幅為 <percent>。
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : 我未打開 <device(s)>因為偵測到雨水
  • rangeTooClose : 與<裝置>的冷氣範圍距離太近,請選取溫度範圍較遠的溫度。
  • relinkRequired : 很抱歉,你的帳戶似乎發生錯誤。請透過 Google Home 或 Google 助理應用程式重新連結 <device(s)>。
  • remoteSetDisabled :
    • 選用參數 errorCodeReason
    • currentlyArmed - 很抱歉,因為安全機制已啟動,你必須使用 <device(s)>或應用程式進行變更。
    • remoteUnlockNotAllowed - 很抱歉,我無法解鎖 <device(s)>遠端檢查。
    • remoteControlOff - 這個動作目前已停用。請為 <device(s)> 啟用遙控器然後再試一次。
    • childSafetyModeActive - 已為 <device(s)> 執行這項操作當兒童安全模式啟用時。
  • roomsOnDifferentFloors : &lt;device(s)&gt;無法瀏覽這些房間,因為房間位於不同樓層。
  • safetyShutOff : &lt;device(s)&gt;&lt;is/are&gt;切換至安全關機模式,因此<it/他們>必須手動調整。
  • sceneCannotBeApplied : 很抱歉,<裝置>無法套用。
  • securityRestriction : &lt;device(s)&gt;&lt;has/have&gt;安全限制。
  • softwareUpdateNotAvailable : 很抱歉,<device(s)>沒有可用的軟體更新。
  • startRequiresTime : 你必須先告訴我要跑步多久的時間,才能進行這項動作。
  • stillCoolingDown : &lt;device(s)&gt;&lt;is/are&gt;等待冷卻。
  • stillWarmingUp : &lt;device(s)&gt;&lt;is/are&gt;仍在準備中
  • streamUnavailable : 很抱歉,「<device(s)>」上似乎無法串流播放。
  • streamUnplayable : 很抱歉,我無法播放「<device(s)>」的串流掌握相關資訊
  • tankEmpty : &lt;device(s)&gt;&lt;has/have&gt;「空水槽/空坦克>」。請填寫<it/them>然後再試一次。
  • targetAlreadyReached : 抱歉,這已經是目前溫度了。
  • timerValueOutOfRange : &lt;device(s)&gt;該期間無法設定該層級。
  • tooManyFailedAttempts : 很抱歉,嘗試失敗次數過多,請前往裝置的應用程式完成這項操作。
  • transientError : 很抱歉,控制「<device(s)>」時發生錯誤。請再試一次。
  • turnedOff ,裝置已關閉 : &lt;device(s)&gt;&lt;is/are&gt;。
  • unableToLocateDevice : 我找不到 <device(s)>,
  • unknownFoodPreset : &lt;device(s)&gt;系統不支援這種飲食預設動作
  • unlockFailure : &lt;device(s)&gt;無法解鎖。
  • unpausableState : &lt;device(s)&gt;目前無法暫停。
  • userCancelled : 確定
  • valueOutOfRange : &lt;device(s)&gt;無法設為這個溫度。

例外狀況

如果某個問題是與某個應用程式相關的問題或快訊, 指令指令可能會成功或失敗。

如果指令執行成功 (狀態 =「成功」),請回報例外狀況 使用 StatusReport 特徵 (適用於目標以外的裝置)、 或傳回適當的 exceptionCode (適用於目標裝置)。

舉例來說,如果乾衣機 Lint 螢幕已滿,使用者仍可啟動 但最好提醒他們這個狀態同樣地, 裝置電力不足,並非空無一物,但你仍可執行一項指令 但應告知裝置電量過低。

如果指令因例外狀況而失敗,狀態應為「EXCEPTIONS」 並使用 StatusReport 特徵回報例外狀況。

與目標裝置相關的非封鎖例外狀況 (成功)

以鎖門為例:

前門門電池電力不足,正在鎖上前門

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

透過 StatusReport 處理其他裝置的非封鎖例外狀況 (成功)

本例是啟動保全系統:好,啟動保全系統。前窗戶已開啟。

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isArmed": true,
        "currentArmLevel": "L2",
        "currentStatusReport": [{
          "blocking": false,
          "deviceTarget": "sensor_id1",
          "priority": 0,
          "statusCode": "deviceOpen"
        }]
      }
    }]
  }
}

使用 StatusReport 封鎖另一部裝置的例外狀況

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "on": true,
        "online": true,
        "status": "EXCEPTIONS",
        "currentStatusReport": [{
            "blocking": true,
            "deviceTarget": "device-id-1",
            "priority": 0,
            "statusCode": "lowBattery"
          },
          {
            "blocking": true,
            "deviceTarget": "front_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          },
          {
            "blocking": true,
            "deviceTarget": "back_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          }
        ]
      }
    }
  }
}

例外清單

以下例外狀況會在裝置上產生相關聯的 TTS。

  • bagFull : &lt;device(s)&gt;&lt;has/have&gt;<一件全套/滿件行李>。請留空 <it/them>然後再試一次。
  • binFull : &lt;device(s)&gt;&lt;has/have&gt;<a full bin/full bins>。
  • carbonMonoxideDetected : 系統偵測到<住家名稱>中有一氧化碳。
  • deviceAtExtremeTemperature : <裝置>&lt;is/are&gt;在極端溫度/極端溫度的情況下
  • deviceJammingDetected : &lt;device(s)&gt;&lt;is/are&gt;卡住。
  • deviceMoved : &lt;device(s)&gt;&lt;was/were&gt;已移動。
  • deviceOpen : <裝置>&lt;is/are&gt;開啟。
  • deviceTampered : <裝置>&lt;has/have&gt;可能遭竄改的內容
  • deviceUnplugged : <裝置>&lt;is/are&gt;未接上電源。
  • floorUnreachable : &lt;device(s)&gt;無法連線至該房間。請<it/m>至正確樓層,然後再試一次。
  • hardwareFailure : <裝置>&lt;has/have&gt;硬體問題
  • inSoftwareUpdate : <裝置>&lt;is/are&gt;已經在軟體更新中
  • isBypassed : &lt;device(s)&gt;&lt;is/are&gt;遭到規避的攻擊
  • lowBattery : <裝置>&lt;has/have&gt;電量不足。
  • motionDetected : <裝置>&lt;detect(s)&gt;動作。
  • needsPads : &lt;device(s)&gt;&lt;need(s)&gt;新墊子
  • needsSoftwareUpdate : <裝置>&lt;need(s)&gt;軟體更新
  • needsWater : &lt;device(s)&gt;&lt;need(s)&gt;。
  • networkJammingDetected : 連上<裝置>的家用網路連線無法正常運作
  • noIssuesReported : &lt;device(s)&gt;沒有任何問題。
  • roomsOnDifferentFloors : &lt;device(s)&gt;無法瀏覽這些房間,因為房間位於不同樓層。
  • runCycleFinished : &lt;device(s)&gt;&lt;has/have&gt;而已完全停止執行
  • securityRestriction : &lt;device(s)&gt;&lt;has/have&gt;安全限制。
  • smokeDetected : 系統在<住家名稱>偵測到煙霧。
  • tankEmpty : &lt;device(s)&gt;&lt;has/have&gt;「空水槽/空坦克>」。請填寫<it/them>然後再試一次。
  • usingCellularBackup : <裝置>&lt;is/are&gt;。
  • waterLeakDetected : <裝置>&lt;detect(s)&gt;漏水問題