התכונה 'בקשת סנכרון' מפעילה בקשה של SYNC
למילוי ההזמנות לכל משתמש Google
במכשירים שצוינו
איש הקשר agentUserId
משויך אליהם (שאליו אתם
נשלח בבקשת הסנכרון המקורית). כך אפשר לעדכן מכשירים
בלי לבטל את הקישור של החשבון ולקשר אותו מחדש. כל המשתמשים המקושרים לקמפיין הזה
יקבל בקשת SYNC
.
צריך להפעיל בקשת SYNC
:
- אם המשתמש מוסיף מכשיר חדש.
- אם המשתמש מסיר מכשיר קיים.
- אם המשתמש משנה שם של מכשיר קיים.
- אם אתם מטמיעים סוג מכשיר חדש או תכונה חדשה, או מוסיפים תכונה חדשה במכשיר.
שנתחיל?
כדי ליישם את בקשת הסנכרון, יש לבצע את השלבים הבאים:
הפעלת 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 API יש נקודת קצה (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
{ "agentUserId": "user-123" }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:requestSync"
gRPC
ה-Home Graph API מספק נקודת קצה (endpoint) של gRPC
- מורידים את ההגדרה של שירות מאגר נתונים זמני של פרוטוקולים ל-Home Graph API.
- יש לעיין במסמכי התיעוד למפתחים בנושא gRPC כדי ליצור מודלים של לקוחות (stubs) עבור אחת מהשפות הנתמכות.
- מפעילים את השיטה RequestSync.
Node.js
לקוח Node.js של Google APIs מספק קישורים ל-Home Graph API.
- מפעילים את השירות
google.homegraph
באמצעות Application Default Credentials. - מפעילים את ה-method
requestSync
באמצעות RequestSyncDevicesRequest. היא מחזירהPromise
עם RequestSyncDevicesResponse ריק.
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.requestSync({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', async: false } });
Java
ספריית הלקוח של Home Graph API ל-Java מספקת קישורים ל-Home Graph API.
- מאתחלים את
HomeGraphApiService
באמצעות Application Default Credentials. - מפעילים את השיטה
requestSync
עםRequestSyncDevicesRequest
. הפונקציה מחזירה ערך ריק של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(); // Request sync. RequestSyncDevicesRequest request = new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false); homegraphService.devices().requestSync(request);
תגובות לשגיאות
כשנשלחת בקשה לסנכרון, יכול להיות שתתקבל אחת מתגובות השגיאה הבאות. התגובות האלה מגיעות בצורת קודי מצב של HTTP.
400 Bad Request
– השרת לא הצליח לעבד הבקשה שנשלחה על ידי הלקוח בגלל תחביר לא חוקי. סיבות נפוצות כוללים JSON שגוי או משתמשים ב-null
במקום ב-"" למחרוזת.403 Forbidden
- השרת לא הצליח לעבד את הבקשה עבור הנתוןagentUserId
עקב שגיאה בזמן רענון האסימון. מוודאים שנקודת הקצה (endpoint) של OAuth מגיבה כדי לרענן בקשות לאסימונים ולבדוק את קישור החשבונות של המשתמש בצורה נכונה הסטטוס.404 Not Found
– לא ניתן לבצע את המשאב המבוקש נמצא, אבל עשוי להיות זמין בעתיד. בדרך כלל המשמעות היא חשבון המשתמש אינו מקושר ל-Google או שקיבלנו חשבוןagentUserId
צריך לוודא שה-agentUserId
תואם לערך שצוין ב- התגובה SYNC, וזה בסדר בטיפול בכוונות ניתוק.429 Too Many Requests
– המספר המקסימלי של סנכרון בו-זמנית יש יותר מדי בקשות עבורagentUserId
הנתון. מתקשר/ת יכול לשלוח רק בקשת סנכרון אחת בו-זמנית, אלא אםasync
מוגדר כ-true.