ทั่วไป
คำถาม: เราควรนำโครงสร้างพื้นฐานการดำเนินการตามคำสั่งซื้อของ Actions on Google ไปใช้ในภาษาใดและเป็นภาษาใด
ตอบ: ตราบใดที่รองรับ SSL (TLS) และ OAuth 2.0 ที่ทันสมัย คุณก็จะใช้โครงสร้างพื้นฐานในแพลตฟอร์มใดก็ได้และภาษาที่คุณเลือก เราขอแนะนำให้คุณติดตั้งใช้งานโครงสร้างพื้นฐานที่เหลือให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อปรับปรุงความเสถียรและลดเวลาในการตอบสนองสำหรับการดำเนินการกับอุปกรณ์ของผู้ใช้จริง
ถาม: รหัสอุปกรณ์ต้องไม่ซ้ำกันหรือไม่
ตอบ: รหัสต้องไม่ซ้ำกัน หากคุณไม่มีรหัสที่ไม่ซ้ำกันในบริการ รหัสต้องไม่ซ้ำกันอย่างน้อยในระดับต่อผู้ใช้ สมมติว่าผู้ใช้รายหนึ่งมีบ้านหลายหลัง ซึ่งบ้านทั้ง 2 หลังมีการผสานรวมกับผู้ใช้รายเดียวกัน การขอให้เปิดไฟในบ้านหลังหนึ่งไม่ควรเปิดไฟที่มีรหัสเดียวกันในบ้านหลังอื่น
ถาม: ชื่ออุปกรณ์ต้องไม่ซ้ำกันใช่ไหม
ตอบ: ชื่อไม่จำเป็นต้องไม่ซ้ำกัน แม้เมื่อเวลาผ่านไป เราอาจส่งเสริมให้ผู้ใช้ปรับปรุงการตั้งชื่อที่ไม่ดีหลังการตั้งค่า เพื่อประสบการณ์ของผู้ใช้ที่ดีขึ้น
นี่คือคู่มือการตั้งชื่อฉบับย่อ
- ชื่อควรเป็นข้อความที่ผู้คนสามารถพูดได้จริงๆ
- เรารู้จักสตริงย่อย ดังนั้นหากคุณมี "แสงสีอ่อน" เราจึงจะตอบว่า "แสงสีอ่อน" ด้วย
- เราขอแนะนำให้ใช้ชื่อที่สื่อความหมายสำหรับผลิตภัณฑ์และชื่อที่ผู้ใช้กำหนดอย่างน้อย 1 ชื่อ
- ผู้ใช้ไม่จำเป็นต้องตั้งชื่อห้องสำหรับหลอดไฟ เพราะเราควรมีชื่อไม่ซ้ำกันต่อห้อง แต่สามารถใช้รูปพหูพจน์เพื่อสั่งงานทุกอย่างได้ (เช่น หลอดไฟสองดวงในออฟฟิศคือ 'แสงเหนือ' และ 'แสงตะวันออก' แต่สามารถใช้คำสั่งเป็น "ไฟ") ก็ได้
ถาม: สถานะของอุปกรณ์ได้รับการอัปเดตบ่อยเพียงใด
ตอบ: ระบบจะดึงข้อมูลสถานะชั่วคราวตาม QUERY หรือ EXECUTE ซึ่งเป็นการดำเนินการที่ผู้ใช้เป็นผู้เริ่ม หากผู้ใช้ถามว่า "ไฟเปิดอยู่ไหม" หรือต้องการเพิ่มความสว่าง เราจะต้องใช้ข้อความค้นหาเพื่อให้ทราบสถานะปัจจุบัน
ถาม: คุณอัปเดต Home Graph โดยตรงด้วยสถานะปัจจุบันของอุปกรณ์ได้ไหม
ตอบ: ใช่ ใช้การเรียก API Report State
การลิงก์บัญชีและ OAuth
ถาม: เราต้องทำการลิงก์บัญชีไหม
ตอบ: ใช่ ต้องมีการลิงก์บัญชีเพื่อเชื่อมต่ออุปกรณ์ของผู้ใช้กับบริการระบบคลาวด์ของผู้ให้บริการ
ถาม: สำหรับ OAuth เราจะหมดอายุโทเค็นเพื่อการเข้าถึงทุก 15.213 ชั่วโมงใช่ไหม
ตอบ: ใช่ แต่โปรดทดสอบโดยใช้เวลาหมดอายุที่ค่อนข้างสั้น เช่น 10-20 นาที ไคลเอ็นต์ OAuth ของเราควรรีเฟรชโทเค็นตามความจำเป็น และการทดสอบโดยใช้เวลาหมดอายุสั้นๆ จะพิสูจน์ว่าได้ผล
ความตั้งใจ
ถาม: SYNC จะเกิดขึ้นเมื่อใด
คำตอบ: การซิงค์จะเกิดขึ้นทันทีหลังจาก OAuth เสร็จสมบูรณ์ และหลังจากการเรียกใช้ Request Sync
ถาม: ทำไม SYNC
ถึงไม่ทำงาน
ตอบ: มีสาเหตุที่พบบ่อยหลายประการที่ทำให้การดำเนินการนี้ไม่สำเร็จ
คุณส่งประเภทอุปกรณ์ผิดประเภท
- ตัวอย่างเช่น เราคาดว่าจะได้รับ
action.devices.types.LIGHT
แต่คุณส่งaction.devices.types.Light
- ตัวอย่างเช่น เราคาดว่าจะได้รับ
คุณกำลังส่งประเภทอุปกรณ์ที่ไม่รองรับ
- ตัวอย่างเช่น คุณส่ง
action.devices.types.FLASHLIGHT
ซึ่งนี่ไม่ใช่ สิ่งที่เรารองรับ
- ตัวอย่างเช่น คุณส่ง
คุณกำลังส่งฟิลด์ที่ไม่ถูกต้อง/ไม่รองรับ
- เช่น คุณมีช่องเวอร์ชันหรือช่องอื่นที่ไม่ได้อยู่ในข้อกำหนดของเรา
เกิดปัญหาด้านการจัดรูปแบบอื่นๆ กับการตอบสนองการซิงค์
- โปรดตรวจสอบวงเล็บของคุณ
คุณกำลังประสบปัญหาการลิงก์บัญชี
- โปรดยืนยันว่าคุณได้รับโทเค็นเพื่อการเข้าถึงที่ถูกต้องในส่วนหัว Auth ของคำขอ SYNC
คุณใช้เวลาตอบรับคำขอซิงค์นานเกินไป
- โปรดยืนยันว่าคุณตอบกลับคำขอซิงค์ภายใน 5 วินาที
ถาม: การตอบกลับที่ "รอดำเนินการ" ใช้ได้ไหม
ตอบ: เราขอแนะนำเป็นอย่างยิ่งให้ดำเนินการในการตอบกลับว่าสำเร็จ/ไม่สำเร็จ แทนที่จะตอบกลับว่า "รอดำเนินการ" หากอุปกรณ์ของคุณพร้อมใช้งานแบบเรียลไทม์ โปรดติดต่อหากคุณรู้สึกว่าต้องการการตอบกลับ "รอดำเนินการ" เราทราบว่าอุปกรณ์ที่ไม่ใช่แบบเรียลไทม์พลังงานต่ำบางรุ่นอาจต้องใช้การตอบกลับที่รอดำเนินการและรูปแบบการดำเนินการแบบอะซิงโครนัส
การทดสอบและการส่ง
ถาม: เราจะตั้งค่าสภาพแวดล้อมสำหรับการทดลองใช้ได้ไหม
คำตอบ: ใช่ โปรดสร้างโปรเจ็กต์แยกต่างหากและตั้งค่าสำหรับโปรเจ็กต์นั้น คุณจะสร้างโปรเจ็กต์ได้มากเท่าที่ต้องการเพื่อแมปกับขั้นตอนและโครงสร้างพื้นฐานในการพัฒนา
ถาม: ฉันต้องอัปเดตโปรเจ็กต์ฉบับร่างบ่อยแค่ไหน
ตอบ: ต้องรีเฟรชโปรเจ็กต์ฉบับร่างทุก 3 วัน หลังจากผ่านไป 3 วัน ตัวแทนการทดสอบจะหายไปจากการตั้งค่า Mobile-HomeControl หากพบเหตุการณ์ดังกล่าว ให้คลิกปุ่มทดสอบฉบับร่างของโปรเจ็กต์ใน Actions on Google Console
ถาม: ฉันทดสอบในอุปกรณ์มากกว่า 1 เครื่องพร้อมกันได้ไหม
ตอบ: Actions on Google รองรับ AP แบบ "ลองใช้บนอุปกรณ์" เพียงครั้งเดียวเท่านั้น หากคุณใช้ทดสอบฉบับร่างเป็นครั้งแรกใน "ap1" และซิงค์อุปกรณ์ (โดยไม่ต้องยกเลิกการลิงก์ ap1) ให้เรียกใช้ทดสอบฉบับร่าง "ap2" โดยตรง "ap1" จะหายไปจากmobile-HomeControl-settings หากต้องการแก้ไขปัญหานี้ ให้เรียกใช้ทดสอบฉบับร่างบน "ap1" อีกครั้ง และคุณยกเลิกการลิงก์ "ap1" ได้ในการตั้งค่า
โปรดทราบว่าแพ็กเกจการดำเนินการเดียวนี้จะพร้อมใช้งานสำหรับอุปกรณ์ Google Assistant ทุกเครื่องของผู้ใช้ เช่น คุณอาจทดสอบการผสานรวมฮาร์ดแวร์ใหม่ทั้งบนลำโพงที่สั่งงานด้วยเสียงและ Android
คำถาม: การส่งโครงการ Actions ของฉันถูกปฏิเสธเนื่องจากชื่อหรือการออกเสียง ฉันจำเป็นต้องเปลี่ยนแปลงอะไรบ้าง
ตอบ: เราตรวจสอบการออกเสียงชื่อเพื่อให้แน่ใจว่าไม่มีการดำเนินการอื่นในอนาคตที่ใช้ชื่อการออกเสียงชื่อนั้น และชื่อนี้ตรงกับชื่อที่แสดง (เพื่อป้องกันข้อมูลที่ไม่ตรงกันซึ่งส่งผลต่อการจดทะเบียนชื่อในอนาคต)
หากต้องการใช้ชื่อเดิมต่อไป โปรดติดต่อทีมสนับสนุนเพื่อให้ทีมเสียงพูดเพิ่มชื่อที่แสดงไปยัง Assistant
ถาม: เกิดอะไรขึ้นในส่วนระบบควบคุมอุปกรณ์ในบ้านของแอป Google Home การดำเนินการของฉันไม่แสดง
ตอบ: ปัญหาอาจเกิดจากสาเหตุใดสาเหตุหนึ่งต่อไปนี้
- คุณไม่ได้คลิกปุ่มทดสอบฉบับร่างสำหรับโปรเจ็กต์ในActions Console
- คุณมีการดำเนินการในการทดสอบในอุปกรณ์ได้ครั้งละ 1 รายการเท่านั้น
- ในActions Console ให้ไปที่แท็บเครื่องมือจำลองของโปรเจ็กต์การดำเนินการของคุณ แล้วสลับปุ่ม "ใช้งานอยู่/ไม่ได้ใช้งาน" เป็น "ไม่ใช้งาน" ตามด้วย "ใช้งานอยู่" อีกครั้ง
- หากนี่คือการดำเนินการที่มีการแชร์ให้กับคุณ โปรดตรวจสอบว่าได้ปฏิบัติตามวิธีการแชร์ทั้งหมดแล้ว
- การทดสอบบนอุปกรณ์จะหมดอายุหลังจากผ่านไป 3 วัน คลิกปุ่มทดสอบฉบับร่างสำหรับโปรเจ็กต์ใน Actions Console
ถาม: ทำไมฉันจึงพบข้อผิดพลาดเมื่อฉันพิมพ์ "คุยกับ <my agent name>
" ในเครื่องมือจำลอง
คำตอบ: การดำเนินการของสมาร์ทโฮมจะไม่ใช้ชื่อการเรียกใช้ หากต้องการทดสอบในเครื่องมือจำลอง คุณต้องลิงก์บัญชีในโทรศัพท์ Android หรือโทรศัพท์ iOS ที่ติดตั้ง Google Home app (GHA) นอกจากนี้ คุณต้องมีอุปกรณ์ที่เชื่อมโยงกับบัญชีก่อนที่จะเรียกใช้การลิงก์บัญชี
ถาม: ทำไมฉันจึงพบข้อผิดพลาดเมื่อพยายามใช้เครื่องจำลอง
ตอบ: คุณใช้เครื่องจำลองเพื่อทดสอบการดำเนินการ smart home ที่ทำให้ใช้งานได้แล้ว หากต้องการใช้เครื่องจำลองสําหรับโปรเจ็กต์ระบบอัตโนมัติในบ้านที่อยู่ระหว่างการใช้งาน คุณจะต้องสร้างโปรเจ็กต์ใหม่เพื่อวัตถุประสงค์ในการทดสอบ
สถานะรายงาน
ถาม: มีข้อกําหนดเบื้องต้นในการใช้สถานะรายงานไหม
ตอบ: โปรเจ็กต์ต้องใช้ Smart Home API ซึ่งรองรับ OAuth2 และต้องมีลักษณะที่มีสถานะที่ต้องการรายงาน
คำถาม: เราต้องรายงานสถานะในอุปกรณ์บ่อยแค่ไหน
ตอบ: Google สนใจในการเปลี่ยนแปลงและสถานะเทอร์มินัล แต่หากมีการเปลี่ยนแปลงสถานะหลายอย่างในช่วงเวลาสั้นๆ (เช่น ผู้ใช้เปิดและปิดตู้เย็น 3 ครั้งใน 1 นาที หรือเลื่อนเครื่องหรี่แสงไฟ) เราจะต้องรายงานเฉพาะสถานะสุดท้ายเท่านั้น
ถาม: ต้องส่งสถานะอุปกรณ์แบบเต็มเมื่อเรียกสถานะรายงานไหม
ตอบ: ระบบไม่รองรับการอัปเดตสถานะบางส่วน ดังนั้นการเรียก Report State ควรรวมข้อมูลทั้งหมดสำหรับลักษณะเฉพาะที่มีการอัปเดตไว้เสมอ หากลักษณะ 2 ประการทำให้เกิดความไม่สอดคล้องกัน ควรรายงานร่วมกัน
ถาม: Google จะสืบค้นข้อมูลสถานะในอุปกรณ์ของฉัน (กล่าวคือแบบสำรวจอุปกรณ์) ได้ไหม
ตอบ: นี่เป็นกลไกสำรองที่เราไม่แนะนำให้ หากเราจำเป็นต้องย้อนกลับไปใช้การสำรวจอุปกรณ์บ่อยๆ สำหรับผู้ใช้เหล่านั้น เราจะรับประกันไม่ได้ว่าภาระงานที่เพิ่มขึ้นจะเป็นอย่างไร ความต้องการมาจากแพลตฟอร์มภาพแบบใหม่ นอกเหนือจากปัญหาการโหลดที่ไม่ทราบสาเหตุแล้ว จะทำให้ประสบการณ์ของผู้ใช้แย่ลง เราคิดว่า Report State มีความสำคัญอย่างยิ่งต่อแพลตฟอร์มนี้
ถาม: ปัจจุบันมีคุณสมบัติใดบ้างที่รองรับสถานะรายงาน
ตอบ: รองรับลักษณะสาธารณะทั้งหมดที่มีรัฐเชื่อมโยงอยู่ คุณควรรายงานการเปลี่ยนแปลงสถานะออนไลน์ของอุปกรณ์ด้วย
โปรดทราบว่าฉากจะไม่มีสถานะ แต่อาจทำให้เกิดการเปลี่ยนแปลงสถานะของอุปกรณ์ หากอุปกรณ์ใน Google Home Graph มีสถานะเปลี่ยนแปลง คุณจะต้องรายงานกลับมา
ถาม: สถานะรายงานจำเป็นต้องมีการส่งการประทับเวลาไหม
ตอบ: เราไม่ได้กำหนดการประทับเวลาไว้ เนื่องจากสถานะล่าสุดที่ส่งจะลบล้างการเรียกใช้ก่อนหน้านี้
ถาม: ฉันต้องระบุสถานะรายงานแยกต่างหากไหม หากส่งสถานะนั้นในการค้นหาและ/หรือดำเนินการแล้ว
ตอบ: Home Graph จะจัดเก็บเฉพาะรัฐที่ส่งผ่าน Report State สถานะที่แสดงผลเป็นการตอบสนองต่อ Intent EXECUTE และ QUERY จะใช้เพื่อการพูดตอบผู้ใช้เท่านั้นและจะไม่มีการจัดเก็บ ดังนั้น ระบบจึงควรเรียก Report State แม้ว่าจะมีการส่งสถานะใหม่ของอุปกรณ์กลับมาเป็นการตอบสนองสำหรับ Intent EXECUTE หรือ QUERY แล้ว
ถาม: จะเกิดอะไรขึ้นหากไม่ได้ปรับใช้สถานะรายงานโดยสมบูรณ์ภายในกำหนดเวลาที่ระบุ
ตอบ: การดำเนินการนี้จะส่งผลให้ประสบการณ์ของผู้ใช้แย่ลง เช่น ใน GHA และแพลตฟอร์มภาพ ซึ่งหมายความว่าระบบจะส่ง Intent ของ QUERY จำนวนมากไปยังแบบสำรวจสำหรับรัฐ และเราไม่สามารถรับประกันได้ว่าสิ่งนี้จะสอดคล้องกับภาระงานเพิ่มเติมในระบบคลาวด์ของพาร์ทเนอร์หรือไม่
ถาม: ฉันจะทดสอบการใช้งานสถานะรายงานได้อย่างไร
ตอบ: ใช้มุมมองกราฟของ Home ซึ่งเป็นเครื่องมือทดสอบแบบบริการตนเองที่แสดงสถานะของอุปกรณ์ปัจจุบันที่จัดเก็บไว้ใน Home Graph
ถาม: เราจะใช้ requestId แบบสุ่มสำหรับสถานะรายงานได้ไหม
ตอบ: เราขอแนะนำให้พาร์ทเนอร์ใช้รหัส requestId เดียวกันที่ได้รับจากคำขอ "EXECUTE" หาก Report State ถูกเรียกใช้โดยคำขอ "EXECUTE" มิเช่นนั้นคุณอาจใช้ requestId แบบสุ่มได้
คำถาม: หากผู้ใช้มีอุปกรณ์หลายเครื่องและหนึ่งในนั้นเปลี่ยนสถานะ เราจำเป็นต้องรายงานสถานะล่าสุดของอุปกรณ์ทั้งหมดหรือไม่
คำตอบ: ไม่ได้ คุณต้องรายงานสถานะของอุปกรณ์ดังกล่าวเท่านั้น
แนวทางปฏิบัติแนะนำ
ถาม: เวลาในการตอบสนองประเภทใดที่ยอมรับได้
ตอบ: ควรสั้นกว่า 200 มิลลิวินาที แต่ระหว่าง 2-5 วินาทีถือว่าพอใช้ หากเวลาในการตอบสนองนานกว่า 5 วินาที โปรดติดต่อเรา
คำถาม: ฉันจะทำให้ลำโพงที่สั่งงานด้วยเสียงตอบสนองได้อย่างถูกต้องเมื่อออฟไลน์ได้อย่างไร
ตอบ: เปลี่ยนสถานะออฟไลน์สำหรับอุปกรณ์ที่ออฟไลน์อยู่ เราแสดงผล "ไม่พร้อมใช้งานในขณะนี้" เป็น TTS สำหรับข้อผิดพลาดนี้ ดูข้อมูลเพิ่มเติมได้ที่ข้อผิดพลาดและข้อยกเว้น