Report State היא תכונה חשובה שמאפשרת
Home הפעולה מדווחת באופן יזום על הסטטוס העדכני ביותר של
המכשיר של המשתמש חזרה אל Google Home Graph במקום להמתין
Intent מסוג QUERY
.
Report State מדווח ל-Google על המצבים של מכשירי המשתמשים
עם agentUserId
שצוין המשויך אליהם (נשלח במקור
בקשת SYNC
). כשGoogle Assistant רוצה לבצע פעולה
שדורש הבנה של המצב הנוכחי של המכשיר, הוא יכול פשוט לחפש
להעלות את פרטי המדינה בקובץ Home Graph
להנפקת הכוונה מסוג QUERY
לעננים שונים של צד שלישי לפני הנפקת
Intent מסוג EXECUTE
.
בלי Report State, בהינתן נורות מכמה ספקים במדינות
בסלון, הפקודה Ok Google, lighten my living room (הבהרה לסלון) דורשת.
פתרון של כמה קובצי Intent של QUERY
שנשלחים למספר עננים, בניגוד
פשוט לחפש את ערכי הבהירות הנוכחיים על סמך
שדווחו בעבר. כדי ליהנות מחוויית המשתמש הטובה ביותר,
האפליקציה Assistant צריכה להיות במצב הנוכחי של המכשיר,
ללא צורך בנסיעה הלוך ושוב למכשיר.
לאחר ה-SYNC
הראשוני של מכשיר, הפלטפורמה שולחת Intent מסוג QUERY
שאוסף את מצב המכשיר כדי לאכלס את Home Graph.
לאחר מכן, Home Graph שומר רק את המצב
נשלח עם Report State.
כשמתקשרים אל Report State, חשוב לציין את כל הפרטים
על התכונה של מאפיין נתון. Home Graph מעדכנת מצבים
לכל תכונה ומחליפה את כל הנתונים של אותה תכונה כאשר
מתבצעת שיחת Report State. לדוגמה, אם אתם מדווחים
של ה-method StartStop, של המטען הייעודי (payload)
צריך לכלול ערכים גם ל-isRunning
וגם ל-isPaused
.
שנתחיל?
כדי להטמיע את Report State צריך לבצע את השלבים הבאים:
הפעלת Google Home Graph API
-
ברכיב Google Cloud Console, עוברים לדף Home Graph API.
לדף Home Graph API - צריך לבחור את הפרויקט שתואם למזהה הפרויקט ב-smart home.
- לוחצים על הפעלה.
יצירת מפתח לחשבון שירות
כדי ליצור מפתח לחשבון שירות מ-Google Cloud Console, פועלים לפי ההוראות הבאות:
-
באפליקציית Google Cloud Console, עוברים לדף Create service account key.
כניסה לדף Create Service Account Key - מהרשימה Service Account, בוחרים חשבון שירות חדש.
- כותבים שם בשדה Service account name.
- מזינים מזהה בשדה Service account ID.
ברשימה Role בוחרים באפשרות Service Accounts > יצירת אסימונים בחשבון שירות.
בשדה Key type, בוחרים באפשרות JSON.
- לוחצים על יצירה. קובץ JSON שמכיל את המפתח שלכם הורדות למחשב שלך.
שליחת קריאה ל-API
בוחרים אפשרות מהכרטיסיות הבאות:
HTTP
השדה Home Graph מספק נקודת קצה (endpoint) של HTTP
- משתמשים בקובץ JSON של חשבון השירות שהורדתם כדי ליצור קובץ JSON Web אסימון (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 כדי ליצור מודלים של לקוחות (stubs) עבור אחת מהשפות הנתמכות.
- קוראים ל-method ReportStateAndNotification.
Node.js
לקוח Google APIs Node.js מספק קישורים עבור ה-API של Home Graph.
- מפעילים את השירות
google.homegraph
באמצעות Application Default Credentials. - מפעילים את השיטה
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
ספריית הלקוח של Home Graph API ל-Java מספקת קישורים ל-Home Graph API.
- מאתחלים את
HomeGraphApiService
באמצעות Application Default Credentials. - מפעילים את השיטה
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
מרכז הבקרה.
פריסת מרכז הבקרה של מצב הדוח
לאחר קבלת המפתח של חשבון השירות ו-Agent User ID לפרויקט,
להוריד ולפרוס את הגרסה האחרונה מ-
Report State
מרכז הבקרה
לאחר הורדת הגרסה העדכנית ביותר, יש לפעול לפי ההוראות של
כלל קובץ README.MD
.
אחרי שפורסים את מרכז הבקרה של Report State, את מרכז השליטה מכתובת האתר הבאה (יש להחליף את 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, ותקין בטיפול בכוונות ניתוק.