בקשה לסנכרון

התכונה 'בקשת סנכרון' מפעילה בקשה של SYNC למילוי ההזמנות לכל משתמש Google במכשירים שצוינו איש הקשר agentUserId משויך אליהם (שאליו אתם נשלח בבקשת הסנכרון המקורית). כך אפשר לעדכן מכשירים בלי לבטל את הקישור של החשבון ולקשר אותו מחדש. כל המשתמשים המקושרים לקמפיין הזה יקבל בקשת SYNC.

צריך להפעיל בקשת SYNC:

  • אם המשתמש מוסיף מכשיר חדש.
  • אם המשתמש מסיר מכשיר קיים.
  • אם המשתמש משנה שם של מכשיר קיים.
  • אם אתם מטמיעים סוג מכשיר חדש או תכונה חדשה, או מוסיפים תכונה חדשה במכשיר.

שנתחיל?

כדי ליישם את בקשת הסנכרון, יש לבצע את השלבים הבאים:

הפעלת Google Home Graph API

  1. ברכיב Google Cloud Console, עוברים לדף Home Graph API.

    לדף Home Graph API
  2. צריך לבחור את הפרויקט שתואם למזהה הפרויקט ב-smart home.
  3. לוחצים על הפעלה.

יצירת מפתח לחשבון שירות

כדי ליצור מפתח לחשבון שירות מ-Google Cloud Console, פועלים לפי ההוראות הבאות:

הערה: חשוב לוודא שאתם משתמשים בפרויקט GCP הנכון בזמן ביצוע את השלבים הבאים. זהו הפרויקט שתואם למזהה הפרויקט ב-smart home.
  1. באפליקציית Google Cloud Console, עוברים לדף Create service account key.

    כניסה לדף Create Service Account Key
  2. מהרשימה Service Account, בוחרים חשבון שירות חדש.
  3. כותבים שם בשדה Service account name.
  4. מזינים מזהה בשדה Service account ID.
  5. ברשימה Role בוחרים באפשרות Service Accounts > יצירת אסימונים בחשבון שירות.

  6. בשדה Key type, בוחרים באפשרות JSON.

  7. לוחצים על יצירה. קובץ JSON שמכיל את המפתח שלכם הורדות למחשב שלך.

שליחת קריאה ל-API

HTTP

ב-Home Graph API יש נקודת קצה (endpoint) מסוג HTTP

  1. משתמשים בקובץ JSON של חשבון השירות שהורדתם כדי ליצור קובץ JSON Web אסימון (JWT). מידע נוסף זמין במאמר הבא: אימות באמצעות חשבון שירות.
  2. קבלת אסימון גישה מסוג OAuth 2.0 עם היקף הרשאות אחד (https://www.googleapis.com/auth/homegraph) באמצעות oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. יוצרים את בקשת ה-JSON עם התג agentUserId. הנה דוגמה לבקשת JSON ל'בקשת סנכרון':
  5. {
      "agentUserId": "user-123"
    }
    
  6. לשלב את ה-JSON של 'בקשת סנכרון' עם האסימון ב-HTTP POST בקשה לנקודת הקצה של Google Home Graph. לפניכם דוגמה לאופן שבו לבצע את הבקשה בשורת הפקודה באמצעות curl, כמו בדיקה:
  7. 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

  1. מורידים את ההגדרה של שירות מאגר נתונים זמני של פרוטוקולים ל-Home Graph API.
  2. יש לעיין במסמכי התיעוד למפתחים בנושא gRPC כדי ליצור מודלים של לקוחות (stubs) עבור אחת מהשפות הנתמכות.
  3. מפעילים את השיטה RequestSync.

Node.js

לקוח Node.js של Google APIs מספק קישורים ל-Home Graph API.

  1. מפעילים את השירות google.homegraph באמצעות Application Default Credentials.
  2. מפעילים את ה-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.

  1. מאתחלים את HomeGraphApiService באמצעות Application Default Credentials.
  2. מפעילים את השיטה 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.