ข้อผิดพลาดและข้อยกเว้น

เอกสารนี้แสดงข้อผิดพลาดและข้อยกเว้นที่รองรับอย่างเป็นทางการสำหรับอุปกรณ์สมาร์ทโฮม โปรดใช้รหัสข้อผิดพลาดและรหัสข้อยกเว้นที่ระบุเหล่านี้ในคำตอบของ Intent หรือในการแจ้งเตือน หากคุณได้ติดตั้งใช้งานแล้ว เพื่อให้ Google Assistant แจ้งเตือนผู้ใช้ปลายทางถึงปัญหา ที่เกี่ยวข้องกับคำสั่งหรือสถานะอุปกรณ์ที่ระบุ หากการตอบกลับมีการจัดรูปแบบไม่ถูกต้อง หรือมี errorCode Google Assistant จะแสดงข้อความแสดงข้อผิดพลาดทั่วไปแก่ผู้ใช้ เช่น "ขออภัย device ยังไม่พร้อมให้บริการในขณะนี้"

ข้อผิดพลาด

คุณควรแสดงรหัสข้อผิดพลาดเมื่อปัญหาทำให้คำขอ execute หรือ query ล้มเหลว เช่น หากกลอนประตูติดขัดและล็อกหรือปลดล็อกไม่ได้ ระบบควรแสดงข้อผิดพลาดเกี่ยวกับสถานะนี้แก่ผู้ใช้

คุณแนบรหัสข้อผิดพลาดได้ที่ระดับอุปกรณ์หรือระดับส่วนกลาง ตัวอย่างเช่น หากผู้ใช้มีหลอดไฟหลายดวงจากผู้ให้บริการรายหนึ่งและควบคุมผ่านฮับ เมื่อผู้ใช้ขอให้ปิดไฟทั้งหมด ผู้ให้บริการอาจแสดงข้อผิดพลาดระดับอุปกรณ์หากหลอดไฟดวงใดดวงหนึ่งออฟไลน์ หรือข้อผิดพลาดระดับโลกหากฮับทั้งหมดออฟไลน์และควบคุมหลอดไฟไม่ได้ หากอุปกรณ์ทั้งหมดออฟไลน์ การใช้ข้อผิดพลาดระดับโลกหรือระดับอุปกรณ์จะไม่มีความแตกต่างกัน

โดยสรุป

  • ข้อผิดพลาดระดับโลก: อุปกรณ์ทั้งหมดในการตอบกลับมีข้อผิดพลาดเดียวกัน
  • ข้อผิดพลาดระดับท้องถิ่น: การตอบกลับแบบผสมที่มีกรณีข้อผิดพลาดและกรณีที่สำเร็จ

ข้อผิดพลาดระดับโลก

ข้อมูลโค้ด 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 : ฉันตั้งค่า <device(s)> ได้ไม่เกิน <time period>
  • actionNotAvailable : ขอโทษนะ ดูเหมือนตอนนี้จะทำแบบนั้นไม่ได้
  • actionUnavailableWhileRunning : ขณะนี้ <device(s)> กำลังทำงานอยู่ ฉันจึงเปลี่ยนแปลงอะไรไม่ได้
  • alreadyArmed : <device(s)> <is/are> already armed.
  • alreadyAtMax : <device(s)> ตั้งเป็นอุณหภูมิสูงสุดแล้ว
  • alreadyAtMin : <device(s)> ตั้งเป็นอุณหภูมิต่ำสุดแล้ว
  • alreadyClosed : <device(s)> <is/are> already closed.
  • alreadyDisarmed : <device(s)> <is/are> already disarmed.
  • alreadyDocked : <device(s)> <is/are> already docked.
  • alreadyInState : <device(s)> <is/are> already in that state.
  • alreadyLocked : <device(s)> <is/are> already locked.
  • alreadyOff : <device(s)> <is/are> already off.
  • alreadyOn : <device(s)> <is/are> already on.
  • alreadyOpen : <device(s)> <is/are> already open.
  • alreadyPaused : <device(s)> <is/are> already paused.
  • alreadyStarted : <device(s)> <is/are> already started.
  • alreadyStopped : <device(s)> <is/are> already stopped.
  • alreadyUnlocked : <device(s)> <is/are> already unlocked.
  • ambiguousZoneName : ขอโทษด้วย <device(s)> ไม่รู้ว่าคุณหมายถึงโซนไหน โปรดตรวจสอบว่าโซนมีชื่อไม่ซ้ำกันและลองอีกครั้ง
  • amountAboveLimit : จำนวนดังกล่าวมากเกินกว่าที่ <device(s)> รองรับ
  • appLaunchFailed : ขออภัย เปิด <ชื่อแอป> ใน <อุปกรณ์> ไม่สำเร็จ
  • armFailure : เปิดระบบ <device(s)> ไม่ได้
  • armLevelNeeded : ไม่แน่ใจว่าจะให้ตั้งค่า <device(s)> เป็นระดับไหน ลองพูดว่า "ตั้งค่า <อุปกรณ์> เป็น <ความปลอดภัยต่ำ>" หรือ "ตั้งค่า <อุปกรณ์> เป็น <ความปลอดภัยสูง>"
  • authFailure : ดูเหมือนว่าฉันจะสื่อสารกับ <device(s)> ไม่ได้ ลองตรวจสอบแอปดูว่าตั้งค่า <device/devices> ไว้ครบถ้วนแล้ว
  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • belowMinimumLightEffectsDuration : สั้นกว่าระยะเวลาขั้นต่ำที่ 5 นาทีนะ โปรดลองอีกครั้ง
  • belowMinimumTimerDuration : ฉันตั้งเวลา <device(s)> ให้สั้นขนาดนั้นไม่ได้ โปรดลองอีกครั้ง
  • binFull : <อุปกรณ์> <มี/มี> <ถังขยะเต็ม/ถังขยะเต็ม>
  • cancelArmingRestricted : ขออภัย ฉันยกเลิกการติดอาวุธ <device(s)> ไม่ได้
  • cancelTooLate : ขอโทษที ยกเลิกไม่ทันแล้ว ใช้ <device(s)> หรือแอปแทน
  • channelSwitchFailed : ขอโทษด้วย เปลี่ยนเป็นช่อง <ชื่อช่อง> ไม่ได้ ไว้ค่อยลองอีกทีนะ
  • chargerIssue : ขอโทษด้วย ดูเหมือน <device(s)> <has/have> <a charger issue/charger issues>
  • commandInsertFailed : ประมวลผลคำสั่งสำหรับ <device(s)> ไม่ได้
  • deadBattery : <device(s)> <has/have> <a dead battery/dead batteries>.
  • degreesOutOfRange : อุณหภูมิที่ขออยู่นอกช่วงสำหรับ <อุปกรณ์>
  • deviceAlertNeedsAssistance : <device(s)> <has/have> an active alert and <need(s)> your assistance.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceBusy : ขอโทษด้วย ดูเหมือน <device(s)> กำลังทำบางอย่างอยู่ตอนนี้
  • deviceCharging : ขอโทษนะ ดูเหมือนว่า <device(s)> จะทำแบบนั้นไม่ได้เพราะกำลังชาร์จอยู่
  • deviceClogged : ขอโทษด้วย ดูเหมือน <device(s)> จะอุดตันนะ
  • deviceCurrentlyDispensing : <device(s)> กำลังจ่ายอาหารอยู่ตอนนี้
  • deviceDoorOpen : ประตูเปิดอยู่บน <device(s)> โปรดปิดประตูแล้วลองอีกครั้ง
  • deviceHandleClosed : ปิดแฮนเดิลใน <device(s)> แล้ว โปรดเปิดและลองอีกครั้ง
  • deviceJammingDetected : อุปกรณ์ <is/are> ถูกรบกวน
  • deviceLidOpen : ฝาเปิดอยู่บน <device(s)> โปรดปิดฝาและลองอีกครั้ง
  • deviceNeedsRepair : <device(s)> <need(s)> to be repaired. โปรดติดต่อตัวแทนจำหน่ายที่ให้บริการในพื้นที่
  • deviceNotDocked : ขอโทษนะ ดูเหมือนว่า <device(s)> <isn't/aren't> ไม่ได้ชาร์จอยู่ โปรดเสียบปลั๊ก <it/them> แล้วลองอีกครั้ง
  • deviceNotFound : <device(s)> <is/are>n't available. คุณอาจต้องลองตั้งค่าอีกครั้ง
  • deviceNotMounted : ขอโทษนะ ดูเหมือนว่า <device(s)> จะทำแบบนั้นไม่ได้เพราะยังไม่ได้ติดตั้ง
  • deviceNotReady : <device(s)> <is/are>n't ready.
  • deviceStuck : <device(s)> ค้างและต้องการความช่วยเหลือจากคุณ
  • deviceTampered : มีการดัดแปลง <device(s)>
  • deviceThermalShutdown : ขอโทษด้วย ดูเหมือนว่า <device(s)> จะปิดลงเนื่องจากอุณหภูมิสูงหรือต่ำเกินไป
  • directResponseOnlyUnreachable : <device(s)> <doesn't/don't> support remote control.
  • disarmFailure : ปลดอาวุธ <device(s)> ไม่ได้
  • discreteOnlyOpenClose : ขอโทษนะ <device(s)> เปิดหรือปิดจนสุดได้เท่านั้น
  • dispenseAmountAboveLimit : <device(s)> จ่ายอาหารเยอะขนาดนั้นไม่ได้
  • dispenseAmountBelowLimit : <device(s)> จ่ายอาหารน้อยขนาดนั้นไม่ได้
  • dispenseAmountRemainingExceeded : <device(s)> มี <dispense item> ไม่เพียงพอที่จะทำเช่นนั้น
  • dispenseFractionalAmountNotSupported : <device(s)> can't dispense fractions of <dispense item>.
  • dispenseFractionalUnitNotSupported : <device(s)> ไม่รองรับเศษส่วนของหน่วยนั้นสำหรับ <dispense item>
  • dispenseUnitNotSupported : <device(s)> ไม่รองรับหน่วยดังกล่าวสำหรับ <dispense item>
  • doorClosedTooLong : ประตูของ <device(s)> เปิดไว้สักพักหนึ่งแล้ว โปรดเปิดประตู ดูให้แน่ใจว่ามีของอยู่ในนั้นแล้วลองอีกครั้ง
  • emergencyHeatOn : <device(s)> <is/are> in Emergency Heat Mode, so <it/they>'ll have to be adjusted by hand.
  • faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>.
  • floorUnreachable : <device(s)> ไปห้องนั้นไม่ได้ โปรดย้าย <it/them> ไปยังชั้นที่ถูกต้องแล้วลองอีกครั้ง
  • functionNotSupported : จริงๆ แล้ว <device(s)> <doesn't/don't> รองรับฟังก์ชันนั้น
  • genericDispenseNotSupported : ฉันจำเป็นต้องทราบว่าคุณต้องการจ่ายอะไร โปรดลองอีกครั้งด้วยชื่อของของที่จะจ่าย
  • hardError : ขอโทษนะ เกิดข้อผิดพลาด เลยควบคุมอุปกรณ์ในบ้านไม่ได้
  • hardError : ขอโทษนะ เกิดข้อผิดพลาด เลยควบคุมอุปกรณ์ในบ้านไม่ได้
  • inAutoMode : ขณะนี้มีการตั้งค่า <device(s)> เป็นโหมดอัตโนมัติ ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inAwayMode : ขณะนี้<device(s)> <is/are> ตั้งค่าเป็นโหมดอยู่นอกบ้าน หากต้องการควบคุมตัวควบคุมอุณหภูมิ คุณจะต้องสลับเป็นโหมด Home เองโดยใช้แอป Nest ในโทรศัพท์ แท็บเล็ต หรือคอมพิวเตอร์
  • inDryMode : ขณะนี้<device(s)> <is/are> ตั้งค่าเป็นโหมดถนอมผ้า ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inEcoMode : ขณะนี้<device(s)> <is/are> ตั้งค่าเป็นโหมดประหยัดพลังงาน ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inFanOnlyMode : ขณะนี้มีการตั้งค่า <device(s)> เป็นโหมดพัดลมเท่านั้น ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
  • inHumidifierMode : <device(s)> <is/are> currently set to humidifier mode. ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inOffMode : ตอนนี้ <อุปกรณ์> ปิดอยู่ ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inPurifierMode : ขณะนี้ <device(s)> ตั้งค่าเป็นโหมดฟอกอากาศ ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
  • inSleepMode : <device(s)> <is/are> in sleep mode. โปรดลองอีกครั้งในภายหลัง
  • inSoftwareUpdate : ขณะนี้ <device(s)> <is/are> อยู่ในการอัปเดตซอฟต์แวร์
  • lockFailure : ล็อก <device(s)> ไม่ได้
  • lockedState : ขณะนี้ <device(s)> ล็อกอยู่
  • lockedToRange : อุณหภูมินั้นอยู่นอกช่วงที่ล็อกไว้ใน <device(s)>
  • lowBattery : <device(s)> <has/have> low battery.
  • maxSettingReached : <device(s)> <is/are> already set to the highest setting.
  • maxSpeedReached : <device(s)> <is/are> already set to the maximum speed.
  • minSettingReached : <device(s)> <is/are> already set to the lowest setting.
  • minSpeedReached : <device(s)> <is/are> already set to the minimum speed.
  • monitoringServiceConnectionLost : <device(s)> <has/have> lost <its/their> connection to the monitoring service.
  • needsAttachment : ขอโทษที ดูเหมือนว่าชิ้นส่วนที่ต้องต่อกับ <device(s)> หายไป โปรดเปลี่ยนใหม่แล้วลองอีกครั้ง
  • needsBin : ขอโทษที ดูเหมือนว่าถังเก็บฝุ่นใน <device(s)> หายไป โปรดเปลี่ยนใหม่แล้วลองอีกครั้ง
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkProfileNotRecognized : ขอโทษนะ ฉันไม่รู้จัก "<network profile>" ใน <device(s)>
  • networkSpeedTestInProgress : ฉันกำลังทดสอบ <network> <speed/speeds> อยู่
  • noAvailableApp : ขออภัย ดูเหมือนว่า <ชื่อแอป> จะไม่พร้อมใช้งาน
  • noAvailableChannel : ขอโทษนะ ดูเหมือนว่าช่อง <ชื่อช่อง> ไม่พร้อมให้บริการ
  • noChannelSubscription : ขอโทษนะ ตอนนี้คุณยังไม่ได้สมัครสมาชิกช่อง <ชื่อช่อง>
  • noTimerExists : ขอโทษที ดูเหมือนไม่ได้ตั้งตัวจับเวลาไว้ที่ <device(s)> นะ
  • notSupported : ขออภัย โหมดดังกล่าวไม่พร้อมใช้งานสำหรับ <device(s)>
  • obstructionDetected : <device(s)> detected an obstruction.
  • ออฟไลน์ , deviceOffline : ขอโทษนะ ดูเหมือนว่า <device(s)> จะไม่พร้อมใช้งานในตอนนี้
  • onRequiresMode : โปรดระบุโหมดที่ต้องการเปิด
  • passphraseIncorrect : ขอโทษนะ ดูเหมือนว่ารหัส PIN จะไม่ถูกต้อง
  • percentOutOfRange : ขออภัย ฉันตั้งค่า <อุปกรณ์> เป็น <เปอร์เซ็นต์> ไม่ได้
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : ฉันไม่ได้เปิด <device(s)> เพราะตรวจพบฝนตก
  • rangeTooClose : ช่วงที่เลือกอยู่ใกล้ช่วงทำความร้อน • ทำความเย็นของ <device(s)> มากเกินไป เลือกช่วงของอุณหภูมิที่อยู่ห่างจากช่วงทำความร้อน • ทำความเย็นมากกว่านี้
  • relinkRequired : ขอโทษด้วย ดูเหมือนจะเกิดข้อผิดพลาดกับบัญชีของคุณนะ โปรดใช้แอป Google Home หรือ Assistant เพื่อลิงก์ <device(s)> อีกครั้ง
  • remoteSetDisabled :
    • พารามิเตอร์ที่ไม่บังคับ errorCodeReason
    • currentlyArmed - ขอโทษด้วย ตอนนี้การรักษาความปลอดภัยเริ่มทำงานไปแล้ว ถ้าจะเปลี่ยนแปลง คุณต้องใช้ <device(s)> หรือแอป
    • remoteUnlockNotAllowed - ขอโทษนะ ฉันปลดล็อก <อุปกรณ์> จากระยะไกลไม่ได้
    • remoteControlOff - การดำเนินการนั้นปิดอยู่ โปรดเปิดใช้รีโมตคอนโทรลใน <device(s)> แล้วลองอีกครั้ง
    • childSafetyModeActive - การดำเนินการนั้นจะปิดไว้ขณะที่ <device(s)> เปิดโหมดความปลอดภัยสำหรับเด็ก
  • roomsOnDifferentFloors : <device(s)> เข้าถึงห้องพวกนั้นไม่ได้เพราะอยู่คนละชั้นกัน
  • safetyShutOff : <device(s)> <is/are> in Safety Shut-Off Mode, so <it/they>'ll have to be adjusted by hand.
  • sceneCannotBeApplied : ขออภัย ใช้ <device(s)> ไม่ได้
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • softwareUpdateNotAvailable : ขออภัย ขณะนี้ยังไม่มีการอัปเดตซอฟต์แวร์ใน <device(s)>
  • startRequiresTime : ถ้าจะทำแบบนั้น คุณต้องบอกว่าจะใช้ <device(s)> นานแค่ไหน
  • stillCoolingDown : <device(s)> <is/are> still cooling down.
  • stillWarmingUp : <device(s)> <is/are> still warming up.
  • streamUnavailable : ขอโทษนะ ดูเหมือนว่าตอนนี้จะสตรีมจาก <device(s)> ไม่ได้
  • streamUnplayable : ขอโทษด้วย ตอนนี้ยังเปิดสตรีมจาก <device(s)> ไม่ได้
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • targetAlreadyReached : ขอโทษที ดูเหมือนว่าจะเป็นอุณหภูมินั้นอยู่แล้ว
  • timerValueOutOfRange : ตั้งเวลา <อุปกรณ์> ตามระยะเวลาดังกล่าวไม่ได้
  • tooManyFailedAttempts : ขออภัย คุณพยายามไม่สำเร็จหลายครั้งเกินไป โปรดไปที่แอปของอุปกรณ์เพื่อดำเนินการต่อให้เสร็จ
  • transientError : ขออภัย เกิดข้อผิดพลาดบางอย่างในการควบคุม <device(s)> โปรดลองอีกครั้ง
  • turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
  • unableToLocateDevice : ฉันค้นหา <device(s)> ไม่พบ
  • unknownFoodPreset : <device(s)> ไม่รองรับการตั้งค่าอาหารล่วงหน้านั้น
  • unlockFailure : ปลดล็อก <device(s)> ไม่ได้
  • unpausableState : ตอนนี้หยุด <device(s)> ชั่วคราวไม่ได้
  • userCancelled : ok
  • valueOutOfRange : ตั้งค่า <device(s)> เป็นอุณหภูมินั้นไม่ได้

การรายงานสถานะออนไลน์และออฟไลน์

เมื่ออุปกรณ์ออฟไลน์ คุณควรรายงาน <code{"online": code="" dir="ltr" false}<="" translate="no"> ไปยัง รายงานสถานะ ภายใน 5 นาทีหลังจาก พฤติกรรมของอุปกรณ์ ในทางกลับกัน เมื่ออุปกรณ์กลับมาอยู่ในสถานะออนไลน์ คุณควรรายงาน <code{"online": code="" dir="ltr" translate="no" true}<=""> ไปยังรายงานสถานะภายใน 5 นาทีหลังจากพฤติกรรมของอุปกรณ์ เมื่อใดก็ตามที่อุปกรณ์กลับมาออนไลน์ พาร์ทเนอร์ควรรายงานสถานะปัจจุบันทั้งหมดของอุปกรณ์โดยใช้ reportStateAndNotification API ตัวอย่างนี้แสดงว่าlightประเภทอุปกรณ์ออนไลน์อยู่ และรายงาน สถานะอุปกรณ์ปัจจุบันทั้งหมด
"requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }

ข้อยกเว้น

คุณควรส่งคืนข้อยกเว้นเมื่อมีปัญหาหรือการแจ้งเตือนที่เชื่อมโยงกับ คำสั่ง คำสั่งอาจสำเร็จหรือไม่ก็ได้

หากคำสั่งสำเร็จ (status = "SUCCESS") ให้รายงานข้อยกเว้น โดยใช้ลักษณะ StatusReport (สำหรับอุปกรณ์อื่นๆ นอกเหนือจากเป้าหมาย) หรือโดยการแสดง exceptionCode ที่เหมาะสม (สำหรับอุปกรณ์เป้าหมาย)

เช่น หากตะแกรงดักฝุ่นของเครื่องอบผ้าเต็ม ผู้ใช้ยังคงเริ่มใช้เครื่องอบผ้าได้ แต่คุณอาจต้องการเตือนผู้ใช้เกี่ยวกับสถานะนี้ ในทำนองเดียวกัน เมื่อ อุปกรณ์มีแบตเตอรี่เหลือน้อยแต่ยังไม่หมด คุณยังคงเรียกใช้คำสั่งได้ แต่ควรแจ้งให้ผู้ใช้ทราบว่าแบตเตอรี่ของอุปกรณ์เหลือน้อย

หากคำสั่งล้มเหลวเนื่องจากข้อยกเว้น สถานะควรเป็น "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"
      }
    }]
  }
}

ข้อยกเว้นที่ไม่บล็อก (SUCCESS) เกี่ยวกับอุปกรณ์อื่นที่ใช้ 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 : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • binFull : <อุปกรณ์> <มี/มี> <ถังขยะเต็ม/ถังขยะเต็ม>
  • carbonMonoxideDetected : ตรวจพบคาร์บอนมอนอกไซด์ใน <ชื่อบ้าน>
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceJammingDetected : อุปกรณ์ <is/are> ถูกรบกวน
  • deviceMoved : <device(s)> <was/were> moved.
  • deviceOpen : <device(s)> <is/are> open.
  • deviceTampered : มีการดัดแปลง <device(s)>
  • deviceUnplugged : <device(s)> <is/are> unplugged.
  • floorUnreachable : <device(s)> ไปห้องนั้นไม่ได้ โปรดย้าย <it/them> ไปยังชั้นที่ถูกต้องแล้วลองอีกครั้ง
  • hardwareFailure : <device(s)> <has/have> a hardware problem.
  • inSoftwareUpdate : ขณะนี้ <device(s)> <is/are> อยู่ในการอัปเดตซอฟต์แวร์
  • isBypassed : ขณะนี้<device(s)> <is/are> ถูกข้าม
  • lowBattery : <device(s)> <has/have> low battery.
  • motionDetected : <device(s)> <detect(s)> motion.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkJammingDetected : ตอนนี้การเชื่อมต่อเครือข่ายในบ้านกับ <device(s)> มีปัญหา
  • noIssuesReported : <device(s)> รายงานว่าไม่มีปัญหา
  • roomsOnDifferentFloors : <device(s)> เข้าถึงห้องพวกนั้นไม่ได้เพราะอยู่คนละชั้นกัน
  • runCycleFinished : <device(s)> <has/have> finished running.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • smokeDetected : ตรวจพบควันใน <ชื่อบ้าน>
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • usingCellularBackup : <device(s)> <is/are> using cellular backup.
  • waterLeakDetected : <device(s)> <detect(s)> a water leak.
</code{"online":></code{"online":>