เมื่ออุปกรณ์หรือคำขอไม่ทำงานตามที่คาดไว้ คุณควรจัดการข้อผิดพลาดและการสื่อสารที่ดีสำหรับผู้ใช้ เพื่อให้ผู้ใช้เข้าใจสิ่งที่เกิดขึ้น และวิธีแก้ไขหากเป็นไปได้ โปรดพิจารณาถึง สถานการณ์ที่อาจเกิดข้อผิดพลาดและวิธีที่อุปกรณ์ควรตอบสนอง: จะเกิดอะไรขึ้นหากผู้ใช้ ขัดจังหวะงานที่กำลังดำเนินการอยู่ จะเกิดอะไรขึ้นหากผู้ใช้ขอให้ดำเนินการจากอุปกรณ์ ขณะที่อุปกรณ์ออฟไลน์ การวางแผนรับมือปัญหาเหล่านี้และการช่วยเหลือผู้ใช้ให้กู้คืน จากปัญหาดังกล่าวจะช่วยหลีกเลี่ยงความไม่พอใจของผู้ใช้และสร้างประสบการณ์การใช้งานที่มีคุณภาพสูงขึ้น สำหรับอุปกรณ์ของคุณ
คู่มือนี้แสดงตัวอย่างการตอบกลับ Intent ที่จัดการข้อผิดพลาด ดูข้อผิดพลาดและข้อยกเว้นเพื่อตรวจสอบค่า errorCode
ที่ถูกต้องสำหรับข้อผิดพลาดและข้อยกเว้น
ตัวอย่างที่ 1: การตอบกลับข้อผิดพลาดสำหรับเจตนา EXECUTE
ผู้ใช้ปลายทางติดตั้งหลอดไฟอัจฉริยะ 2 ดวงในห้องนั่งเล่น ผู้ใช้
ออกคำสั่ง "เปิดไฟห้องนั่งเล่น" และ Google ส่งEXECUTE
Intent ไปยัง URL การดำเนินการตามคำสั่งของคุณ คุณพบว่าอุปกรณ์ของผู้ใช้ออฟไลน์
และควบคุมไม่ได้ ดังนั้นการดำเนินการตามคำสั่งจึงส่งคืนEXECUTE
พร้อมstatus
ERROR
และ errorCode
deviceOffline
ตัวอย่างนี้แสดงวิธีส่งคืนEXECUTE
การตอบกลับที่มี
errorCode
จากอุปกรณ์สมาร์ทโฮมตามที่อธิบายไว้ก่อนหน้านี้
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [ { "ids": [ "light-device-id-1" ], "status": "ERROR", "errorCode": "deviceOffline" }, { "ids": [ "light-device-id-2" ], "status": "ERROR", "errorCode": "deviceOffline" } ] } }
Google Assistant จะแจ้งให้ผู้ใช้ทราบว่า "อุปกรณ์ไม่พร้อมใช้งานในขณะนี้" หลังจากได้รับคำตอบ โปรดทราบว่าคุณยังคงต้องส่งสถานะออฟไลน์สำหรับอุปกรณ์ในสถานะรายงานหลังจากส่ง errorCode
deviceOffline
ในการตอบกลับ EXECUTE
ตัวอย่างที่ 2: ข้อยกเว้นที่ไม่บล็อกสำหรับเจตนา EXECUTE
ผู้ใช้พยายามล็อกสมาร์ทล็อกที่ประตูหน้าโดยใช้
Assistant คุณควบคุมล็อกได้สำเร็จ แต่
พบว่าแบตเตอรี่ของอุปกรณ์เหลือน้อย ดังนั้นการดำเนินการจึงส่งคืนการตอบกลับ EXECUTE
พร้อมด้วย status
SUCCESS
และ exceptionCode
lowBattery
ตัวอย่างนี้แสดงวิธีส่งEXECUTE
การตอบกลับด้วย
exceptionCode
จากอุปกรณ์ล็อกตามที่อธิบายไว้ก่อนหน้านี้
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["lock-device-id-1"], "status": "SUCCESS", "states": { "on": true, "online": true, "isLocked": true, "isJammed": false, "exceptionCode": "lowBattery" } }] } }
Assistant จะแจ้งให้ผู้ใช้ทราบว่า "อุปกรณ์มีแบตเตอรี่เหลือน้อย" หลังจากได้รับคำตอบ
ตัวอย่างที่ 3: การแจ้งเตือนข้อผิดพลาดเชิงรุก
ในบางกรณี การแจ้งเตือนข้อผิดพลาดให้ผู้ใช้ทราบอาจเป็นประโยชน์ โดยเฉพาะอย่างยิ่งสำหรับฟังก์ชันที่ผู้ใช้คาดหวังว่าจะดำเนินการให้เสร็จโดยอัตโนมัติ สำหรับลักษณะที่รองรับการแจ้งเตือนเชิงรุก คุณสามารถแจ้งเตือนผู้ใช้เชิงรุกขณะเกิดข้อผิดพลาดได้หากคุณได้ใช้smart home การแจ้งเตือนเชิงรุก
เครื่องอบผ้าอัจฉริยะกำลังทำงาน และมีคนเปิดประตูเครื่องก่อนที่รอบการอบจะเสร็จสิ้น
คุณเรียกใช้เมธอด Google Home Graph API
reportStateAndNotifications
เพื่อส่งการแจ้งเตือนเชิงรุกพร้อมด้วย
errorCode
ได้โดยทำดังนี้
ตัวอย่างนี้แสดงวิธีส่งการแจ้งเตือนเชิงรุกพร้อม errorCode
จากอุปกรณ์เครื่องอบผ้าตามที่อธิบายไว้ก่อนหน้านี้
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
Assistant จะแจ้งให้ผู้ใช้ทราบว่า "ประตูอุปกรณ์ เปิดอยู่" หลังจากได้รับการแจ้งเตือน คุณสามารถส่งสถานะอุปกรณ์ที่เกี่ยวข้องพร้อมกับการแจ้งเตือนในเพย์โหลดเดียวกันได้
ตัวอย่างที่ 4: การแจ้งเตือนการติดตามผล
สำหรับคำสั่งลักษณะที่รองรับการแจ้งเตือนติดตามผล คุณจะส่งการแจ้งเตือนติดตามผลไปยังผู้ใช้ได้ในขณะที่เกิดข้อผิดพลาดหรือข้อยกเว้น หากคุณได้ติดตั้งใช้งานsmart home การแจ้งเตือนติดตามผล
ผู้ใช้ออกคำสั่งให้ปิดประตูโรงรถ แต่ประตูติดขัด
ขณะปิด คุณส่งการแจ้งเตือนติดตามผลพร้อมerrorCode
ได้โดยทำดังนี้
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "door-device-id": { "LockUnlock": { "priority": 0, "followUpResponse": { "status": "FAILURE", "errorCode": "deviceJammingDetected", "followUpToken": "follow-up-token-1" } } } }, "states": { "door-device-id": { "openPercent": 70 } } } } }
Assistant จะแจ้งให้ผู้ใช้ทราบว่า "อุปกรณ์ถูก รบกวน" หลังจากได้รับการแจ้งเตือน คุณสามารถส่งสถานะอุปกรณ์ที่เกี่ยวข้องพร้อมการแจ้งเตือนในเพย์โหลดเดียวกันได้
ดูข้อมูลเพิ่มเติมและerrorCodes
โดยละเอียดได้ที่เอกสารอ้างอิงข้อผิดพลาดและข้อยกเว้น