คำถามที่พบบ่อยเกี่ยวกับสมาร์ทโฮม

ทั่วไป

ถาม: เราควรติดตั้งใช้งานโครงสร้างพื้นฐานการจำหน่ายแบบระบบคลาวด์ต่อระบบคลาวด์ที่ใดและในภาษาใด

ตอบ: คุณติดตั้งใช้งานโครงสร้างพื้นฐานในแพลตฟอร์มและภาษาใดก็ได้ตราบใดที่รองรับ 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 สำหรับข้อผิดพลาดนี้ ดูข้อมูลเพิ่มเติมได้ที่ข้อผิดพลาดและข้อยกเว้น