درخواست همگام‌سازی

«درخواست همگام‌سازی» برای هر کاربر Google که دستگاه‌هایش agentUserId مشخص‌شده را داشته باشند (که در درخواست SYNC اصلی ارسال کرده‌اید)، درخواست SYNC را برای تحقق شما راه‌اندازی می‌کند. این کار به شما امکان می‌دهد دستگاه‌های کاربران را بدون لغو پیوند و پیوند مجدد حسابشان به‌روز کنید. همه کاربران پیوندشده به این شناسه، درخواست SYNC دریافت خواهند کرد.

باید درخواست SYNC را راه‌اندازی کنید:

  • اگر کاربر دستگاه جدیدی اضافه کند.
  • اگر کاربر دستگاه موجودی را بردارد.
  • اگر کاربر نام دستگاه موجودی را تغییر دهد.
  • اگر نوع دستگاه یا مشخصه جدیدی را پیاده‌سازی کنید یا ویژگی دستگاه جدیدی را اضافه کنید.

شروع کنید

برای پیاده‌سازی «درخواست همگام‌سازی»، این مراحل را دنبال کنید:

فعال کردن Google HomeGraph API

  1. در Google Cloud Console، به صفحه HomeGraph API بروید.

    رفتن به صفحه HomeGraph API
  2. پروژه‌ای را که با شناسه پروژه smart home شما مطابقت دارد انتخاب کنید.
  3. روی فعال کردن کلیک کنید.

ایجاد کردن کلید حساب سرویس

برای تولید کلید حساب سرویس از Google Cloud Console، این دستورالعمل‌ها را دنبال کنید:

توجه: مطمئن شوید که هنگام انجام این مراحل از پروژه GCP صحیح استفاده می‌کنید. این پروژه‌ای است که با شناسه پروژه smart home شما مطابقت دارد.
  1. در Google Cloud Console، به صفحه حساب‌های سرویس بروید.

    به صفحه «حساب‌های سرویس» بروید.

    شاید لازم باشد پروژه‌ای را انتخاب کنید تا به صفحه «حساب‌های سرویس» هدایت شوید.

  2. روی ایجاد حساب سرویس کلیک کنید.

  3. در فیلد نام حساب سرویس، نامی وارد کنید.

  4. در فیلد شناسه حساب سرویس، شناسه‌ای وارد کنید.

  5. در فیلد شرح حساب سرویس، شرحی وارد کنید.

  6. روی ایجاد و ادامه کلیک کنید.

  7. از منوِ کرکره‌ای نقش، حساب‌های سرویس > ایجادکننده شناسه توکن OpenID Connect حساب سرویس را انتخاب کنید.

  8. روی ادامه کلیک کنید.

  9. روی تمام کلیک کنید.

  10. حساب سرویسی را که به‌تازگی ایجاد کرده‌اید از فهرست حساب‌های سرویس انتخاب کنید و مدیریت کلیدها را از منوِ کنش‌ها انتخاب کنید.

  11. افزودن کلید > ایجاد کلید جدید را انتخاب کنید.

  12. برای نوع کلید، گزینه JSON را انتخاب کنید.

  13. روی ایجاد کردن کلیک کنید. فایل JSON حاوی کلیدتان در رایانه بارگیری می‌شود.

برای دستورالعمل‌های دقیق و اطلاعات درباره ایجاد کلیدهای حساب سرویس، به ایجاد و حذف کلیدهای حساب سرویس در سایت راهنمای کنسول Google Cloud مراجعه کنید.

فراخوانی میانای برنامه‌سازی کاربردی

HTTP

Home Graph API یک نقطه پایان HTTP ارائه می‌دهد

  1. از فایل JSON حساب سرویس بارگیری‌شده برای ایجاد «نشان وب JSON» (JWT) استفاده کنید. برای اطلاعات بیشتر، به اصالت‌سنجی بااستفاده از حساب سرویس مراجعه کنید.
  2. بااستفاده از oauth2l، کد دسترسی OAuth 2.0 را با دامنه https://www.googleapis.com/auth/homegraph دریافت کنید:
  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 یک نقطه پایانی gRPC ارائه می‌دهد

  1. تعریف سرویس میان‌گیری پروتکل را برای Home Graph API دریافت کنید.
  2. برای تولید کدهای آماده کارخواه برای یکی از زبان‌های پشتیبانی‌شده، اسناد توسعه‌دهنده gRPC را دنبال کنید.
  3. روش RequestSync را فراخوانی کنید.

Node.js

Google APIs Node.js Client برای Home Graph API اتصال فراهم می‌کند.

  1. سرویس google.homegraph را بااستفاده از اعتبارنامه پیش‌فرض برنامه مقداردهی اولیه کنید.
  2. روش 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
  }
});
    

جاوا

کتابخانه کارخواه HomeGraph API برای Java اتصال‌هایی برای Home Graph API ارائه می‌دهد.

  1. HomeGraphApiService را بااستفاده از اعتبارنامه پیش‌فرض برنامه مقداردهی اولیه کنید.
  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 را پردازش کند زیرا هنگام بازآوری کردن کد خطایی رخ داد. مطمئن شوید که نقطه پایانی OAuth شما به‌درستی به درخواست‌های ژتون بازآوری پاسخ می‌دهد و وضعیت پیوند حساب کاربر را بررسی کنید.
  • 404 Not Found - منبع درخواستی پیدا نشد اما ممکن است در آینده دردسترس قرار گیرد. معمولاً این یعنی حساب کاربر به Google پیوند نشده است یا agentUserId نامعتبر دریافت کرده‌ایم. مطمئن شوید agentUserId با مقدار ارائه‌شده در پاسخ SYNC شما مطابقت داشته باشد و هدف‌های DISCONNECT را به‌درستی مدیریت کنید.
  • 429 Too Many Requests - حداکثر تعداد درخواست‌های همگام‌سازی همزمان برای agentUserId داده‌شده فراتر رفته است. فراخواننده فقط می‌تواند یک درخواست همگام‌سازی هم‌زمان صادر کند، مگراینکه پرچم async روی درست تنظیم شده باشد.