Report State เป็นฟีเจอร์สำคัญที่ช่วยให้
Home การดำเนินการรายงานสถานะล่าสุดของ
อุปกรณ์ของผู้ใช้กลับไปที่ Google Home Graph แทนที่จะรอ
QUERY
Intent
Report State รายงานให้ Google ทราบสถานะของอุปกรณ์ของผู้ใช้
พร้อมด้วย agentUserId
ที่ระบุไว้ซึ่งเชื่อมโยงกับบุคคลเหล่านี้ (ส่งในต้นฉบับ
SYNC
) เมื่อ Google Assistant ต้องการดำเนินการ
ซึ่งจำเป็นต้องเข้าใจสถานะปัจจุบันของอุปกรณ์ ก็สามารถดู
เพิ่มข้อมูลรัฐในHome Graphแทน
ของการออกเจตนา QUERY
ให้แก่ระบบคลาวด์ต่างๆ ของบุคคลที่สามก่อนที่จะออก
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 Console ให้ไปที่หน้า HomeGraph API
ไปที่หน้า HomeGraph API - เลือกโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home
- คลิกเปิดใช้
สร้างคีย์บัญชีบริการ
โปรดทำตามวิธีการต่อไปนี้เพื่อสร้างคีย์บัญชีบริการจาก Google Cloud Console
-
ใน Google Cloud 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 Graph ลองดูตัวอย่างว่า
เพื่อสร้างคำขอในบรรทัดคำสั่งโดยใช้
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
ไคลเอ็นต์ Node.js ของ Google APIs ให้การเชื่อมโยงสำหรับ Home Graph API
- เริ่มต้นบริการ
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 ใช้งานได้
แดชบอร์ด
ใช้งานหน้าแดชบอร์ดสถานะของรายงาน
เมื่อคุณมีคีย์บัญชีบริการและรหัสผู้ใช้ตัวแทนสำหรับโปรเจ็กต์แล้ว
ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุดได้จาก
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 ของ ยกเลิกการเชื่อมต่อ