Google Home デベロッパー センターにようこそ。スマートホーム アクションの開発方法を学ぶことができます。注: アクションの作成は、引き続き Actions Console で行います。

エラーと例外

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このドキュメントでは、スマートホーム デバイスの正式にサポートされているエラーと例外について説明します。インテント エラーや実装済みの場合は、通知でこれらのエラーコードと例外コードを使用してください。これにより、Google コマンドが特定のコマンドやデバイスの状態に関連する問題をエンドユーザーに警告します。レスポンスに不適切な形式や errorCode が含まれていると、Google アシスタントは一般的なエラー メッセージ(例: 「現在、デバイスはご利用いただけません」など)を表示します。

エラー

問題で実行リクエストまたはクエリ リクエストが失敗した場合は、エラーコードが返されます。たとえば、ドアのロックが故障してロックまたはロック解除ができない場合、この状態に関するエラーがユーザーに返されます。

エラーコードは、デバイスレベルまたはグローバル レベルでアタッチできます。たとえば、ユーザーが 1 つのプロバイダから多くのライトを持っていて、ハブによって制御されている場合、ユーザーがすべてのライトをオフにするよう要求すると、プロバイダは、1 つのライトがオフラインの場合はデバイスレベルのエラーを返し、ハブ全体がオフラインでライトを制御できない場合はグローバル レベルのエラーを返します。すべてのデバイスがオフラインの場合、グローバル レベルとデバイスレベルのエラーの間に違いはありません。デバイスがオフラインの場合は、deviceOffline エラーコードを返しても、reportState{"online": false} の状態を報告する必要があります。

概要は次のとおりです。

  • グローバル レベルのエラー: レスポンス内のすべてのデバイスに同じエラーがあります
  • ローカルレベルのエラー: 混合レスポンスとエラーおよび成功例

グローバル レベルのエラー

次の 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"
      }
    }
  }
}

EXECUTE レスポンス

次の JSON スニペットは、EXECUTE レスポンスでデバイスレベルのエラーを返す方法を示しています。

{
  "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 : <デバイス> は <期間> までしか設定できません
  • actionNotAvailable : 現在、その操作を行うことはできません。
  • actionUnavailableRunning : <device> が現在実行中であるため、変更できません。
  • moreArmed : <デバイス> はすでに監視中です。
  • AtAtMax : <デバイス> <is/are> はすでに最高温度に設定されています。
  • AtAtMin : <デバイス> <is/are> は最低温度ですでに設定されています。
  • AlreadyClosed : <デバイス> <is/are> はクローズ済みです。
  • すでに解除されています : <デバイス> は解除済みです。
  • notdock : <デバイス> はすでに固定されています。
  • notInState : <device(s)> はすでにこの状態です。
  • locked : <device>(s)> はすでにロックされています。
  • offOff: <device(s)> がオフの状態です
  • AlreadyOn : <device>(s)> はすでに有効です。
  • openOpen: <device>(s)> はすでに開かれています。
  • すでに一時停止しています : <デバイス> <is/are> はすでに一時停止しています。
  • すでに開始されています : <デバイス> <is/are> はすでに開始されています。
  • すでに停止しています : <デバイス> はすでに停止しています。
  • SIM フリー : <デバイス> はすでに解放されています。
  • ambiguousZoneName : <device(s)> で特定できるゾーンを特定できません。固有の名前をその場所に設定していることを確認してから、もう一度試してください。
  • amountAboveLimit : <デバイス> がサポートできる内容を超えています。
  • appLaunchFailed : 申し訳ありませんが、<デバイス> で <アプリ名> を起動できませんでした。
  • armFailure : <device(s)> による監視を開始できませんでした。
  • armLevelNeeded : どのデバイスを <デバイス> に設定するかがわかりません。「<デバイス> を <低いセキュリティ> に設定して」または「<デバイス> を <高いセキュリティ> に設定して」と話しかけてみてください。
  • authFailure : <デバイス> に接続できないようです。アプリを確認して、<デバイス / デバイス> がセットアップ済みであることを確認してください。
  • bagFull : <デバイス> <バッグ / フルバッグ> <バッグ / フルバッグ <>> を空にしてから、もう一度試してください。
  • underMinimumLightEffectsDuration : 最小継続時間である 5 分未満です。 もう一度お試しください。
  • underMinimumTimerDuration : <device> を短時間設定することはできません。もう一度お試しください。
  • binFull : <device(s)> <has/have> <a bin/full bin>>。
  • cancelArmingRestricted : 申し訳ございませんが、<デバイス> の監視をキャンセルできませんでした。
  • cancelTooLate : キャンセルが間に合いませんでした。代わりに <デバイス> またはアプリを使用してください。
  • channelSwitchFailed : チャンネル <channel name> に切り替えられませんでした。しばらくしてからもう一度お試しください。
  • 充電器の問題 : 申し訳ありません。<デバイス> に <充電器の問題 / 充電器の問題> があるようです。
  • commandInsertFailed : <デバイス> のコマンドを処理できません。
  • deadBattery : <デバイス>> <バッテリー切れ / バッテリー切れ> です。
  • percentageOutOfRange : リクエストされた度数が <デバイス> の範囲外です。
  • deviceAlertNeedsAssistance : <デバイス> の<ph type="x-smartling-placeholder"></ph>がアクティブなアラートと<ニーズ>とともにおり、支援が必要です。
  • deviceAtExtremeTemperature : <デバイス> が <極端な温度 / 極端な温度> の <is/are>。
  • deviceBusy : <device(s)> は、すでになんらかの操作をしているようです。
  • deviceCharging : 申し訳ありません。
  • deviceClogged : 申し訳ありませんが、<device(s)> が詰まっているようです。
  • deviceCurrentlyDispensing : <device(s)> はすでに作動中です。
  • deviceDoorOpen : <デバイス> でドアが開いています。閉じてからもう一度お試しください。
  • deviceHandleClosed : <device(s)> でハンドルが閉じられています。開いてからもう一度お試しください。
  • deviceJammingDetected : <デバイス> が故障しています。
  • deviceLidOpen : <デバイス> のカバーが開いています。閉じてからもう一度お試しください。
  • deviceNeedsRepair : <デバイス> <修理が必要>。近くの販売店にお問い合わせください。
  • deviceNotDocked : すみません、<device(s)> はホルダーに入っていないようです。<it/them> にドッキングしてから、もう一度お試しください。
  • deviceNotFound : <device(s)> は使用できません。もう一度 <it/them> を設定してみることをおすすめします。
  • deviceNotMounted : 申し訳ありませんが、<device> がマウントされていないため <device> でそれを行えません。
  • deviceNotReady : <デバイス> <準備ができていない> 準備ができていない。
  • deviceStuck : <device>(s)> が動かなくなり、助けが必要です。
  • deviceTampered : <device(s)> が <has/have> 改ざんされています。
  • deviceThermalShutdown : 申し訳ありませんが、<device(s)> が極端な温度でシャットダウンしているようです。
  • directResponseOnlyUnreachable : <device(s)> でリモコンがサポートされていません。
  • disarmFailure : <device(s)> による監視を解除できませんでした。
  • disreteOnlyOpenClose : <デバイス> の開閉のみが可能です。
  • dispenseAmountAboveLimit : <device(s)> はそれほど大量に給餌できません。
  • dispenseAmountBelowLimit : <デバイス> はこのような少量の給餌ができません。
  • dispenseAmountRemainingExceeded : <device(s)> に十分な <dispense item> がありません。
  • DispenseFractionalAmountNotSupported : <device(s)> では <dispense item> の分数を入力できません。
  • dispenseFractionalUnitNotSupported : <device(s)> は、<dispense item> についてその単位の割合をサポートしていません。
  • dispenseUnitNotSupported : <device(s)> は、<dispense item> の単位をサポートしていません。
  • doorClosedTooLong : <デバイス> のドアが開いてからしばらく経っています。ドアを開けて中にものが入っていることを確認してから、もう一度試してください。
  • EmergencyHeatOn : <デバイス> は緊急ヒートモードになっているため、手動で調整する必要があります。
  • failyBattery : <device(s)> <has/have> <a 欠陥のあるバッテリー / バッテリーの不良>
  • floorUnreachable : <device(s)> はその部屋にアクセスできません。<it/them> を正しい階に移動し、もう一度試してください。
  • functionNotSupported : 不正解です。<device>(s)> はその機能をサポートしていません。
  • genericDispenseNotSupported : 提供するクーポンを教えてください。アイテムの名前を使用してもう一度お試しください。
  • hardError : エラーが発生したため、スマートホーム デバイスを操作できません。
  • hardError : エラーが発生したため、スマートホーム デバイスを操作できません。
  • inAutoMode : <device(s)> <is/are> は現在自動モードに設定されています。温度を変更するには、<it/them> を別モードに切り替えてください。
  • inAwayMode : <device(s)> <is/are> は現時点では外出モードに設定されています。サーモスタットを操作するには、スマートフォン、タブレット、またはパソコンの Nest アプリを使用して、手動で在宅モードに切り替える必要があります。
  • inDryMode : <device(s)> <is/are> は現時点では除湿モードに設定されています。温度を変更するには、<it/them> を別モードに切り替えてください。
  • inEcoMode : <device(s)> <is/are> は現在 eco モードに設定されています。温度を変更するには、<it/them> を別モードに切り替えてください。
  • inFanOnlyMode : <device(s)> <is/are> は現在、ファン専用モードに設定されています。温度を変更するには、<it/them> を別モードに切り替えてください。
  • inHeatOrCool : <デバイス> は暖房 / 冷房モードではありません。
  • inHumidifierMode : <device(s)> <is/are> は加湿モードになっています。温度を変更するには、<it/them> を別モードに切り替えてください。
  • inOffMode : <device(s)> <is/are> は現在オフになっています。温度を変更するには、<it/them> を別のモードに切り替える必要があります。
  • inPurifierMode : <device(s)> <is/are> は現在、空気清浄モードに設定されています。温度を変更するには、<it/them> を別モードに切り替えてください。
  • inSleepMode : <device(s)> <is/are> がスリープモードです。しばらくしてからもう一度お試しください。
  • inSoftwareUpdate : <デバイス> は現在ソフトウェア アップデートに含まれています。
  • lockFailure : <device(s)> をロックできませんでした。
  • lockState : <デバイス> は現在ロックされています。
  • lockToRange : その温度は <デバイス> のロック範囲外です。
  • LowBattery : <device(s)> <has/have> バッテリー残量が低下しています。
  • maxSettingReached : <デバイス> <is/are> はすでに最大の設定に設定されています。
  • maxSpeedReached : <デバイス> はすでに最高速度に設定されています。
  • minSettingReached : <デバイス> <is/are> はすでに最も低い設定になっています。
  • minSpeedReached : <device>(s)> は最低速度です。
  • monitoringServiceConnectionLost : <デバイス> がモニタリング サービスへの接続を失っています。
  • needAttachment : 申し訳ありませんが、<device>(s)> が必要な添付ファイルがないようです。取り付けてから、もう一度試してください。
  • needBin : 申し訳ありません。<device(s)> はゴミ箱に届いていないようです。取り付けてから、もう一度試してください。
  • needPads : <device(s)> <need(s)> 新しいパッド。
  • needSoftwareUpdate : <デバイス> <ニーズ> のソフトウェア アップデート。
  • needWater : <デバイス> <ニーズ> 水。
  • networkProfileNotRecognized : 申し訳ありませんが、<デバイス> で <ネットワーク プロファイル> を認識できませんでした。
  • networkSpeedTestInProgress : すでに <network> <speed/speeds>> をテストしています。
  • noAvailableApp : <アプリ名> は使用できないようです。
  • noAvailableChannel : すみません、チャンネル <channel name> が利用できないようです。
  • noChannelSubscription : 現在、チャンネル <channel name> をチャンネル登録していません。
  • noTimerExists : 申し訳ありません。<device>(s) にタイマーは設定されていません。
  • notSupported : 申し訳ございませんが、このモードは <デバイス> ではご利用いただけません。
  • obstructionDetected : <device(s)> が障害物を検出しました。
  • offline , deviceOffline : 申し訳ありませんが、<device> は現在ご利用いただけません。
  • onRequiresMode : 有効にするモードを指定してください。
  • パスフレーズが正しくありません : PIN が正しくないようです。
  • percentOutOfRange : 申し訳ありませんが、<device(s)> を <percent> に設定することはできません。
  • PIN 正しくない : (passphrase 不正解です)
  • rainDetected : 雨が検出されたため、<device(s)> を開けませんでした。
  • rangeTooClose : <device(s)> の暖房・冷房モードの範囲が近すぎます。もっと差がある温度を指定してください。
  • relinkRequired : お使いのアカウントでエラーが発生しました。Google Home アプリまたはアシスタント アプリで <デバイス> を再度リンクしてください。
  • remoteSetDisabled:
    • オプション パラメータ errorCodeReason
    • currentlyArmed - セキュリティシステムにより監視中です。変更には <デバイス> またはアプリを使用してください。
    • remoteUnlockNotAllowed - <デバイス> をリモートでロック解除できません。
    • remoteControlOff - その操作は現在無効になっています。<デバイス> のリモコンを有効にしてから、もう一度お試しください。
    • childSafetyModeActive - 子どもの安全モードが有効になっている間、<デバイス> に対してこの操作は無効です。
  • roomOnDifferentFloors : <device(s)> は別の階にあるため、それらの部屋にアクセスできません。
  • SafetyShutOff : <<デバイス>> が安全遮断モードになっているため、<it/they> は手動で調整する必要があります。
  • sceneCannotBeApplied : <デバイス> は適用できません。
  • securityRestriction : <デバイス> にセキュリティ制限があります。
  • softwareUpdateNotAvailable : <device(s)> で利用できるソフトウェア アップデートはありません。
  • startRequiresTime : それを行うには、<device>(s) を実行する時間を指定してください。
  • tillCoolingDown : <device(s)> <is/are> はまだ冷却中です。
  • tillWarmingUp : <デバイス> はウォームアップ中です。
  • streamUnavailable : 現在、<device(s)> からのストリームが利用できません。
  • streamUnplayable : 現在 <デバイス> からのストリームを再生できません。
  • tankEmpty : <device>(s)> <has/have> <anempty tank/empty tanks>。<it/them> に記入して、もう一度試してください。
  • targetAlreadyReached : すみません、すでに現在の温度になっているようです。
  • timeValueOutOfRange : <device(s)> にこの期間を設定することはできません。
  • manyManyFailedAttempts : 試行回数が上限を超えました。操作を完了するには、デバイスのアプリにアクセスしてください。
  • transientError : 申し訳ありませんが、<device(s)> の制御中にエラーが発生しました。もう一度お試しください。
  • offOff , deviceTurnedOff : <device(s)> が <is/are> オフになりました。
  • notToLocateDevice : <デバイス> が見つかりませんでした。
  • UnknownFoodPreset : <device(s)> はそのフード プリセットをサポートしていません。
  • ロック解除の失敗 : <デバイス> をロック解除できませんでした。
  • unpaavailableState : <device(s)> は現在一時停止できません。
  • userCancelled : OK
  • valueOutOfRange : <device(s)> をその温度に設定することはできません。

例外

コマンドに関連付けられている問題やアラートがある場合は、例外を返す必要があります。コマンドは成功または失敗する可能性があります。

コマンドが成功した場合(ステータス = "SUCCESS")、StatusReport トレイトを使用(ターゲット以外のデバイスの場合)するか、適切な exceptionCode(ターゲット デバイスの場合)を返すことで例外を報告します。

たとえば、乾燥機の lint 画面がいっぱいになってもユーザーは乾燥機を起動できますが、この状態を警告できます。同様に、デバイスが空でないバッテリーが残っていても、コマンドを実行することはできますが、デバイスのバッテリー残量低下を通知する必要があります。

例外によりコマンドが失敗した場合、ステータスは「EXCEPTIONS」である必要があります。例外は StatusReport トレイトを使用して報告する必要があります。

ターゲット デバイスに関する非ブロック例外(SUCCESS)

次の例は、ドアのロックです。

玄関のドアのバッテリー残量が少なくなっています。玄関のロック。

{
  "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 を使用して別のデバイスに関する非ブロック例外(SUCCESS)

この例では、セキュリティ システムの監視を行います。「セキュリティ システムの監視を行います。正面の窓が開いています。

{
  "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 : <デバイス> <バッグ / フルバッグ> <バッグ / フルバッグ <>> を空にしてから、もう一度試してください。
  • binFull : <device(s)> <has/have> <a bin/full bin>>。
  • carMonoxideDetected : 一酸化炭素が <家の名前> で検出されました。
  • deviceAtExtremeTemperature : <デバイス> が <極端な温度 / 極端な温度> の <is/are>。
  • deviceJammingDetected : <デバイス> が故障しています。
  • deviceMoved : <device(s)> <was/were> を移動しました。
  • deviceOpen : <デバイス> が開いている>
  • deviceTampered : <device(s)> が <has/have> 改ざんされています。
  • deviceUn Plugged : <device(s)> <is/are> プラグが抜かれています。
  • floorUnreachable : <device(s)> はその部屋にアクセスできません。<it/them> を正しい階に移動し、もう一度試してください。
  • hardwareFailure : <デバイス> <ハードウェア> に<問題がある>。
  • inSoftwareUpdate : <デバイス> は現在ソフトウェア アップデートに含まれています。
  • isBypassed : <device(s)> <is/are> は現在バイパスされています。
  • LowBattery : <device(s)> <has/have> バッテリー残量が低下しています。
  • motionDetected : <デバイス> <検出(>)> モーション。
  • needPads : <device(s)> <need(s)> 新しいパッド。
  • needSoftwareUpdate : <デバイス> <ニーズ> のソフトウェア アップデート。
  • needWater : <デバイス> <ニーズ> 水。
  • networkJammingDetected : <デバイス> へのホーム ネットワーク接続が正常に機能していません。
  • noIssuesReported : <device(s)> で問題は報告されませんでした。
  • roomOnDifferentFloors : <device(s)> は別の階にあるため、それらの部屋にアクセスできません。
  • runCycleFinish : <デバイス> は実行を終了しました。>
  • securityRestriction : <デバイス> にセキュリティ制限があります。
  • smokeDetected : <家の名前> で煙が検出されました。
  • tankEmpty : <device>(s)> <has/have> <anempty tank/empty tanks>。<it/them> に記入して、もう一度試してください。
  • CellularBackup を使用 : <デバイス> は遠隔バックアップを使用しています。
  • waterLeakDetected : <デバイス> <検出> 水漏れ。