ทั่วไป
ถาม: เราควรติดตั้งใช้งานโครงสร้างพื้นฐานการจำหน่ายแบบระบบคลาวด์ต่อระบบคลาวด์ที่ใดและในภาษาใด
ตอบ: คุณติดตั้งใช้งานโครงสร้างพื้นฐานในแพลตฟอร์มและภาษาใดก็ได้ตราบใดที่รองรับ SSL (TLS) สมัยใหม่และ OAuth 2.0 เราขอแนะนําให้คุณติดตั้งใช้งานให้ใกล้เคียงกับโครงสร้างพื้นฐานส่วนอื่นๆ มากที่สุด เพื่อปรับปรุงความน่าเชื่อถือและลดเวลาในการตอบสนองของอุปกรณ์ของผู้ใช้
ถาม: รหัสอุปกรณ์ต้องไม่ซ้ำกันไหม
ตอบ: รหัสต้องไม่ซ้ำกัน หากไม่มีรหัสที่ไม่ซ้ำกันทั่วทั้งบริการ รหัสต้องไม่ซ้ำกันอย่างน้อยในระดับผู้ใช้ ลองนึกถึงผู้ใช้ที่มีบ้านหลายหลัง โดยทั้ง 2 หลังมีการผสานรวมกับผู้ใช้รายเดียวกัน การขอให้เปิดไฟในบ้านหลังหนึ่งไม่ควรเปิดไฟที่มีรหัสเดียวกันในบ้านหลังอื่น
ถาม: ชื่ออุปกรณ์ต้องไม่ซ้ำกันไหม
ตอบ: ชื่อไม่จำเป็นต้องไม่ซ้ำกัน แต่เมื่อเวลาผ่านไป เราอาจแนะนำให้ผู้ใช้ปรับปรุงชื่อที่ไม่เหมาะสมหลังจากการตั้งค่าเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดียิ่งขึ้น
คู่มือการตั้งชื่อคร่าวๆ มีดังนี้
- ชื่อควรเป็นคำที่ผู้คนออกเสียงได้จริง
- เราจดจำสตริงย่อยได้ ดังนั้นหากคุณมี "acme color light" เราจะตอบกลับ "acme light" ด้วย
- เราขอแนะนำให้ใช้ทั้งชื่อที่สื่อความหมายสำหรับผลิตภัณฑ์และชื่อที่ผู้ใช้กำหนดอย่างน้อย 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
คุณใช้เวลาในการตอบกลับคำขอซิงค์นานเกินไป
- โปรดยืนยันว่าคุณกำลังตอบกลับคำขอซิงค์ภายใน 5 วินาที
ถาม: ตอบกลับเป็น "รอดำเนินการ" ได้ไหม
ตอบ: เราขอแนะนำให้ใช้การตอบกลับ "สำเร็จ/ไม่สำเร็จ" แทน "รอดำเนินการ" หากอุปกรณ์พร้อมใช้งานแบบเรียลไทม์ โปรดติดต่อเราหากต้องการคำตอบที่ "รอดำเนินการ" เราตระหนักดีว่าอุปกรณ์พลังงานต่ำบางรุ่นที่ไม่ใช่แบบเรียลไทม์อาจต้องใช้คำตอบที่รอดำเนินการและรูปแบบการดำเนินการแบบไม่พร้อมกัน
การทดสอบและการส่ง
ถาม: เราสร้างสภาพแวดล้อมระบบคลาวด์สําหรับการพัฒนาได้ไหม
ตอบ: ได้ คุณสามารถทดสอบสภาพแวดล้อมและการกำหนดค่าระบบคลาวด์ที่ยังไม่ได้เปิดตัว
ถาม: การดำเนินการของฉันไม่แสดงในส่วนระบบควบคุมอุปกรณ์สมาร์ทโฮมของแอป Google Home เกิดอะไรขึ้น
ตอบ: ยืนยันว่าคุณเป็นนักพัฒนาแอปของโปรเจ็กต์นี้
สถานะรายงาน
ถาม: การใช้สถานะรายงานมีข้อกําหนดเบื้องต้นไหม
ตอบ: โปรเจ็กต์ต้องใช้ Smart Home API, รองรับ OAuth2 และต้องมีแอตทริบิวต์ที่มีสถานะที่จะรายงาน
ถาม: เราจําเป็นต้องรายงานสถานะในอุปกรณ์บ่อยแค่ไหน
ตอบ: Google สนใจการเปลี่ยนสถานะและสถานะสุดท้าย อย่างไรก็ตาม หากมีการเปลี่ยนแปลงสถานะหลายครั้งในระยะเวลาสั้นๆ (เช่น ผู้ใช้เปิดและปิดตู้เย็น 3 ครั้งใน 1 นาที หรือเลื่อนตัวควบคุมความสว่าง) เราต้องการทราบเฉพาะสถานะสุดท้ายเท่านั้น
ถาม: จำเป็นต้องส่งสถานะอุปกรณ์ทั้งหมดเมื่อเรียกใช้ Report State หรือไม่
ตอบ: ระบบไม่รองรับการอัปเดตสถานะบางส่วน ดังนั้นการเรียกใช้ Report State ควรรวมข้อมูลทั้งหมดสำหรับลักษณะเฉพาะที่อัปเดตไว้เสมอ หากลักษณะ 2 รายการทำให้เกิดความไม่สอดคล้องกัน คุณควรรายงานลักษณะเหล่านั้นกลับร่วมกัน
ถาม: Google จะค้นหาอุปกรณ์ของฉันเพื่อดูสถานะ (นั่นคือ สำรวจอุปกรณ์) ได้ไหม
ตอบ: นี่เป็นกลไกสำรองที่เราไม่แนะนำ หากเราจำเป็นต้องกลับไปใช้การสำรวจอุปกรณ์บ่อยๆ สำหรับผู้ใช้เหล่านั้น เราไม่สามารถรับประกันปริมาณงานเพิ่มเติมได้ ความต้องการนี้มาจากแพลตฟอร์มการแสดงผลแบบใหม่ นอกเหนือจากปัญหาการโหลดที่ไม่รู้จักแล้ว ประสบการณ์ของผู้ใช้ก็จะแย่ลงด้วย เราคิดว่า Report State มีความสำคัญต่อแพลตฟอร์ม
ถาม: ขณะนี้ลักษณะใดบ้างที่รองรับสถานะรายงาน
ตอบ: ระบบรองรับทุกลักษณะสาธารณะที่มีการเชื่อมโยงสถานะ คุณควรรายงานการเปลี่ยนแปลงใดๆ ในสถานะ "ออนไลน์" ของอุปกรณ์ด้วย
โปรดทราบว่าฉากไม่มีสถานะ อย่างไรก็ตาม การดำเนินการเหล่านี้อาจส่งผลให้อุปกรณ์มีสถานะเปลี่ยนแปลง หากอุปกรณ์ใดใน Google Home Graph มีสถานะเปลี่ยนแปลง โปรดรายงานกลับมา
ถาม: สถานะรายงานต้องส่งการประทับเวลาไหม
ตอบ: เราไม่จำเป็นต้องใช้การประทับเวลา เนื่องจากสถานะล่าสุดที่ส่งจะลบล้างการเรียกก่อนหน้านี้
ถาม: ฉันต้องรายงานสถานะแยกต่างหากไหมหากส่งสถานะใน Query และ/หรือ Execute อยู่แล้ว
ตอบ: Home Graph จะจัดเก็บเฉพาะสถานะที่ส่งผ่านReport Stateเท่านั้น สถานะที่แสดงผลเป็นการตอบสนองต่อ Intent ประเภท 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 สำหรับข้อผิดพลาดนี้ ดูข้อมูลเพิ่มเติมได้ที่ข้อผิดพลาดและข้อยกเว้น