เมื่ออุปกรณ์หรือคำขอไม่ทำงานตามที่คาดไว้ สิ่งสำคัญคือคุณต้องมอบการจัดการและการแจ้งข้อผิดพลาดที่ดีให้ผู้ใช้ทราบ เพื่อให้ผู้ใช้ทราบถึงสิ่งที่เกิดขึ้น และวิธีแก้ไขเมื่อทำได้ อย่าลืมคำนึงถึงสถานการณ์ความล้มเหลวที่อาจเกิดขึ้นได้และอุปกรณ์ของคุณจะตอบสนองอย่างไร หากผู้ใช้ขัดจังหวะงานที่กำลังดำเนินอยู่จะเป็นอย่างไร จะเกิดอะไรขึ้นหากผู้ใช้ขอให้ดำเนินการ จากอุปกรณ์ในขณะที่อุปกรณ์ออฟไลน์ การวางแผนสำหรับปัญหาเหล่านี้และช่วยให้ผู้ใช้กู้คืนจากปัญหาเหล่านี้จะช่วยลดความหงุดหงิดของผู้ใช้และสร้างประสบการณ์การใช้งานที่มีคุณภาพสูงยิ่งขึ้นสำหรับอุปกรณ์ของคุณ
คู่มือนี้มีตัวอย่างการตอบกลับ Intent ที่จัดการข้อผิดพลาด ดูข้อผิดพลาดและข้อยกเว้นเพื่อตรวจสอบค่า errorCode
ที่ถูกต้องเพื่อหาข้อผิดพลาดและข้อยกเว้น
ตัวอย่างที่ 1: การตอบสนองข้อผิดพลาดสำหรับ Intent EXECUTE
ผู้ใช้ปลายทางมีหลอดไฟอัจฉริยะ 2 ดวงและติดตั้งอยู่ในห้องนั่งเล่น ผู้ใช้ออกคำสั่ง "เปิดไฟห้องนั่งเล่น" และ Google ได้ส่ง Intent EXECUTE
ไปยัง URL ของ Fulfillment ของคุณ คุณพบว่าอุปกรณ์ของผู้ใช้ออฟไลน์อยู่และควบคุมไม่ได้ การดำเนินการตามคำสั่งซื้อจึงแสดงการตอบกลับ 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: ข้อยกเว้นแบบไม่บล็อกสำหรับ Intent EXECUTE
ผู้ใช้พยายามล็อก Smart Lock ที่ประตูหน้าโดยใช้อุปกรณ์ที่มี 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
ในเอกสารอ้างอิงข้อผิดพลาดและข้อยกเว้น