Report State เป็นฟีเจอร์สําคัญที่ช่วยให้การดําเนินการ
Home รายงานสถานะของอุปกรณ์ของผู้ใช้กลับไปยัง
Google Home Graph
rather than waiting for a
QUERY
intent. ได้ในเชิงรุก
Report State รายงานสถานะของอุปกรณ์ของผู้ใช้ให้กับ Google ด้วยคําขอ agentUserId
ที่ระบุ (โดยใช้คําขอ SYNC
เดิม) เมื่อ
Google Assistant
wants to take an action
that requires understanding the current state of a device, it can simply look
up the state information in the
Home Graph instead
of issuing a QUERY
intent to various third-party clouds prior to issuing the
EXECUTE
intent.
หากไม่มี
Report State คําสั่งจากผู้ให้บริการหลายรายในห้องนั่งเล่น คําสั่ง Ok Google เพิ่มความสว่างให้ห้องนั่งเล่นของฉันจําเป็นต้องมีการแก้ไขข้อบกพร่องความตั้งใจ QUERY
หลายรายการที่ส่งไปยังระบบคลาวด์หลายรายการ แทนที่จะต้องค้นหาค่าความสว่างปัจจุบันตามที่เคยรายงานไว้ก่อนหน้านี้ เพื่อประสบการณ์ของผู้ใช้ที่ดีที่สุด
Assistant ต้องมีสถานะปัจจุบันของอุปกรณ์
โดยไม่ต้องมีการส่งไป-กลับอุปกรณ์
หลังจาก SYNC
เริ่มต้นสําหรับอุปกรณ์ แพลตฟอร์มจะส่ง Intent ของ QUERY
ที่รวบรวมสถานะของอุปกรณ์เพื่อป้อนข้อมูล
Home Graph
หลังจากจุดนี้
Home Graph จะจัดเก็บเฉพาะสถานะที่ส่ง
Report State
เมื่อโทรหา
Report State อย่าลืมให้ข้อมูลรัฐที่สมบูรณ์สําหรับลักษณะเฉพาะ
Home Graph จะอัปเดตสถานะสําหรับแต่ละลักษณะ และเขียนทับข้อมูลทั้งหมดสําหรับลักษณะนั้นเมื่อมีการเรียกใช้ Report State
ตัวอย่างเช่น หากคุณรายงานสถานะสําหรับลักษณะเฉพาะของ StartStop เพย์โหลดจะต้องมีค่าสําหรับทั้ง isRunning
และ isPaused
เริ่มต้นใช้งาน
หากต้องการใช้งาน Report State ให้ทําตามขั้นตอนต่อไปนี้
เปิดใช้ Google HomeGraph API
-
ใน Google Cloud Platform Console , go to the HomeGraph API page.
ไปที่หน้า HomeGraph API - เลือกโปรเจ็กต์ที่ตรงกับ smart home project ID.
- คลิกเปิดใช้
สร้างคีย์บัญชีบริการ
ทําตามวิธีการต่อไปนี้เพื่อสร้างคีย์บัญชีบริการจาก GCP Console
-
ใน GCP Console ให้ไปที่หน้าสร้างคีย์บัญชีบริการ
ไปที่หน้าสร้างคีย์บัญชีบริการ - จากรายการบัญชีบริการ ให้เลือกบัญชีบริการใหม่
- ป้อนชื่อในช่องชื่อบัญชีบริการ
- ป้อนรหัสในช่องรหัสบัญชีบริการ
จากรายการบทบาท ให้เลือกบัญชีบริการ > ผู้สร้างโทเค็นบัญชีบริการ
สําหรับประเภทคีย์ ให้เลือกตัวเลือก JSON
- คลิกสร้าง ไฟล์ JSON ที่มีการดาวน์โหลดคีย์ลงในคอมพิวเตอร์
เรียก API
เลือกตัวเลือกจากแท็บด้านล่าง
HTTP
Home Graph มีปลายทาง HTTP
- ใช้ไฟล์ JSON ของบัญชีบริการที่ดาวน์โหลดเพื่อสร้างโทเค็นเว็บ JSON (JWT) หากต้องการข้อมูลเพิ่มเติม โปรดดูการตรวจสอบสิทธิ์โดยใช้บัญชีบริการ
- รับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ที่มีขอบเขต
https://www.googleapis.com/auth/homegraph
โดยใช้ oauth2l ดังนี้ - สร้างคําขอ JSON ด้วย
agentUserId
ต่อไปนี้คือตัวอย่างคําขอ JSON สําหรับสถานะการแจ้งเตือนและการแจ้งเตือน - รวมสถานะรายงานและ JSON การแจ้งเตือนและโทเค็นในคําขอ HTTP POST ไปยังปลายทางกราฟของ Google Home ตัวอย่างวิธีสร้างคําขอในบรรทัดคําสั่งโดยใช้
curl
เป็นการทดสอบ
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "requestId": "123ABC", "agentUserId": "user-123", "payload": { "devices": { "states": { "light-123": { "on": true } } } } }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
gRPC
Home Graph มีปลายทาง gRPC
- ดูคําจํากัดความของบริการบัฟเฟอร์โปรโตคอลสําหรับ Home Graph API
- ทําตามเอกสารสําหรับนักพัฒนาซอฟต์แวร์ gRPC เพื่อสร้างสตอรี่ไคลเอ็นต์สําหรับภาษาที่รองรับ
- เรียกเมธอด ReportStateAndNotification
Node.js
ไคลเอ็นต์ Google API Node.js ให้การเชื่อมโยงสําหรับ API ของ Home Graph
- เริ่มต้นบริการ
google.homegraph
โดยใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน - เรียกเมธอด
reportStateAndNotification
ด้วย ReportStateAndNotificationRequest โดยจะแสดงPromise
ที่มี ReportStateAndNotificationResponse
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.reportStateAndNotification({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { states: { "PLACEHOLDER-DEVICE-ID": { on: true } } } } } });
Java
ไลบรารีของไคลเอ็นต์ HomeGraph API สําหรับ Java มีการเชื่อมโยงสําหรับ Home Graph API
- เริ่มต้น
HomeGraphApiService
โดยใช้ ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน - เรียกเมธอด
reportStateAndNotification
ด้วยReportStateAndNotificationRequest
โดยจะแสดงผลReportStateAndNotificationResponse
// Get Application Default credentials. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(List.of("https://www.googleapis.com/auth/homegraph")); // Create Home Graph service client. HomeGraphService homegraphService = new HomeGraphService.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("HomeGraphExample/1.0") .build(); // Build device state payload. Map<?, ?> states = Map.of("on", true); // Report device state. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states)))); homegraphService.devices().reportStateAndNotification(request); }
สถานะรายงานการทดสอบ
คุณต้องทดสอบReport State เพื่อเตรียมความพร้อมสําหรับการรับรอง
หากต้องการทําเช่นนี้ เราขอแนะนําให้ใช้เครื่องมือผู้มีสิทธิ์ดู Home Graph ซึ่งเป็นเว็บแอปแบบสแตนด์อโลนที่ไม่ต้องมีการดาวน์โหลดหรือติดตั้งใช้งาน
หน้าแดชบอร์ด Report State ยังใช้งานได้อยู่ แต่เลิกใช้งานแล้วและไม่รองรับแล้ว
หน้าแดชบอร์ดสถานะรายงาน
สิ่งที่ต้องดำเนินการก่อน
ก่อนที่จะทดสอบการดําเนินการได้ คุณต้องใช้คีย์บัญชีบริการและ agentUserId
หากมีคีย์บัญชีบริการอยู่แล้วและ
agentUserId
โปรดดูหัวข้อทําให้หน้าแดชบอร์ดใช้งานได้
Report State
รายการ
ทําให้หน้าแดชบอร์ดสถานะรายงานใช้งานได้
เมื่อคุณมีคีย์บัญชีบริการและ User Agent รหัสสําหรับโปรเจ็กต์แล้ว ให้ดาวน์โหลดและทําให้เวอร์ชันล่าสุดใช้งานได้จาก
Report State
หน้าแดชบอร์ด
เมื่อดาวน์โหลดเวอร์ชันล่าสุดแล้ว ให้ทําตามวิธีการจากไฟล์ README.MD
ที่รวมอยู่
หลังจากที่คุณทําให้หน้าแดชบอร์ด Report State ใช้งานได้แล้ว ให้เข้าถึงหน้าแดชบอร์ดจาก URL ต่อไปนี้ (แทนที่ your_project_id ด้วยรหัสโปรเจ็กต์
http://<your-project-id>.appspot.com
โดยทําตามขั้นตอนต่อไปนี้ในหน้าแดชบอร์ด
- เลือกไฟล์คีย์บัญชี
- เพิ่ม agentUserId
จากนั้นคลิกรายการ
อุปกรณ์ทั้งหมดอยู่ในรายการ เมื่อป้อนข้อมูลรายการแล้ว คุณสามารถใช้ปุ่มรีเฟรชเพื่ออัปเดตสถานะอุปกรณ์ หากสถานะอุปกรณ์มีการเปลี่ยนแปลง ระบบจะไฮไลต์แถวนั้นด้วยสีเขียว
การตอบกลับข้อผิดพลาด
คุณอาจได้รับการตอบกลับข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้เมื่อโทร Report State การตอบสนองเหล่านี้อยู่ในรูปแบบรหัสสถานะ HTTP
400 Bad Request
- เซิร์ฟเวอร์ไม่สามารถดําเนินการคําขอที่ไคลเอ็นต์ส่งเข้ามาได้ เนื่องจากมีไวยากรณ์ที่ไม่ถูกต้อง สาเหตุที่พบบ่อยมีดังนี้ JSON ที่มีรูปแบบไม่ถูกต้อง หรือใช้null
แทน "" สําหรับค่าสตริง404 Not Found
- ไม่พบทรัพยากรที่ขอ แต่อาจมีพร้อมใช้งานในอนาคต โดยทั่วไปหมายความว่าเราไม่พบอุปกรณ์ที่ขอ นอกจากนี้ยังอาจหมายความว่าบัญชีผู้ใช้ไม่ได้ลิงก์กับ Google หรือได้รับagentUserId
ที่ไม่ถูกต้อง ตรวจสอบว่าagentUserId
ตรงกับค่าที่ระบุไว้ในการตอบกลับ SYNC และคุณจัดการ Intent DISCONNECT อย่างเหมาะสม