ทั่วไป
ถาม: เราควรใช้โครงสร้างพื้นฐานการจัดการคำสั่งซื้อแบบคลาวด์ต่อคลาวด์ที่ใดและในภาษาใด
ตอบ: ตราบใดที่รองรับ SSL (TLS) และ OAuth 2.0 ที่ทันสมัย คุณก็สามารถ ใช้โครงสร้างพื้นฐานบนแพลตฟอร์มและภาษาใดก็ได้ที่คุณเลือก เราขอแนะนำให้คุณติดตั้งใช้งานใกล้กับส่วนที่เหลือของโครงสร้างพื้นฐานให้มากที่สุด เพื่อปรับปรุงความน่าเชื่อถือและลดเวลาในการตอบสนองสำหรับการดำเนินการใน อุปกรณ์ของผู้ใช้จริง
ถาม: รหัสอุปกรณ์ต้องไม่ซ้ำกันไหม
ตอบ: รหัสต้องไม่ซ้ำกัน หากไม่มีรหัสที่ไม่ซ้ำกันในบริการของคุณ รหัสเหล่านั้นต้องไม่ซ้ำกันอย่างน้อยในระดับผู้ใช้ ลองนึกถึงผู้ใช้ที่มีบ้านหลายหลัง ซึ่งทั้ง 2 หลังมีการผสานรวมกับผู้ใช้รายเดียวกัน การขอ เปิดไฟในบ้านหลังหนึ่งไม่ควรเปิดไฟที่มีรหัสเดียวกันใน บ้านอีกหลัง
คำถาม: ชื่ออุปกรณ์ต้องไม่ซ้ำกันไหม
ตอบ: ชื่อไม่จำเป็นต้องไม่ซ้ำกัน แต่เมื่อเวลาผ่านไป เราอาจแนะนำให้ ผู้ใช้ปรับปรุงการตั้งชื่อที่ไม่ดีหลังจากการตั้งค่าเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีขึ้น
ดูคำแนะนำในการตั้งชื่อฉบับย่อได้ที่นี่
- ชื่อควรเป็นสิ่งที่ผู้คนพูดได้จริง
- เรารู้จักสตริงย่อย ดังนั้นหากคุณมี "ไฟสี acme" เราจะตอบคำถาม "ไฟ acme" ด้วย
- เราขอแนะนำให้ใช้ทั้งชื่อที่สื่อความหมายสำหรับผลิตภัณฑ์และชื่อที่ผู้ใช้กำหนดอย่างน้อย 1 ชื่อ
- ผู้ใช้ไม่จำเป็นต้องตั้งชื่อห้องให้หลอดไฟ เนื่องจากเรามีห้องสำหรับหลอดไฟอยู่แล้ว หลอดไฟควรมีชื่อที่ไม่ซ้ำกันในแต่ละห้อง แต่ผู้ใช้สามารถใช้ชื่อแบบพหูพจน์เพื่อ สั่งงานทุกอย่างได้เสมอ (เช่น หลอดไฟ 2 หลอดในโคมไฟติดผนังของออฟฟิศมีชื่อว่า "ไฟเหนือ" และ "ไฟตะวันออก" แต่สามารถสั่งงานเป็น "ไฟ" ได้)
ถาม: สถานะอุปกรณ์มีการอัปเดตบ่อยเพียงใด
ตอบ: ระบบจะเรียกสถานะชั่วคราวเมื่อมีการ QUERY หรือ EXECUTE ซึ่งเป็นการดำเนินการที่ผู้ใช้เริ่มต้น หากผู้ใช้ถามว่า "ไฟเปิดอยู่ไหม" หรือต้องการ เพิ่มความสว่างของไฟ เราจะต้องทำการค้นหาเพื่อดูสถานะปัจจุบัน
คำถาม: อัปเดต Home Graph โดยตรงด้วยสถานะปัจจุบันของอุปกรณ์ได้ไหม
ตอบ: ได้ ใช้การเรียก API Report State
การลิงก์บัญชีและ OAuth
คำถาม: เราต้องลิงก์บัญชีไหม
ตอบ: ใช่ คุณต้องลิงก์บัญชีเพื่อเชื่อมต่ออุปกรณ์ของผู้ใช้กับบริการระบบคลาวด์ของผู้ให้บริการ
คำถาม: สำหรับ OAuth เราจะทำให้โทเค็นเพื่อการเข้าถึงหมดอายุทุกๆ 15.213 ชั่วโมง ซึ่งถือว่าใช้ได้ใช่ไหม
ตอบ: ได้ แต่โปรดทดสอบโดยตั้งเวลาหมดอายุที่ค่อนข้างสั้น เช่น 10-20 นาที ไคลเอ็นต์ OAuth ของเราควรรีเฟรชโทเค็นตามความจำเป็น และการทดสอบที่มี เวลาหมดอายุสั้นๆ จะพิสูจน์ได้ว่าการรีเฟรชโทเค็นทำงานได้
Intent
คำถาม: การซิงค์จะเกิดขึ้นเมื่อใด
ตอบ: การซิงค์จะเกิดขึ้นทันทีหลังจากที่ OAuth เสร็จสมบูรณ์ และหลังจากที่เรียกใช้ขอซิงค์
ถาม: ทำไม SYNC
จึงใช้งานไม่ได้
ตอบ: สาเหตุที่พบบ่อยที่ทำให้การอัปโหลดล้มเหลวมีดังนี้
คุณส่งประเภทอุปกรณ์ที่ไม่ถูกต้อง
- เช่น เราคาดหวัง
action.devices.types.LIGHT
แต่คุณส่งaction.devices.types.Light
- เช่น เราคาดหวัง
คุณกำลังส่งประเภทอุปกรณ์ที่ไม่รองรับ
- เช่น คุณส่ง
action.devices.types.FLASHLIGHT
ซึ่งเป็นสิ่งที่เราไม่รองรับ
- เช่น คุณส่ง
คุณส่งฟิลด์ที่ไม่ถูกต้อง/ไม่รองรับ
- เช่น คุณมีฟิลด์ที่ไม่อยู่ในข้อกำหนดของเรา
การตอบกลับ SYNC มีปัญหาการจัดรูปแบบอื่นๆ
- ตรวจสอบวงเล็บของคุณ
คุณกำลังพบปัญหาเกี่ยวกับการลิงก์บัญชี
- โปรดตรวจสอบว่าคุณได้รับโทเค็นเพื่อการเข้าถึงที่ถูกต้องในส่วนหัว Auth ของคำขอ SYNC
คุณใช้เวลาตอบคำขอ SYNC นานเกินไป
- โปรดยืนยันว่าคุณตอบกลับคำขอ SYNC ภายใน 5 วินาที
ถาม: การตอบกลับว่า "รอดำเนินการ" ถือว่าใช้ได้ไหม
ตอบ: เราขอแนะนำให้ตอบกลับว่าสำเร็จ/ไม่สำเร็จ แทนที่จะเป็นรอดำเนินการ หากอุปกรณ์พร้อมใช้งานแบบเรียลไทม์ โปรดติดต่อเราหากคุณรู้สึกว่าต้องการคำตอบ "รอดำเนินการ" เนื่องจากเราทราบว่าอุปกรณ์บางอย่างที่ใช้พลังงานต่ำและไม่ใช่แบบเรียลไทม์อาจต้องใช้คำตอบที่รอดำเนินการและรูปแบบการดำเนินการแบบอะซิงโครนัส
การทดสอบและการส่ง
ถาม: เราตั้งค่าสภาพแวดล้อมระบบคลาวด์สำหรับการพัฒนาได้ไหม
ตอบ: ได้ คุณสามารถทดสอบสภาพแวดล้อมและการกำหนดค่าระบบคลาวด์ที่ยังไม่ได้เปิดตัว
คำถาม: การกระทำของฉันไม่ปรากฏในส่วนการควบคุมอุปกรณ์ในบ้านของแอป Google Home เกิดอะไรขึ้น
ตอบ: ยืนยันว่าคุณเป็นนักพัฒนาแอปสำหรับโปรเจ็กต์นี้
สถานะรายงาน
คำถาม: มีข้อกำหนดเบื้องต้นในการใช้ฟีเจอร์รายงานสถานะไหม
ตอบ: โปรเจ็กต์ต้องใช้ Smart Home API, รองรับ OAuth2 และต้องมี ลักษณะที่มีสถานะที่จะรายงาน
คำถาม: เราต้องรายงานสถานะในอุปกรณ์บ่อยแค่ไหน
ตอบ: Google สนใจสถานะการเปลี่ยนผ่านและสถานะสุดท้าย อย่างไรก็ตาม หากมีการเปลี่ยนแปลงสถานะหลายครั้งในระยะเวลาอันสั้น (เช่น ผู้ใช้ เปิดและปิดตู้เย็น 3 ครั้งใน 1 นาที หรือเลื่อนหรี่ไฟ) เรา ต้องการเพียงสถานะสุดท้ายที่รายงาน
คำถาม: ต้องส่งสถานะอุปกรณ์ทั้งหมดเมื่อโทรไปยัง Report State ไหม
ตอบ: ระบบไม่รองรับการอัปเดตสถานะบางส่วน ดังนั้นการเรียกใช้ Report State ควรมีข้อมูลทั้งหมดสำหรับลักษณะเฉพาะที่อัปเดตแล้วเสมอ หากลักษณะ 2 อย่างทำให้เกิดความไม่สอดคล้องกัน คุณควรรายงานลักษณะทั้ง 2 อย่างพร้อมกัน
คำถาม: Google สามารถค้นหาอุปกรณ์ของฉันเพื่อรับสถานะ (เช่น สำรวจอุปกรณ์) ได้ไหม
ตอบ: กลไกนี้เป็นกลไกสำรองที่เราไม่แนะนำ หากเราจำเป็นต้องกลับไปใช้การสำรวจอุปกรณ์ของผู้ใช้เหล่านั้นบ่อยๆ เราไม่สามารถรับประกันได้ว่าภาระงานเพิ่มเติมจะเป็นอย่างไร ความจำเป็นนี้มาจากแพลตฟอร์มภาพแบบใหม่ นอกเหนือจากปัญหาการโหลดที่ไม่รู้จักแล้ว ยังทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่แย่ลงด้วย เรา เชื่อว่าReport Stateเป็นสิ่งสำคัญต่อแพลตฟอร์ม
คำถาม: ลักษณะใดบ้างที่รองรับสถานะรายงานในขณะนี้
ตอบ: รองรับลักษณะสาธารณะทั้งหมดที่มีสถานะที่เชื่อมโยง นอกจากนี้ ควรรายงานการเปลี่ยนแปลง สถานะออนไลน์ของอุปกรณ์ด้วย
โปรดทราบว่าฉากไม่มีสถานะ อย่างไรก็ตาม การดำเนินการดังกล่าวอาจส่งผลให้สถานะของอุปกรณ์เปลี่ยนแปลง หากอุปกรณ์ใดใน Google Home Graph มีการ เปลี่ยนสถานะ คุณจะต้องรายงานกลับ
คำถาม: "รายงานสถานะ" ต้องส่งการประทับเวลาไหม
คำตอบ: เราไม่จำเป็นต้องใช้การประทับเวลา สถานะล่าสุดที่ส่งจะลบล้างการเรียกก่อนหน้า
คำถาม: ฉันต้องรายงานรัฐแยกต่างหากไหมหากส่งรัฐใน Query และ/หรือ Execute อยู่แล้ว
ตอบ: Home Graph จะจัดเก็บเฉพาะสถานะที่ส่งผ่าน Report State สถานะที่ส่งกลับมาเป็นการตอบสนองต่อความตั้งใจ EXECUTE และ QUERY จะใช้สำหรับการตอบกลับด้วยเสียงแก่ผู้ใช้เท่านั้นและจะไม่จัดเก็บ ด้วยเหตุนี้ จึงควรเรียกใช้ Report State แม้ว่าระบบจะแสดงผลสถานะใหม่ของอุปกรณ์เป็นคำตอบ สำหรับ Intent EXECUTE หรือ QUERY แล้วก็ตาม
คำถาม: จะเกิดอะไรขึ้นหากไม่ได้ใช้ฟีเจอร์รายงานสถานะให้เสร็จสมบูรณ์ภายในกำหนดเวลาที่ระบุ
ตอบ: การดำเนินการนี้จะส่งผลให้ประสบการณ์ของผู้ใช้แย่ลง เช่น ใน Google Home app (GHA)และแพลตฟอร์มภาพ ซึ่งหมายความว่าระบบจะส่ง Intent QUERY จำนวนมาก เพื่อสำรวจสถานะ และเราไม่สามารถรับประกันได้ว่าการดำเนินการนี้จะ สอดคล้องกับการโหลดเพิ่มเติมในระบบคลาวด์ของพาร์ทเนอร์
คำถาม: ฉันจะทดสอบการติดตั้งใช้งานสถานะรายงานได้อย่างไร
ตอบ: ใช้ โปรแกรมดูกราฟบ้าน ซึ่งเป็นเครื่องมือทดสอบแบบบริการตนเองที่แสดง สถานะอุปกรณ์ปัจจุบันที่จัดเก็บไว้ใน Home Graph
ถาม: เราใช้ requestId แบบสุ่มสำหรับสถานะรายงานได้ไหม
ตอบ: เราขอแนะนำให้พาร์ทเนอร์ใช้ requestId เดียวกันกับที่ได้รับจากคำขอ EXECUTE หาก Report State ทริกเกอร์โดยคำขอ EXECUTE ไม่เช่นนั้น คุณก็ใช้ requestId แบบสุ่มได้
คำถาม: หากผู้ใช้มีอุปกรณ์หลายเครื่องและอุปกรณ์เครื่องใดเครื่องหนึ่งมีการเปลี่ยนแปลงสถานะ เราต้องรายงานสถานะล่าสุดของอุปกรณ์ทั้งหมดไหม
ตอบ: ไม่ คุณต้องรายงานสถานะของอุปกรณ์นั้นๆ เท่านั้น
แนวทางปฏิบัติแนะนำ
ถาม: เวลาในการตอบสนองที่ยอมรับได้คือเท่าใด
ตอบ: เวลาในการตอบสนองที่ต่ำกว่า 200 มิลลิวินาทีถือว่าดีที่สุด และเวลาในการตอบสนองระหว่าง 2-5 วินาทีถือว่าใช้ได้ หากเวลาในการตอบสนองอยู่ที่ประมาณ 5 วินาที โปรดติดต่อเรา
คำถาม: ฉันจะทำให้ลำโพงที่สั่งงานด้วยเสียงตอบสนองอย่างถูกต้องเมื่อออฟไลน์ได้อย่างไร
ตอบ: แสดงสถานะออฟไลน์สำหรับอุปกรณ์ที่ออฟไลน์ เราจะแสดงข้อความ "ไม่พร้อมใช้งาน ในขณะนี้" เป็น TTS สำหรับข้อผิดพลาดนี้ ดูข้อมูลเพิ่มเติมได้ที่ข้อผิดพลาดและข้อยกเว้น