เอกสารนี้แสดงรายการข้อผิดพลาดและข้อยกเว้นที่รองรับอย่างเป็นทางการสำหรับอุปกรณ์สมาร์ทโฮม โปรดใช้รหัสข้อผิดพลาดและข้อยกเว้นที่ระบุไว้เหล่านี้ในการตอบสนอง Intent หรือในการแจ้งเตือนหากคุณได้ติดตั้งใช้งานไว้ เพื่อให้ Google Assistant แจ้งเตือนผู้ใช้ปลายทางเกี่ยวกับปัญหาที่เกี่ยวข้องกับคำสั่งหรือสถานะอุปกรณ์ที่ระบุ หากการตอบกลับมีรูปแบบที่ไม่ถูกต้องหรือมี errorCode Google Assistant จะแสดงข้อความแสดงข้อผิดพลาดทั่วไปแก่ผู้ใช้ เช่น "ขออภัย อุปกรณ์ไม่พร้อมใช้งานในขณะนี้"
ข้อผิดพลาด
คุณควรแสดงรหัสข้อผิดพลาดเมื่อเกิดปัญหาที่ทำให้คำขอ 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 : <อุปกรณ์>กำลังทำงานอยู่ ฉันจึงทำการเปลี่ยนแปลงไม่ได้
- alreadyArmed : <device(s)> เปิดระบบอยู่แล้ว
- alreadyAtMax : <อุปกรณ์>ตั้งค่าเป็นอุณหภูมิสูงสุดแล้ว
- alreadyAtMin : <device(s)> ตั้งค่าเป็นอุณหภูมิต่ำสุดแล้ว
- alreadyClosed : <device(s)> ปิดอยู่แล้ว
- alreadyDisarmed : <device(s)> ปิดระบบอยู่แล้ว
- alreadyDocked : <device(s)> <is/are> already docked.
- alreadyInState : <device(s)> อยู่ในสถานะนั้นอยู่แล้ว
- alreadyLocked : <device(s)> <is/are> already locked.
- alreadyOff : <device(s)> ปิดอยู่แล้ว
- alreadyOn : <device(s)> เปิดอยู่แล้ว
- alreadyOpen : <device(s)> เปิดอยู่แล้ว
- alreadyPaused : <device(s)> หยุดชั่วคราวอยู่แล้ว
- alreadyStarted : <device(s)> <is/are> เริ่มต้นแล้ว
- alreadyStopped : <device(s)> หยุดทำงานอยู่แล้ว
- alreadyUnlocked : <device(s)> ปลดล็อกอยู่แล้ว
- ambiguousZoneName : ขอโทษด้วย <อุปกรณ์> ไม่รู้ว่าคุณหมายถึงโซนไหน โปรดตรวจสอบว่าโซนมีชื่อที่ไม่ซ้ำกัน แล้วลองอีกครั้ง
- amountAboveLimit : ปริมาณมากเกินกว่าที่ <device(s)> จะรับได้
- appLaunchFailed : ขออภัย เปิด <app name> ใน <device(s)> ไม่สำเร็จ เคล็ดลับ: ยืนยัน appId และตรวจสอบว่าฮาร์ดแวร์เป้าหมายรองรับแอปดังกล่าว
- armFailure : <อุปกรณ์>เปิดระบบไม่ได้
- armLevelNeeded : ไม่แน่ใจว่าจะให้ตั้งค่า <device(s)> เป็นระดับไหน ลองพูดว่า "ตั้งค่า <อุปกรณ์>เป็น <ความปลอดภัยต่ำ>" หรือ "ตั้งค่า <อุปกรณ์>เป็น <ความปลอดภัยสูง>"
- authFailure : ฉันเข้าถึง <อุปกรณ์> ไม่ได้ ลองตรวจสอบแอปดูว่าตั้งค่า <อุปกรณ์> ไว้ครบถ้วนแล้ว
- bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
- belowMinimumLightEffectsDuration : ระยะเวลาน้อยกว่าขั้นต่ำ 5 นาที โปรดลองอีกครั้ง
- belowMinimumTimerDuration : ตั้งเวลา <device(s)> ให้สั้นขนาดนั้นไม่ได้ โปรดลองอีกครั้ง
- binFull : <device(s)> <has/have> <a full bin/full bins>
- cancelArmingRestricted : ขอโทษด้วย ยกเลิกการเปิดระบบ <device(s)> ไม่ได้
- cancelTooLate : ขออภัย ยกเลิกไม่ทันแล้ว โปรดใช้ <อุปกรณ์> หรือแอปแทน
- channelSwitchFailed : ขอโทษด้วย เปลี่ยนเป็นช่อง <channel name> ไม่ได้ ไว้ค่อยลองอีกทีนะ เคล็ดลับ: ยืนยันชื่อ/หมายเลขช่องและสถานะการสมัครใช้บริการของผู้ใช้
- chargerIssue : ขอโทษด้วย ดูเหมือนว่า <device(s)> <has/have> <a charger issue/charger issues> เคล็ดลับ: พาร์ทเนอร์ควรตรวจสอบการตรวจวัดและประสิทธิภาพแบตเตอรี่ในระดับฮาร์ดแวร์
- commandInsertFailed : ไม่สามารถประมวลผลคำสั่งสำหรับ <อุปกรณ์> เคล็ดลับ: ตรวจสอบประสิทธิภาพการเขียนฐานข้อมูลหรือตรรกะการจัดคิวคำสั่งภายใน
- deadBattery : <device(s)> <has/have> <a dead battery/dead batteries>.
- degreesOutOfRange : อุณหภูมิที่ขออยู่นอกช่วงของ <device(s)>
- deviceAlertNeedsAssistance : <device(s)> มีการแจ้งเตือนกิจกรรมที่ทำงานอยู่และต้องการความช่วยเหลือจากคุณ
- deviceAtExtremeTemperature : <อุปกรณ์>มี<อุณหภูมิสูงหรือต่ำเกินไป>
- deviceBusy : ขอโทษด้วย ดูเหมือน <อุปกรณ์> กำลังทำบางอย่างอยู่ตอนนี้
- deviceCharging : ขอโทษนะ ดูเหมือนว่า <device(s)> จะทำแบบนั้นไม่ได้ เพราะกำลังชาร์จอยู่
- deviceClogged : ขอโทษด้วย ดูเหมือน <device(s)> จะอุดตันนะ
- deviceCurrentlyDispensing : <device(s)> กำลังจ่ายอาหารอยู่ตอนนี้
- deviceDoorOpen : ประตูของ <device(s)> เปิดอยู่ โปรดปิดแล้วลองอีกครั้ง
- deviceHandleClosed : ที่จับของ <device(s)> ปิดอยู่ โปรดเปิดที่จับแล้วลองอีกครั้ง
- deviceJammingDetected : <device(s)> ถูกรบกวนสัญญาณ
- deviceLidOpen : ฝาของ <device(s)> เปิดอยู่ โปรดปิดฝาแล้วลองอีกครั้ง
- deviceNeedsRepair : <device(s)> ต้องได้รับการซ่อมแซม โปรดติดต่อตัวแทนให้บริการในพื้นที่ของคุณ
- deviceNotDocked : ขอโทษนะ ดูเหมือนว่า <อุปกรณ์> ไม่ได้ชาร์จอยู่ โปรดวาง <อุปกรณ์>บนแท่นชาร์จแล้วลองอีกครั้ง
-
deviceNotFound
:
<device(s)> <is/are>n't available. ลองตั้งค่า <อุปกรณ์>ใหม่อีกครั้งนะ เคล็ดลับ: ตรวจสอบว่าแบ็กเอนด์ซิงค์ Home Graph อยู่เสมอ เรียกใช้
requestSyncเมื่อมีการเพิ่มหรือนำอุปกรณ์ออก - deviceNotMounted : ขอโทษนะ ดูเหมือนว่า <อุปกรณ์> จะทำแบบนั้นไม่ได้เพราะไม่ได้ติดตั้งไว้
- deviceNotReady : <device(s)> ยังไม่พร้อม
- deviceStuck : <device(s)> ติดขัดและต้องการความช่วยเหลือจากคุณ
- deviceTampered : <device(s)> ถูกงัดแงะ
- deviceThermalShutdown : ขอโทษนะ ดูเหมือน <อุปกรณ์> จะปิดลงเพราะมีอุณหภูมิสูงหรือต่ำเกินไป
- directResponseOnlyUnreachable : <device(s)> ไม่รองรับรีโมตคอนโทรล
- disarmFailure : ปิดระบบ <อุปกรณ์> ไม่ได้
- discreteOnlyOpenClose : ขอโทษด้วย <อุปกรณ์> เปิดหรือปิดได้จนสุดเท่านั้น
- dispenseAmountAboveLimit : <device(s)> จ่ายอาหารเยอะขนาดนั้นไม่ได้
- dispenseAmountBelowLimit : <device(s)> จ่ายอาหารน้อยขนาดนั้นไม่ได้
- dispenseAmountRemainingExceeded : <device(s)> มี <dispense item> ไม่พอที่จะทำแบบนั้น
- dispenseFractionalAmountNotSupported : <device(s)> จ่าย <dispense item> เป็นเศษส่วนไม่ได้
- dispenseFractionalUnitNotSupported : <device(s)> ไม่รองรับเศษส่วนของหน่วยนั้นสำหรับ <dispense item>
- dispenseUnitNotSupported : <device(s)> ไม่รองรับหน่วยนั้นสำหรับ <dispense item>
- doorClosedTooLong : ประตูของ <device(s)> เปิดไว้สักพักหนึ่งแล้ว โปรดเปิดประตู ดูให้แน่ใจว่ามีของอยู่ในนั้นแล้วลองอีกครั้งนะ
- emergencyHeatOn : <device(s)> อยู่ในโหมดแหล่งความร้อนฉุกเฉิน คุณจึงต้องปรับด้วยตนเอง
- faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>
- floorUnreachable : <device(s)> ไปห้องนั้นไม่ได้ ย้าย <it/them>ไปให้ถูกชั้นแล้วลองใหม่นะ
- functionNotSupported : จริงๆ แล้ว <อุปกรณ์> ไม่รองรับฟังก์ชันนั้น เคล็ดลับ: ตรวจสอบว่าการตอบสนอง SYNC แสดงความสามารถของอุปกรณ์อย่างถูกต้อง
- genericDispenseNotSupported : ฉันต้องทราบว่าคุณต้องการให้จ่ายอะไร โปรดลองอีกครั้งโดยระบุชื่อรายการ
- hardError : ขอโทษนะ เกิดข้อผิดพลาด เลยควบคุมอุปกรณ์สมาร์ทโฮมไม่ได้
- hardError : ขอโทษนะ เกิดข้อผิดพลาด เลยควบคุมอุปกรณ์สมาร์ทโฮมไม่ได้
- inAutoMode : ตอนนี้<อุปกรณ์>ตั้งค่าเป็นโหมดอัตโนมัติอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน<อุปกรณ์>เป็นโหมดอื่น
- inAwayMode : <device(s)> ตั้งค่าเป็นโหมดไม่อยู่บ้านอยู่ หากต้องการควบคุมตัวควบคุมอุณหภูมิ คุณจะต้องเปลี่ยนเป็นโหมดอยู่บ้านด้วยตนเองโดยใช้แอป Nest บนโทรศัพท์ แท็บเล็ต หรือคอมพิวเตอร์
- inDryMode : <device(s)> ตั้งค่าเป็นโหมดทำความเย็นแบบแห้งอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน<อุปกรณ์>เป็นโหมดอื่น
- inEcoMode : <device(s)> ตั้งค่าเป็นโหมดอีโคอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน<อุปกรณ์>เป็นโหมดอื่น
- inFanOnlyMode : <device(s)> ตั้งค่าเป็นโหมดพัดลมเท่านั้นอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน<อุปกรณ์>เป็นโหมดอื่น
- inHeatOrCool : <device(s)> ไม่ได้อยู่ในโหมดทำความร้อน/ทำความเย็น
- inHumidifierMode : <อุปกรณ์>ตั้งค่าเป็นโหมดเครื่องทำความชื้นอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน<อุปกรณ์>เป็นโหมดอื่น
- inOffMode : <อุปกรณ์> ปิดอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยนเป็นโหมดอื่น
- inPurifierMode : <อุปกรณ์> ตั้งค่าเป็นโหมดเครื่องฟอกอากาศอยู่ หากต้องการเปลี่ยนอุณหภูมิ คุณจะต้องเปลี่ยน<อุปกรณ์>เป็นโหมดอื่น
- inSleepMode : <device(s)> อยู่ในโหมดสลีป โปรดลองอีกครั้งในภายหลัง
- inSoftwareUpdate : <device(s)> กำลังอัปเดตซอฟต์แวร์
- lockFailure : ล็อก <อุปกรณ์> ไม่ได้ เคล็ดลับ: ตรวจสอบการติดขัดทางกายภาพ พลังงานต่ำ หรือมอเตอร์ขัดข้องในฮาร์ดแวร์ของล็อก
- lockedState : <device(s)> ล็อกอยู่
- lockedToRange : อุณหภูมินั้นอยู่นอกช่วงที่ล็อกไว้ใน <อุปกรณ์>
- lowBattery : <device(s)> แบตเตอรี่เหลือน้อย
- maxSettingReached : <device(s)> ตั้งค่าไว้สูงสุดแล้ว
- maxSpeedReached : <device(s)> ตั้งค่าเป็นความเร็วสูงสุดแล้ว
- minSettingReached : <device(s)> ตั้งค่าไว้ต่ำสุดแล้ว
- minSpeedReached : <device(s)> ตั้งค่าเป็นความเร็วต่ำสุดอยู่แล้ว
- monitoringServiceConnectionLost : <device(s)> <has/have> lost <its/their> connection to the monitoring service.
- needsAttachment : ขอโทษที ดูเหมือนว่าชิ้นส่วนที่ต้องต่อกับ <อุปกรณ์> หายไป เปลี่ยนใหม่แล้วลองอีกครั้งนะ
- needsBin : ขอโทษที ดูเหมือนว่า <device(s)> ไม่มีถังเก็บฝุ่น เปลี่ยนใหม่แล้วลองอีกครั้งนะ
- needsPads : <device(s)> ต้องเปลี่ยนแผ่นอิเล็กโทรดใหม่
- needsSoftwareUpdate : <device(s)> ต้องอัปเดตซอฟต์แวร์
- needsWater : <device(s)> ต้องการน้ำ
- networkProfileNotRecognized : ขอโทษด้วย ฉันไม่รู้จัก "<network profile>" ใน <device(s)> เคล็ดลับ: ตรวจสอบว่าสตริงชื่อโปรไฟล์ตรงกับโปรไฟล์ที่รองรับในการตอบกลับ SYNC
- networkSpeedTestInProgress : ฉันกำลังทดสอบ<ความเร็ว>ของ<เครือข่าย>อยู่
- noAvailableApp : ขอโทษนะ ดูเหมือนว่า <app name> จะไม่พร้อมใช้งาน
- noAvailableChannel : ขอโทษนะ ดูเหมือนว่าชื่อช่อง <channel name> ไม่พร้อมให้บริการ
- noChannelSubscription : ขอโทษนะ ตอนนี้คุณยังไม่ได้สมัครสมาชิกช่อง <ชื่อช่อง>
- noTimerExists : ขอโทษที ดูเหมือนไม่ได้ตั้งตัวจับเวลาไว้ที่ <device(s)>
- notSupported : ขอโทษนะ โหมดนั้นใช้กับ <device(s)> ไม่ได้
- obstructionDetected : <device(s)> ตรวจพบสิ่งกีดขวาง
- ออฟไลน์ , deviceOffline : ขอโทษนะ ดูเหมือนว่า <อุปกรณ์> จะไม่พร้อมใช้งานขณะนี้
- onRequiresMode : โปรดระบุโหมดที่ต้องการเปิด
- passphraseIncorrect : ขอโทษนะ ดูเหมือนว่ารหัส PIN จะไม่ถูกต้อง
- percentOutOfRange : ขอโทษนะ ตั้งค่า <device(s)> เป็น <percent> ไม่ได้
- pinIncorrect : (passphraseIncorrect)
- rainDetected : ไม่ได้เปิด <อุปกรณ์> เพราะตรวจพบฝน
- rangeTooClose : อุณหภูมิเหล่านั้นใกล้กันเกินไปสำหรับช่วงทำความร้อน-ทำความเย็นของ <device(s)> โปรดเลือกอุณหภูมิที่ห่างกันมากกว่านี้
- relinkRequired : ขออภัย ดูเหมือนว่ามีบางอย่างผิดปกติกับบัญชีของคุณ โปรดใช้แอป Google Home หรือแอปผู้ช่วยเพื่อลิงก์ <อุปกรณ์> อีกครั้ง เคล็ดลับ: ตรวจสอบว่าเซิร์ฟเวอร์แสดงรหัสนี้เมื่อโทเค็นการรีเฟรชไม่ถูกต้องอย่างถาวร
-
remoteSetDisabled
:
- พารามิเตอร์ที่ไม่บังคับ
errorCodeReason currentlyArmed- ขอโทษด้วย ตอนนี้การรักษาความปลอดภัยเริ่มทำงานไปแล้ว ถ้าจะเปลี่ยนแปลง คุณต้องใช้ <อุปกรณ์> หรือแอปremoteUnlockNotAllowed- ขอโทษนะ ปลดล็อก <อุปกรณ์> จากระยะไกลไม่ได้remoteControlOff- ตอนนี้การดำเนินการนั้นปิดอยู่ เปิดใช้รีโมตคอนโทรลใน <อุปกรณ์> แล้วลองอีกทีนะchildSafetyModeActive- การดำเนินการนั้นจะปิดไว้สำหรับ <อุปกรณ์> ขณะที่เปิดโหมดความปลอดภัยสำหรับเด็ก
- พารามิเตอร์ที่ไม่บังคับ
- roomsOnDifferentFloors : <device(s)> เข้าถึงห้องพวกนั้นไม่ได้เพราะอยู่คนละชั้นกัน
- safetyShutOff : <device(s)> อยู่ในโหมดปิดระบบเพื่อความปลอดภัย คุณจึงต้องปรับด้วยตนเอง
- sceneCannotBeApplied : ขอโทษนะ ใช้ <device(s)> ไม่ได้ เคล็ดลับ: ตรวจสอบสถานะภายในของฉากของผู้ใช้ในระบบคลาวด์ของพาร์ทเนอร์
- securityRestriction : <device(s)> มีข้อจำกัดด้านความปลอดภัย
- softwareUpdateNotAvailable : ขอโทษนะ ไม่มีอัปเดตซอฟต์แวร์สำหรับ <device(s)>
- startRequiresTime : ถ้าจะทำแบบนั้น คุณต้องบอกว่าจะใช้ <device(s)> นานแค่ไหน
- stillCoolingDown : <device(s)> กำลังทำความเย็นอยู่
- stillWarmingUp : <device(s)> กำลังอุ่นเครื่องอยู่
- streamUnavailable : ขอโทษที ดูเหมือนว่าตอนนี้สตรีมจาก <device(s)> จะไม่พร้อมใช้งาน
- streamUnplayable : ขอโทษนะ ตอนนี้ฉันเล่นไลฟ์สดจาก <device(s)> ไม่ได้ เคล็ดลับ: ยืนยันการส่งสัญญาณ WebRTC/HLS และตรวจสอบว่า URL ของสตรีมถูกต้อง
- tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
- targetAlreadyReached : ขอโทษที ดูเหมือนว่านั่นจะเป็นอุณหภูมิปัจจุบันอยู่แล้ว
- timerValueOutOfRange : ตั้งค่า <อุปกรณ์> เป็นระยะเวลาดังกล่าวไม่ได้
- tooManyFailedAttempts : ขออภัย พยายามไม่สำเร็จหลายครั้งเกินไป โปรดไปที่แอปของอุปกรณ์เพื่อดำเนินการดังกล่าวให้เสร็จสิ้น
- transientError : ขออภัย เกิดข้อผิดพลาดในการควบคุม <อุปกรณ์> โปรดลองอีกครั้ง เคล็ดลับ: โดยทั่วไปแล้ว ข้อผิดพลาดเหล่านี้จะแสดงเป็นการเชื่อมต่อกับอุปกรณ์หรือบริการที่ถูกตัด รวมถึงเมื่อเปิดการเชื่อมต่อใหม่กับเซิร์ฟเวอร์ไม่ได้
- turnedOff , deviceTurnedOff : <device(s)> ปิดอยู่ขณะนี้
- unableToLocateDevice : ฉันค้นหา <device(s)> ไม่พบ เคล็ดลับ: ตรวจสอบการเชื่อมต่อในพื้นที่ของอุปกรณ์ (Wi-Fi/บลูทูธ)
- unknownFoodPreset : <device(s)> ไม่รองรับการตั้งค่าอาหารล่วงหน้านั้น
- unlockFailure : ปลดล็อก <อุปกรณ์> ไม่ได้ เคล็ดลับ: ตรวจสอบว่าฮาร์ดแวร์ติดขัด แบตเตอรี่เหลือน้อย หรือมีการป้อน PIN ไม่ถูกต้องหรือไม่
- unpausableState : หยุด <อุปกรณ์> ชั่วคราวขณะนี้ไม่ได้
- userCancelled : ok
- valueOutOfRange : ตั้งค่า <อุปกรณ์> เป็นอุณหภูมินั้นไม่ได้
การรายงานสถานะออนไลน์และออฟไลน์
เมื่ออุปกรณ์ออฟไลน์ คุณควรรายงาน <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": {},
}
}
}ข้อยกเว้น
คุณควรแสดงผลข้อยกเว้นเมื่อมีปัญหาหรือการแจ้งเตือนที่เชื่อมโยงกับคำสั่ง คำสั่งอาจสำเร็จหรือไม่สำเร็จก็ได้
หากคำสั่งสำเร็จ (สถานะ = "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> นำไปเททิ้งแล้วลองใหม่อีกครั้ง
- binFull : <device(s)> <has/have> <a full bin/full bins>
- carbonMonoxideDetected : ตรวจพบคาร์บอนมอนอกไซด์ใน <ชื่อบ้าน>
- deviceAtExtremeTemperature : <อุปกรณ์> มี<อุณหภูมิสูงหรือต่ำเกินไป>
- deviceJammingDetected : <device(s)> ถูกรบกวนสัญญาณ
- deviceMoved : ย้าย <อุปกรณ์> แล้ว
- deviceOpen : <device(s)> เปิดอยู่
- deviceTampered : <device(s)> ถูกงัดแงะ
- deviceUnplugged : ถอดปลั๊ก <อุปกรณ์> แล้ว
- floorUnreachable : <device(s)> ไปห้องนั้นไม่ได้ ย้าย <it/them>ไปให้ถูกชั้นแล้วลองใหม่นะ
- hardwareFailure : <device(s)> มีปัญหาเกี่ยวกับฮาร์ดแวร์
- inSoftwareUpdate : <device(s)> กำลังอัปเดตซอฟต์แวร์
- isBypassed : <device(s)> ถูกข้ามอยู่ในขณะนี้
- lowBattery : <device(s)> แบตเตอรี่เหลือน้อย
- motionDetected : <device(s)> ตรวจพบการเคลื่อนไหว
- needsPads : <device(s)> <need(s)> แผ่นใหม่
- needsSoftwareUpdate : <device(s)> ต้องอัปเดตซอฟต์แวร์
- needsWater : <device(s)> ต้องการน้ำ
- networkJammingDetected : การเชื่อมต่อเครือข่ายในบ้านกับ <อุปกรณ์> ทำงานไม่ถูกต้อง
- noIssuesReported : <device(s)> ไม่ได้รายงานปัญหา
- roomsOnDifferentFloors : <device(s)> เข้าถึงห้องพวกนั้นไม่ได้เพราะอยู่คนละชั้นกัน
- runCycleFinished : <device(s)> ทำงานเสร็จแล้ว
- securityRestriction : <device(s)> มีข้อจำกัดด้านความปลอดภัย
- smokeDetected : ตรวจพบควันใน <house name>
- 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)> ตรวจพบน้ำรั่ว