เอกสารนี้แสดงข้อผิดพลาดและข้อยกเว้นที่รองรับอย่างเป็นทางการสำหรับอุปกรณ์สมาร์ทโฮม โปรดใช้รหัสข้อผิดพลาดและข้อยกเว้นที่ระบุเหล่านี้ใน Intent
response หรือในการแจ้งเตือน
หากคุณได้ติดตั้งใช้งานแล้ว เพื่อให้ 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)> <is/are> already set to the maximum temperature.
 - 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> docked. โปรดเสียบปลั๊ก <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)> <is/are> ตั้งค่าเป็นโหมดพัดลมเท่านั้น ถ้าจะปรับอุณหภูมิก็ต้องเปลี่ยนเป็นโหมดอื่นก่อนนะ
 - 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)> อยู่ในระหว่างการอัปเดตซอฟต์แวร์
 - 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)> ตรวจพบสิ่งกีดขวาง
 - ออฟไลน์ , 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 : ตั้งเวลา <device(s)> เท่านั้นไม่ได้
 - 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)> อยู่ในระหว่างการอัปเดตซอฟต์แวร์
 - isBypassed : ขณะนี้<device(s)> <is/are> ถูกข้าม
 - lowBattery : <device(s)> <has/have> low battery.
 - motionDetected : <อุปกรณ์> <ตรวจจับ> การเคลื่อนไหว
 - 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.