اعلانها به Action smart home شما اجازه میدهند از Google Assistant برای برقراری ارتباط با کاربران درباره رویدادها یا تغییرات مهم مرتبط با دستگاه استفاده کند. میتوانید اعلانهایی را برای هشدار به کاربران در مورد رویدادهای بهموقع دستگاه، بهعنوان مثال زمانی که شخصی در درب منزل است، یا گزارش در مورد تغییر وضعیت دستگاه درخواستی، مانند زمانی که پیچ قفل در با موفقیت درگیر شده یا گیر کرده است، اجرا کنید.
اکشن smart home شما میتواند انواع اعلانهای زیر را برای کاربران ارسال کند:
اعلانهای پیشگیرانه : به کاربر از رویداد دستگاه smart home بدون هیچ درخواست قبلی از دستگاههای خود، مانند زنگ در، هشدار میدهد.
پاسخهای بعدی : تأیید موفقیت یا شکست درخواست فرمان دستگاه، برای مثال هنگام قفل کردن یک در. از این هشدارها برای دستورات دستگاه استفاده کنید که تکمیل آنها زمان بر است. پاسخهای پیگیری تنها زمانی پشتیبانی میشوند که درخواستهای فرمان دستگاه از بلندگوهای هوشمند و نمایشگرهای هوشمند ارسال شوند.
Assistant این اعلانها را بهعنوان اعلانهایی روی بلندگوهای هوشمند و نمایشگرهای هوشمند در اختیار کاربران قرار میدهد. اعلان های فعال به طور پیش فرض خاموش هستند. کاربران میتوانند همه اعلانهای فعال را از Google Home app (GHA) روشن یا خاموش کنند.
رویدادهایی که اعلانها را راهاندازی میکنند
وقتی رویدادهای دستگاه رخ میدهد، Action përmbush شما یک درخواست اعلان به Google ارسال میکند. ویژگیهای دستگاهی که Action smart home شما پشتیبانی میکند، تعیین میکند که چه نوع رویدادهای اعلان موجود است و دادههایی که میتوانید در آن اعلانها قرار دهید.
ویژگیهای زیر از اعلانهای فعال پشتیبانی میکنند:
صفت | رویدادها |
---|---|
ObjectDetection | اشیاء شناسایی شده توسط دستگاه، مانند زمانی که یک چهره شناخته شده در درب تشخیص داده می شود. به عنوان مثال: "آلیس و باب جلوی در هستند." |
RunCycle | دستگاه یک چرخه را کامل می کند. به عنوان مثال: "چرخه ماشین لباسشویی کامل شده است." |
SensorState | دستگاه وضعیت حسگر پشتیبانی شده را تشخیص می دهد. به عنوان مثال: "ردیاب دود دود را تشخیص می دهد." |
ویژگیهای زیر از پاسخهای بعدی پشتیبانی میکنند:
صفت | رویدادها |
---|---|
LockUnlock | وضعیت تکمیل و تغییر وضعیت پس از اجرای دستور action.devices.commands.LockUnlock دستگاه. به عنوان مثال: "درب ورودی قفل شده است" یا "درب ورودی گیر کرده است." |
NetworkControl | وضعیت تکمیل و تغییر وضعیت پس از اجرای فرمان action.devices.commands.TestNetworkSpeed دستگاه. به عنوان مثال: "تست سرعت شبکه شما به پایان رسیده است. سرعت دانلود در روتر آفیس در حال حاضر 80.2 کیلوبیت بر ثانیه و سرعت آپلود 9.3 کیلوبیت در ثانیه است." |
OpenClose | وضعیت تکمیل و تغییر وضعیت پس از اجرای دستور action.devices.commands.OpenClose دستگاه. به عنوان مثال: "درب ورودی باز شد" یا "درب ورودی باز نشد." |
همه انواع دستگاه ها از اعلان ها برای ویژگی های قابل اجرا پشتیبانی می کنند.
برای اکشن خانه هوشمند خود اعلان بسازید
در این مراحل اعلانها را به اکشن smart home خود اضافه کنید:
- اگر اعلانها از برنامه دستگاه smart home شما فعال است، به Google نشان دهید. اگر کاربران اعلانها را در برنامه شما روشن یا خاموش میکنند، یک درخواست
SYNC
ارسال کنید تا Google را از تغییر دستگاه مطلع کنید. - هنگامی که یک رویداد یا تغییر وضعیت مربوط به دستگاه رخ می دهد که باعث ایجاد اعلان می شود، با تماس با Report State
reportStateAndNotification
API یک درخواست اعلان ارسال کنید. اگر وضعیت دستگاه تغییر کرد، میتوانید هر دو حالت و اعلان را در تماس Report State و اعلان ارسال کنید.
بخش های زیر این مراحل را با جزئیات بیشتری پوشش می دهند.
مشخص کنید که آیا اعلان ها در برنامه شما فعال هستند یا خیر
کاربران می توانند با فعال کردن این ویژگی در GHA انتخاب کنند که آیا می خواهند اعلان های پیشگیرانه را دریافت کنند. در برنامه دستگاه smart home خود، همچنین میتوانید به صورت اختیاری این قابلیت را برای کاربران اضافه کنید که به طور صریح اعلانها را از دستگاه، به عنوان مثال، از تنظیمات برنامه خود تغییر دهند.
با برقراری تماس درخواست SYNC برای بهروزرسانی دادههای دستگاه، به Google نشان دهید که اعلانها برای دستگاه شما فعال هستند. هر زمان که کاربران این تنظیم را در برنامه شما تغییر دهند، باید درخواست SYNC
مانند این ارسال کنید.
در پاسخ SYNC
، یکی از این بهروزرسانیها را ارسال کنید:
- اگر کاربر صراحتاً اعلانها را در برنامه دستگاه شما روشن کرده است، یا اگر گزینه جابجایی را ارائه نمیدهید، ویژگی
devices.notificationSupportedByAgent
را رویtrue
تنظیم کنید. - اگر کاربر صراحتاً اعلانها را در برنامه دستگاه شما خاموش کرد، ویژگی
devices.notificationSupportedByAgent
را رویfalse
تنظیم کنید.
قطعه زیر نمونه ای از نحوه تنظیم پاسخ SYNC را نشان می دهد:
devices: [{
id: 'device123',
...
notificationSupportedByAgent: true,
}]
درخواستهای اعلان را به Google ارسال کنید
برای فعال کردن اعلانها در Assistant ، اجرای شما یک بار اعلان را از طریق یک تماس Report State و API اعلان به Google Home Graph ارسال میکند.
Google HomeGraph API را فعال کنید
در Google Cloud Console ، به صفحه HomeGraph API بروید.
به صفحه HomeGraph API بروید- پروژه ای را انتخاب کنید که با شناسه پروژه smart home شما مطابقت دارد.
- روی ENABLE کلیک کنید.
یک کلید حساب سرویس ایجاد کنید
برای ایجاد یک کلید حساب سرویس از Google Cloud Console این دستورالعمل ها را دنبال کنید:
در Google Cloud Console ، به صفحه کلید ایجاد حساب سرویس بروید.
به صفحه Create Service Account Key بروید- از لیست حساب سرویس ، حساب سرویس جدید را انتخاب کنید.
- در قسمت نام حساب سرویس ، یک نام وارد کنید.
- در قسمت شناسه حساب سرویس ، یک شناسه وارد کنید.
از فهرست نقش ، حسابهای خدمات > ایجاد کننده رمز حساب حساب را انتخاب کنید.
برای نوع کلید ، گزینه JSON را انتخاب کنید.
- روی ایجاد کلیک کنید. یک فایل JSON که حاوی دانلودهای کلید شما در رایانه شما است.
اطلاعیه را ارسال کنید
تماس درخواست اعلان را با استفاده از API devices.reportStateAndNotification
برقرار کنید. درخواست JSON شما باید شامل یک eventId
باشد که یک شناسه منحصربهفرد است که توسط پلتفرم شما برای رویدادی که اعلان را راهاندازی میکند ایجاد میکند. eventId
باید یک شناسه تصادفی باشد که هر بار که درخواست اعلان ارسال می کنید متفاوت باشد.
در شی notifications
که در تماس API خود ارسال میکنید، یک مقدار priority
قرار دهید که نحوه ارائه اعلان را مشخص میکند. بسته به ویژگی دستگاه، شی notifications
شما ممکن است شامل فیلدهای مختلفی باشد.
برای تنظیم بار و فراخوانی API یکی از این مسیرها را دنبال کنید:
ارسال یک محموله اعلان پیشگیرانه
برای فراخوانی API، یکی از این تب ها را انتخاب کنید:
HTTP
Home Graph API یک نقطه پایانی HTTP ارائه می دهد
- از فایل JSON حساب سرویس دانلود شده برای ایجاد یک رمز وب JSON (JWT) استفاده کنید. برای اطلاعات بیشتر، احراز هویت با استفاده از حساب سرویس را ببینید.
- یک نشانه دسترسی OAuth 2.0 را با
https://www.googleapis.com/auth/homegraph
با استفاده از oauth2l دریافت کنید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اعلان آمده است: - Report State و اعلان JSON و نشانه موجود در درخواست HTTP POST خود را با نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
به عنوان آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "ObjectDetection": { "priority": 0, "detectionTimestamp": 1534875126750, "objects": { "named": [ "Alice" ], "unclassified": 2 } } } } } } }
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 API یک نقطه پایانی gRPC را ارائه می دهد
- تعریف سرویس بافرهای پروتکل را برای Home Graph API دریافت کنید.
- مستندات توسعهدهنده gRPC را دنبال کنید تا برای یکی از زبانهای پشتیبانیشده، خرد کلاینت ایجاد کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
Google APIs Node.js Client اتصالاتی را برای Home Graph API فراهم می کند.
- سرویس
google.homegraph
را با استفاده از Application Default Credentials راه اندازی کنید. - روش
reportStateAndNotification
را با ReportStateAndNotificationRequest فراخوانی کنید. با ReportStateAndNotificationResponse یکPromise
برمی گرداند.
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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { ObjectDetection: { priority: 0, detectionTimestamp: 1534875126750, objects: { named: ['Alice'], unclassified: 2 } } } } } } } });
جاوا
HomeGraph API Client Library برای جاوا اتصالاتی را برای 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 notification payload. Map<?, ?> notifications = Map.of( "ObjectDetection", Map.of( "priority", 0, "detectionTimestamp", 1534875126, "objects", Map.of("named", List.of("Alice"), "unclassifed", 2))); // Send notification. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", notifications)))); homegraphService.devices().reportStateAndNotification(request);
ارسال بار پاسخ پیگیری
محموله برای پاسخ پیگیری شامل وضعیت درخواست، کدهای خطا برای خرابی رویدادها، در صورت وجود، و followUpToken
معتبر است که در طول درخواست قصد EXECUTE
ارائه شده است. followUpToken
باید در عرض پنج دقیقه استفاده شود تا معتبر بماند و پاسخ به درخواست اصلی به درستی مرتبط شود.
قطعه زیر نمونه ای از EXECUTE
request payload را با فیلد followUpToken
نشان می دهد.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123", }], "execution": [{ "command": "action.devices.commands.TestNetworkSpeed", "params": { "testDownloadSpeed": true, "testUploadSpeed": false, "followUpToken": "PLACEHOLDER" } }] }] } }] };
Google از followUpToken
استفاده میکند تا اعلان را فقط در دستگاهی که کاربر در ابتدا با آن تعامل داشت، ارسال کند و در همه دستگاههای کاربر پخش نشود.
برای فراخوانی API، یکی از این تب ها را انتخاب کنید:
HTTP
Home Graph API یک نقطه پایانی HTTP ارائه می دهد
- از فایل JSON حساب سرویس دانلود شده برای ایجاد یک رمز وب JSON (JWT) استفاده کنید. برای اطلاعات بیشتر، احراز هویت با استفاده از حساب سرویس را ببینید.
- یک نشانه دسترسی OAuth 2.0 را با
https://www.googleapis.com/auth/homegraph
با استفاده از oauth2l دریافت کنید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اعلان آمده است: - Report State و اعلان JSON و نشانه موجود در درخواست HTTP POST خود را با نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
به عنوان آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "NetworkControl": { "priority": 0, "followUpResponse": { "status": "SUCCESS", "followUpToken": "PLACEHOLDER", "networkDownloadSpeedMbps": 23.3, "networkUploadSpeedMbps": 10.2 } } } } } } }
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 API یک نقطه پایانی gRPC را ارائه می دهد
- تعریف سرویس بافرهای پروتکل را برای Home Graph API دریافت کنید.
- مستندات توسعهدهنده gRPC را دنبال کنید تا برای یکی از زبانهای پشتیبانیشده، خرد کلاینت ایجاد کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
Google APIs Node.js Client اتصالاتی را برای Home Graph API فراهم می کند.
- سرویس
google.homegraph
را با استفاده از Application Default Credentials راه اندازی کنید. - روش
reportStateAndNotification
را با ReportStateAndNotificationRequest فراخوانی کنید. با ReportStateAndNotificationResponse یکPromise
برمی گرداند.
const followUpToken = executionRequest.inputs[0].payload.commands[0].execution[0].params.followUpToken; 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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { NetworkControl: { priority: 0, followUpResponse: { status: 'SUCCESS', followUpToken, networkDownloadSpeedMbps: 23.3, networkUploadSpeedMbps: 10.2, } } } } } } } });
جاوا
HomeGraph API Client Library برای جاوا اتصالاتی را برای 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(); // Extract follow-up token. ExecuteRequest.Inputs executeInputs = (Inputs) executeRequest.getInputs()[0]; String followUpToken = (String) executeInputs .getPayload() .getCommands()[0] .getExecution()[0] .getParams() .get("followUpToken"); // Build device follow-up response payload. Map<?, ?> followUpResponse = Map.of( "NetworkControl", Map.of( "priority", 0, "followUpResponse", Map.of( "status", "SUCCESS", "followUpToken", followUpToken, "networkDownloadSpeedMbps", 23.3, "networkUploadSpeedMbps", 10.2))); // Send follow-up response. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", followUpResponse)))); homegraphService.devices().reportStateAndNotification(request);
ورود به سیستم
اعلانها از ثبت رویداد پشتیبانی میکنند، همانطور که در گزارشهای رویداد Access با Cloud Logging مشخص شده است. این گزارشها برای آزمایش و حفظ کیفیت اعلانها در Action شما مفید هستند.
شکل زیر طرح یک ورودی notificationLog
است:
اموال | توضیحات |
---|---|
requestId | شناسه درخواست اعلان |
structName | نام ساختار اعلان، مانند "ObjectDetection". |
status | وضعیت اعلان را نشان می دهد. |
فیلد status
شامل وضعیت های مختلفی است که ممکن است نشان دهنده خطا در بار اعلان باشد. برخی از این موارد ممکن است فقط در Actions در دسترس باشند که برای تولید راه اندازی نشده اند.
وضعیت های مثال عبارتند از:
وضعیت | توضیحات |
---|---|
EVENT_ID_MISSING | نشان می دهد که قسمت eventId مورد نیاز وجود ندارد. |
PRIORITY_MISSING | نشان می دهد که یک فیلد priority وجود ندارد. |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | نشان می دهد که ویژگی notificationSupportedByAgent دستگاه اعلان ارائه شده در SYNC نادرست است. |
NOTIFICATION_ENABLED_BY_USER_FALSE | نشان می دهد که کاربر اعلان ها را در دستگاه اعلان در GHA فعال نکرده است. این وضعیت فقط در Actions موجود است که برای تولید راه اندازی نشده اند. |
NOTIFYING_DEVICE_NOT_IN_STRUCTURE | نشان می دهد که کاربر دستگاه اعلان را به خانه/ساختار اختصاص نداده است. این وضعیت فقط در Actions موجود است که برای تولید راه اندازی نشده اند. |
علاوه بر این وضعیتهای عمومی که میتوانند برای همه اعلانها اعمال شوند، فیلد status
ممکن است در صورت لزوم شامل وضعیتهای خاص باشد (مانند OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING
).
اعلانها به Action smart home شما اجازه میدهند از Google Assistant برای برقراری ارتباط با کاربران درباره رویدادها یا تغییرات مهم مرتبط با دستگاه استفاده کند. میتوانید اعلانهایی را برای هشدار به کاربران در مورد رویدادهای بهموقع دستگاه، بهعنوان مثال زمانی که شخصی در درب منزل است، یا گزارش در مورد تغییر وضعیت دستگاه درخواستی، مانند زمانی که پیچ قفل در با موفقیت درگیر شده یا گیر کرده است، اجرا کنید.
اکشن smart home شما میتواند انواع اعلانهای زیر را برای کاربران ارسال کند:
اعلانهای پیشگیرانه : به کاربر از رویداد دستگاه smart home بدون هیچ درخواست قبلی از دستگاههای خود، مانند زنگ در، هشدار میدهد.
پاسخهای بعدی : تأیید موفقیت یا شکست درخواست فرمان دستگاه، برای مثال هنگام قفل کردن یک در. از این هشدارها برای دستورات دستگاه استفاده کنید که تکمیل آنها زمان بر است. پاسخهای پیگیری تنها زمانی پشتیبانی میشوند که درخواستهای فرمان دستگاه از بلندگوهای هوشمند و نمایشگرهای هوشمند ارسال شوند.
Assistant این اعلانها را بهعنوان اعلانهایی روی بلندگوهای هوشمند و نمایشگرهای هوشمند در اختیار کاربران قرار میدهد. اعلان های فعال به طور پیش فرض خاموش هستند. کاربران میتوانند همه اعلانهای فعال را از Google Home app (GHA) روشن یا خاموش کنند.
رویدادهایی که اعلانها را راهاندازی میکنند
وقتی رویدادهای دستگاه رخ میدهد، Action përmbush شما یک درخواست اعلان به Google ارسال میکند. ویژگیهای دستگاهی که Action smart home شما پشتیبانی میکند، تعیین میکند که چه نوع رویدادهای اعلان موجود است و دادههایی که میتوانید در آن اعلانها قرار دهید.
ویژگیهای زیر از اعلانهای فعال پشتیبانی میکنند:
صفت | رویدادها |
---|---|
ObjectDetection | اشیاء شناسایی شده توسط دستگاه، مانند زمانی که یک چهره شناخته شده در درب تشخیص داده می شود. به عنوان مثال: "آلیس و باب جلوی در هستند." |
RunCycle | دستگاه یک چرخه را کامل می کند. به عنوان مثال: "چرخه ماشین لباسشویی کامل شده است." |
SensorState | دستگاه وضعیت حسگر پشتیبانی شده را تشخیص می دهد. به عنوان مثال: "ردیاب دود دود را تشخیص می دهد." |
ویژگیهای زیر از پاسخهای بعدی پشتیبانی میکنند:
صفت | رویدادها |
---|---|
LockUnlock | وضعیت تکمیل و تغییر وضعیت پس از اجرای دستور action.devices.commands.LockUnlock دستگاه. به عنوان مثال: "درب ورودی قفل شده است" یا "درب ورودی گیر کرده است." |
NetworkControl | وضعیت تکمیل و تغییر وضعیت پس از اجرای فرمان action.devices.commands.TestNetworkSpeed دستگاه. به عنوان مثال: "تست سرعت شبکه شما به پایان رسیده است. سرعت دانلود در روتر آفیس در حال حاضر 80.2 کیلوبیت بر ثانیه و سرعت آپلود 9.3 کیلوبیت در ثانیه است." |
OpenClose | وضعیت تکمیل و تغییر وضعیت پس از اجرای دستور action.devices.commands.OpenClose دستگاه. به عنوان مثال: "درب ورودی باز شد" یا "درب ورودی باز نشد." |
همه انواع دستگاه ها از اعلان ها برای ویژگی های قابل اجرا پشتیبانی می کنند.
برای اکشن خانه هوشمند خود اعلان بسازید
در این مراحل اعلانها را به اکشن smart home خود اضافه کنید:
- اگر اعلانها از برنامه دستگاه smart home شما فعال است، به Google نشان دهید. اگر کاربران اعلانها را در برنامه شما روشن یا خاموش میکنند، یک درخواست
SYNC
ارسال کنید تا Google را از تغییر دستگاه مطلع کنید. - هنگامی که یک رویداد یا تغییر وضعیت مربوط به دستگاه رخ می دهد که باعث ایجاد اعلان می شود، با تماس با Report State
reportStateAndNotification
API یک درخواست اعلان ارسال کنید. اگر وضعیت دستگاه تغییر کرد، میتوانید هر دو حالت و اعلان را در تماس Report State و اعلان ارسال کنید.
بخش های زیر این مراحل را با جزئیات بیشتری پوشش می دهند.
مشخص کنید که آیا اعلان ها در برنامه شما فعال هستند یا خیر
کاربران می توانند با فعال کردن این ویژگی در GHA انتخاب کنند که آیا می خواهند اعلان های پیشگیرانه را دریافت کنند. در برنامه دستگاه smart home خود، همچنین میتوانید به صورت اختیاری این قابلیت را برای کاربران اضافه کنید که به طور صریح اعلانها را از دستگاه، به عنوان مثال، از تنظیمات برنامه خود تغییر دهند.
با برقراری تماس درخواست SYNC برای بهروزرسانی دادههای دستگاه، به Google نشان دهید که اعلانها برای دستگاه شما فعال هستند. هر زمان که کاربران این تنظیم را در برنامه شما تغییر دهند، باید درخواست SYNC
مانند این ارسال کنید.
در پاسخ SYNC
، یکی از این بهروزرسانیها را ارسال کنید:
- اگر کاربر صراحتاً اعلانها را در برنامه دستگاه شما روشن کرده است، یا اگر گزینه جابجایی را ارائه نمیدهید، ویژگی
devices.notificationSupportedByAgent
را رویtrue
تنظیم کنید. - اگر کاربر صراحتاً اعلانها را در برنامه دستگاه شما خاموش کرد، ویژگی
devices.notificationSupportedByAgent
را رویfalse
تنظیم کنید.
قطعه زیر نمونه ای از نحوه تنظیم پاسخ SYNC را نشان می دهد:
devices: [{
id: 'device123',
...
notificationSupportedByAgent: true,
}]
درخواستهای اعلان را به Google ارسال کنید
برای فعال کردن اعلانها در Assistant ، اجرای شما یک بار اعلان را از طریق یک تماس Report State و API اعلان به Google Home Graph ارسال میکند.
Google HomeGraph API را فعال کنید
در Google Cloud Console ، به صفحه HomeGraph API بروید.
به صفحه HomeGraph API بروید- پروژه ای را انتخاب کنید که با شناسه پروژه smart home شما مطابقت دارد.
- روی ENABLE کلیک کنید.
یک کلید حساب سرویس ایجاد کنید
برای ایجاد یک کلید حساب سرویس از Google Cloud Console این دستورالعمل ها را دنبال کنید:
در Google Cloud Console ، به صفحه کلید ایجاد حساب سرویس بروید.
به صفحه Create Service Account Key بروید- از لیست حساب سرویس ، حساب سرویس جدید را انتخاب کنید.
- در قسمت نام حساب سرویس ، یک نام وارد کنید.
- در قسمت شناسه حساب سرویس ، یک شناسه وارد کنید.
از فهرست نقش ، حسابهای خدمات > ایجاد کننده رمز حساب حساب را انتخاب کنید.
برای نوع کلید ، گزینه JSON را انتخاب کنید.
- روی ایجاد کلیک کنید. یک فایل JSON که حاوی دانلودهای کلید شما در رایانه شما است.
اطلاعیه را ارسال کنید
تماس درخواست اعلان را با استفاده از API devices.reportStateAndNotification
برقرار کنید. درخواست JSON شما باید شامل یک eventId
باشد که یک شناسه منحصربهفرد است که توسط پلتفرم شما برای رویدادی که اعلان را راهاندازی میکند ایجاد میکند. eventId
باید یک شناسه تصادفی باشد که هر بار که درخواست اعلان ارسال می کنید متفاوت باشد.
در شی notifications
که در تماس API خود ارسال میکنید، یک مقدار priority
قرار دهید که نحوه ارائه اعلان را مشخص میکند. بسته به ویژگی دستگاه، شی notifications
شما ممکن است شامل فیلدهای مختلفی باشد.
برای تنظیم بار و فراخوانی API یکی از این مسیرها را دنبال کنید:
ارسال یک محموله اعلان پیشگیرانه
برای فراخوانی API، یکی از این تب ها را انتخاب کنید:
HTTP
Home Graph API یک نقطه پایانی HTTP ارائه می دهد
- از فایل JSON حساب سرویس دانلود شده برای ایجاد یک رمز وب JSON (JWT) استفاده کنید. برای اطلاعات بیشتر، احراز هویت با استفاده از حساب سرویس را ببینید.
- یک نشانه دسترسی OAuth 2.0 را با
https://www.googleapis.com/auth/homegraph
با استفاده از oauth2l دریافت کنید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اعلان آمده است: - Report State و اعلان JSON و نشانه موجود در درخواست HTTP POST خود را با نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
به عنوان آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "ObjectDetection": { "priority": 0, "detectionTimestamp": 1534875126750, "objects": { "named": [ "Alice" ], "unclassified": 2 } } } } } } }
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 API یک نقطه پایانی gRPC را ارائه می دهد
- تعریف سرویس بافرهای پروتکل را برای Home Graph API دریافت کنید.
- مستندات توسعهدهنده gRPC را دنبال کنید تا برای یکی از زبانهای پشتیبانیشده، خرد کلاینت ایجاد کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
Google APIs Node.js Client اتصالاتی را برای Home Graph API فراهم می کند.
- سرویس
google.homegraph
را با استفاده از Application Default Credentials راه اندازی کنید. - روش
reportStateAndNotification
را با ReportStateAndNotificationRequest فراخوانی کنید. با ReportStateAndNotificationResponse یکPromise
برمی گرداند.
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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { ObjectDetection: { priority: 0, detectionTimestamp: 1534875126750, objects: { named: ['Alice'], unclassified: 2 } } } } } } } });
جاوا
HomeGraph API Client Library برای جاوا اتصالاتی را برای 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 notification payload. Map<?, ?> notifications = Map.of( "ObjectDetection", Map.of( "priority", 0, "detectionTimestamp", 1534875126, "objects", Map.of("named", List.of("Alice"), "unclassifed", 2))); // Send notification. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", notifications)))); homegraphService.devices().reportStateAndNotification(request);
ارسال بار پاسخ پیگیری
محموله برای پاسخ پیگیری شامل وضعیت درخواست، کدهای خطا برای خرابی رویدادها، در صورت وجود، و followUpToken
معتبر است که در طول درخواست قصد EXECUTE
ارائه شده است. followUpToken
باید در عرض پنج دقیقه استفاده شود تا معتبر بماند و پاسخ به درخواست اصلی به درستی مرتبط شود.
قطعه زیر نمونه ای از EXECUTE
request payload را با فیلد followUpToken
نشان می دهد.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123", }], "execution": [{ "command": "action.devices.commands.TestNetworkSpeed", "params": { "testDownloadSpeed": true, "testUploadSpeed": false, "followUpToken": "PLACEHOLDER" } }] }] } }] };
Google از followUpToken
استفاده میکند تا اعلان را فقط در دستگاهی که کاربر در ابتدا با آن تعامل داشت، ارسال کند و در همه دستگاههای کاربر پخش نشود.
برای فراخوانی API، یکی از این تب ها را انتخاب کنید:
HTTP
Home Graph API یک نقطه پایانی HTTP ارائه می دهد
- از فایل JSON حساب سرویس دانلود شده برای ایجاد یک رمز وب JSON (JWT) استفاده کنید. برای اطلاعات بیشتر، احراز هویت با استفاده از حساب سرویس را ببینید.
- یک نشانه دسترسی OAuth 2.0 با
https://www.googleapis.com/auth/homegraph
با استفاده از oauth2l دریافت کنید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اعلان آمده است: - Report State و اعلان JSON و نشانه موجود در درخواست HTTP POST خود را با نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
به عنوان آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "NetworkControl": { "priority": 0, "followUpResponse": { "status": "SUCCESS", "followUpToken": "PLACEHOLDER", "networkDownloadSpeedMbps": 23.3, "networkUploadSpeedMbps": 10.2 } } } } } } }
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 API یک نقطه پایانی gRPC را ارائه می دهد
- تعریف سرویس بافرهای پروتکل را برای Home Graph API دریافت کنید.
- مستندات توسعهدهنده gRPC را دنبال کنید تا برای یکی از زبانهای پشتیبانیشده، خرد کلاینت ایجاد کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
Google APIs Node.js Client اتصالاتی را برای Home Graph API فراهم می کند.
- سرویس
google.homegraph
را با استفاده از Application Default Credentials راه اندازی کنید. - روش
reportStateAndNotification
را با ReportStateAndNotificationRequest فراخوانی کنید. با ReportStateAndNotificationResponse یکPromise
برمی گرداند.
const followUpToken = executionRequest.inputs[0].payload.commands[0].execution[0].params.followUpToken; 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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { NetworkControl: { priority: 0, followUpResponse: { status: 'SUCCESS', followUpToken, networkDownloadSpeedMbps: 23.3, networkUploadSpeedMbps: 10.2, } } } } } } } });
جاوا
HomeGraph API Client Library برای جاوا اتصالاتی را برای 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(); // Extract follow-up token. ExecuteRequest.Inputs executeInputs = (Inputs) executeRequest.getInputs()[0]; String followUpToken = (String) executeInputs .getPayload() .getCommands()[0] .getExecution()[0] .getParams() .get("followUpToken"); // Build device follow-up response payload. Map<?, ?> followUpResponse = Map.of( "NetworkControl", Map.of( "priority", 0, "followUpResponse", Map.of( "status", "SUCCESS", "followUpToken", followUpToken, "networkDownloadSpeedMbps", 23.3, "networkUploadSpeedMbps", 10.2))); // Send follow-up response. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", followUpResponse)))); homegraphService.devices().reportStateAndNotification(request);
ورود به سیستم
اعلانها از ثبت رویداد پشتیبانی میکنند، همانطور که در گزارشهای رویداد Access با Cloud Logging مشخص شده است. این گزارشها برای آزمایش و حفظ کیفیت اعلانها در Action شما مفید هستند.
شکل زیر طرح یک ورودی notificationLog
است:
اموال | توضیحات |
---|---|
requestId | شناسه درخواست اعلان |
structName | نام ساختار اعلان، مانند "ObjectDetection". |
status | وضعیت اعلان را نشان می دهد. |
فیلد status
شامل وضعیت های مختلفی است که ممکن است نشان دهنده خطا در بار اعلان باشد. برخی از این موارد ممکن است فقط در Actions موجود باشند که برای تولید راه اندازی نشده اند.
وضعیت های مثال عبارتند از:
وضعیت | توضیحات |
---|---|
EVENT_ID_MISSING | نشان می دهد که قسمت eventId مورد نیاز وجود ندارد. |
PRIORITY_MISSING | نشان می دهد که یک فیلد priority وجود ندارد. |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | نشان می دهد که ویژگی notificationSupportedByAgent دستگاه اعلان ارائه شده در SYNC نادرست است. |
NOTIFICATION_ENABLED_BY_USER_FALSE | نشان می دهد که کاربر اعلان ها را در دستگاه اعلان در GHA فعال نکرده است. این وضعیت فقط در Actions موجود است که برای تولید راه اندازی نشده اند. |
NOTIFYING_DEVICE_NOT_IN_STRUCTURE | نشان می دهد که کاربر دستگاه اعلان را به خانه/ساختار اختصاص نداده است. این وضعیت فقط در Actions موجود است که برای تولید راه اندازی نشده اند. |
علاوه بر این وضعیتهای عمومی که میتوانند برای همه اعلانها اعمال شوند، فیلد status
ممکن است در صورت لزوم شامل وضعیتهای خاص باشد (مانند OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING
).
اعلانها به Action smart home شما اجازه میدهند از Google Assistant برای برقراری ارتباط با کاربران درباره رویدادها یا تغییرات مهم مرتبط با دستگاه استفاده کند. میتوانید اعلانهایی را برای هشدار به کاربران در مورد رویدادهای بهموقع دستگاه، بهعنوان مثال زمانی که شخصی در درب منزل است، یا گزارش در مورد تغییر وضعیت دستگاه درخواستی، مانند زمانی که پیچ قفل در با موفقیت درگیر شده یا گیر کرده است، اجرا کنید.
اکشن smart home شما میتواند انواع اعلانهای زیر را برای کاربران ارسال کند:
اعلانهای پیشگیرانه : به کاربر از رویداد دستگاه smart home بدون هیچ درخواست قبلی از دستگاههای خود، مانند زنگ در، هشدار میدهد.
پاسخهای بعدی : تأیید موفقیت یا شکست درخواست فرمان دستگاه، برای مثال هنگام قفل کردن یک در. از این هشدارها برای دستورات دستگاه استفاده کنید که تکمیل آنها به زمان نیاز دارد. پاسخهای پیگیری تنها زمانی پشتیبانی میشوند که درخواستهای فرمان دستگاه از بلندگوهای هوشمند و نمایشگرهای هوشمند ارسال شوند.
Assistant این اعلانها را بهعنوان اعلانهایی روی بلندگوهای هوشمند و نمایشگرهای هوشمند در اختیار کاربران قرار میدهد. اعلان های فعال به طور پیش فرض خاموش هستند. کاربران میتوانند همه اعلانهای فعال را از Google Home app (GHA) روشن یا خاموش کنند.
رویدادهایی که اعلانها را راهاندازی میکنند
وقتی رویدادهای دستگاه رخ میدهد، Action përmbush شما یک درخواست اعلان به Google ارسال میکند. ویژگیهای دستگاهی که Action smart home شما پشتیبانی میکند، تعیین میکند که چه نوع رویدادهای اعلان موجود است و دادههایی که میتوانید در آن اعلانها قرار دهید.
ویژگیهای زیر از اعلانهای فعال پشتیبانی میکنند:
صفت | رویدادها |
---|---|
ObjectDetection | اشیاء شناسایی شده توسط دستگاه، مانند زمانی که یک چهره شناخته شده در درب تشخیص داده می شود. به عنوان مثال: "آلیس و باب جلوی در هستند." |
RunCycle | دستگاه یک چرخه را کامل می کند. به عنوان مثال: "چرخه ماشین لباسشویی کامل شده است." |
SensorState | دستگاه وضعیت حسگر پشتیبانی شده را تشخیص می دهد. به عنوان مثال: "ردیاب دود دود را تشخیص می دهد." |
ویژگیهای زیر از پاسخهای بعدی پشتیبانی میکنند:
صفت | رویدادها |
---|---|
LockUnlock | وضعیت تکمیل و تغییر وضعیت پس از اجرای دستور action.devices.commands.LockUnlock دستگاه. به عنوان مثال: "درب ورودی قفل شده است" یا "درب ورودی گیر کرده است." |
NetworkControl | وضعیت تکمیل و تغییر وضعیت پس از اجرای فرمان action.devices.commands.TestNetworkSpeed دستگاه. به عنوان مثال: "تست سرعت شبکه شما به پایان رسیده است. سرعت دانلود در روتر آفیس در حال حاضر 80.2 کیلوبیت بر ثانیه و سرعت آپلود 9.3 کیلوبیت در ثانیه است." |
OpenClose | وضعیت تکمیل و تغییر وضعیت پس از اجرای دستور action.devices.commands.OpenClose دستگاه. به عنوان مثال: "درب ورودی باز شد" یا "درب ورودی باز نشد." |
همه انواع دستگاه ها از اعلان ها برای ویژگی های قابل اجرا پشتیبانی می کنند.
برای اکشن خانه هوشمند خود اعلان بسازید
در این مراحل اعلانها را به اکشن smart home خود اضافه کنید:
- اگر اعلانها از برنامه دستگاه smart home شما فعال است، به Google نشان دهید. اگر کاربران اعلانها را در برنامه شما روشن یا خاموش میکنند، یک درخواست
SYNC
ارسال کنید تا Google را از تغییر دستگاه مطلع کنید. - هنگامی که یک رویداد یا تغییر وضعیت مربوط به دستگاه رخ می دهد که باعث ایجاد اعلان می شود، با تماس با Report State
reportStateAndNotification
API یک درخواست اعلان ارسال کنید. اگر وضعیت دستگاه تغییر کرد، میتوانید هر دو حالت و اعلان را در تماس Report State و اعلان ارسال کنید.
بخش های زیر این مراحل را با جزئیات بیشتری پوشش می دهند.
مشخص کنید که آیا اعلان ها در برنامه شما فعال هستند یا خیر
کاربران می توانند با فعال کردن این ویژگی در GHA انتخاب کنند که آیا می خواهند اعلان های پیشگیرانه را دریافت کنند. در برنامه دستگاه smart home خود، همچنین میتوانید به صورت اختیاری این قابلیت را برای کاربران اضافه کنید که به طور صریح اعلانها را از دستگاه، به عنوان مثال، از تنظیمات برنامه خود تغییر دهند.
با برقراری تماس درخواست SYNC برای بهروزرسانی دادههای دستگاه، به Google نشان دهید که اعلانها برای دستگاه شما فعال هستند. هر زمان که کاربران این تنظیمات را در برنامه شما تغییر دهند، باید درخواست SYNC
مانند این ارسال کنید.
در پاسخ SYNC
، یکی از این بهروزرسانیها را ارسال کنید:
- اگر کاربر صراحتاً اعلانها را در برنامه دستگاه شما روشن کرده است، یا اگر گزینه جابجایی را ارائه نمیدهید، ویژگی
devices.notificationSupportedByAgent
را رویtrue
تنظیم کنید. - اگر کاربر صراحتاً اعلانها را در برنامه دستگاه شما خاموش کرد، ویژگی
devices.notificationSupportedByAgent
را رویfalse
تنظیم کنید.
قطعه زیر نمونه ای از نحوه تنظیم پاسخ SYNC را نشان می دهد:
devices: [{
id: 'device123',
...
notificationSupportedByAgent: true,
}]
درخواستهای اعلان را به Google ارسال کنید
برای فعال کردن اعلانها در Assistant ، اجرای شما یک بار اعلان را از طریق یک تماس Report State و API اعلان به Google Home Graph ارسال میکند.
Google HomeGraph API را فعال کنید
در Google Cloud Console ، به صفحه HomeGraph API بروید.
به صفحه HomeGraph API بروید- پروژه ای را انتخاب کنید که با شناسه پروژه smart home شما مطابقت دارد.
- روی ENABLE کلیک کنید.
یک کلید حساب سرویس ایجاد کنید
برای ایجاد یک کلید حساب سرویس از Google Cloud Console این دستورالعمل ها را دنبال کنید:
در Google Cloud Console ، به صفحه کلید ایجاد حساب سرویس بروید.
به صفحه Create Service Account Key بروید- از لیست حساب سرویس ، حساب سرویس جدید را انتخاب کنید.
- در قسمت نام حساب سرویس ، یک نام وارد کنید.
- در قسمت شناسه حساب سرویس ، یک شناسه وارد کنید.
از لیست نقش ، حساب های خدمات > سازنده توکن حساب خدمات را انتخاب کنید.
برای نوع کلید ، گزینه JSON را انتخاب کنید.
- روی ایجاد کلیک کنید. یک فایل JSON که شامل بارگیری های کلید شما در رایانه شما است.
اعلان را ارسال کنید
درخواست اعلان را با استفاده از devices.reportStateAndNotification
تماس بگیرید. reportstateandnotification api. درخواست JSON شما باید شامل یک eventId
باشد ، که یک شناسه منحصر به فرد است که توسط پلتفرم شما برای این رویداد ایجاد شده است که باعث ایجاد اعلان می شود. eventId
باید یک شناسه تصادفی باشد که هر بار که درخواست اعلان ارسال می کنید متفاوت است.
در شیء notifications
که در تماس API خود عبور می کنید ، یک مقدار priority
را درج کنید که نحوه ارائه اعلان را مشخص می کند. شیء notifications
شما بسته به ویژگی دستگاه ممکن است شامل زمینه های مختلف باشد.
برای تنظیم بار و تماس با API یکی از این مسیرها را دنبال کنید:
ارسال یک بار اعلان فعال ارسال کنید
برای تماس با API ، گزینه ای را از یکی از این برگه ها انتخاب کنید:
HTTP
API Home Graph یک نقطه پایانی HTTP را فراهم می کند
- برای ایجاد یک توکن وب JSON (JWT) از پرونده JSON حساب بارگیری شده استفاده کنید. برای اطلاعات بیشتر ، به تأیید اعتبار با استفاده از یک حساب خدمات مراجعه کنید.
- با استفاده از oauth2l ، یک نشانه دسترسی OAUTH 2.0 با
https://www.googleapis.com/auth/homegraph
را بدست آورید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اطلاع رسانی آورده شده است: - Report State و اعلان JSON و نشانه را در درخواست HTTP POST خود به نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
، به عنوان یک آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "ObjectDetection": { "priority": 0, "detectionTimestamp": 1534875126750, "objects": { "named": [ "Alice" ], "unclassified": 2 } } } } } } }
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
API Home Graph یک نقطه پایانی GRPC را فراهم می کند
- تعریف سرویس بافر پروتکل را برای API Home Graph دریافت کنید.
- برای تولید خرد های مشتری برای یکی از زبانهای پشتیبانی شده ، مستندات توسعه دهنده GRPC را دنبال کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
مشتری Google APIS Node.js الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ، سرویس
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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { ObjectDetection: { priority: 0, detectionTimestamp: 1534875126750, objects: { named: ['Alice'], unclassified: 2 } } } } } } } });
جاوا
کتابخانه مشتری Homegraph API برای جاوا ، الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ،
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 notification payload. Map<?, ?> notifications = Map.of( "ObjectDetection", Map.of( "priority", 0, "detectionTimestamp", 1534875126, "objects", Map.of("named", List.of("Alice"), "unclassifed", 2))); // Send notification. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", notifications)))); homegraphService.devices().reportStateAndNotification(request);
ارسال پاسخ پیگیری را ارسال کنید
بار بازپرداخت برای پاسخ پیگیری شامل وضعیت درخواست ، کدهای خطا برای خرابی رویداد ، در صورت لزوم و followUpToken
معتبر ، ارائه شده در طول درخواست قصد EXECUTE
است. followUpToken
باید در مدت پنج دقیقه استفاده شود تا معتبر بماند و به درستی پاسخ را با درخواست اصلی مرتبط کند.
قطعه زیر نمونه ای را نشان می دهد که بار درخواست بار را با یک قسمت followUpToken
EXECUTE
.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123", }], "execution": [{ "command": "action.devices.commands.TestNetworkSpeed", "params": { "testDownloadSpeed": true, "testUploadSpeed": false, "followUpToken": "PLACEHOLDER" } }] }] } }] };
Google از followUpToken
برای خروجی اعلان فقط در دستگاهی که کاربر در ابتدا با آن تعامل داشت ، استفاده می کند و در تمام دستگاه های کاربر پخش نمی شود.
برای تماس با API ، گزینه ای را از یکی از این برگه ها انتخاب کنید:
HTTP
API Home Graph یک نقطه پایانی HTTP را فراهم می کند
- برای ایجاد یک توکن وب JSON (JWT) از پرونده JSON حساب بارگیری شده استفاده کنید. برای اطلاعات بیشتر ، به تأیید اعتبار با استفاده از یک حساب خدمات مراجعه کنید.
- با استفاده از oauth2l ، یک نشانه دسترسی OAUTH 2.0 با
https://www.googleapis.com/auth/homegraph
را بدست آورید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اطلاع رسانی آورده شده است: - Report State و اعلان JSON و نشانه را در درخواست HTTP POST خود به نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
، به عنوان یک آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "NetworkControl": { "priority": 0, "followUpResponse": { "status": "SUCCESS", "followUpToken": "PLACEHOLDER", "networkDownloadSpeedMbps": 23.3, "networkUploadSpeedMbps": 10.2 } } } } } } }
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
API Home Graph یک نقطه پایانی GRPC را فراهم می کند
- تعریف سرویس بافر پروتکل را برای API Home Graph دریافت کنید.
- برای تولید خرد های مشتری برای یکی از زبانهای پشتیبانی شده ، مستندات توسعه دهنده GRPC را دنبال کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
مشتری Google APIS Node.js الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ، سرویس
google.homegraph
را اولیه کنید. - با روش
reportStateAndNotification
با ReportStateAndNotificationRequest تماس بگیرید. این یکPromise
با ReportStateAndNotificationResponse را برمی گرداند.
const followUpToken = executionRequest.inputs[0].payload.commands[0].execution[0].params.followUpToken; 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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { NetworkControl: { priority: 0, followUpResponse: { status: 'SUCCESS', followUpToken, networkDownloadSpeedMbps: 23.3, networkUploadSpeedMbps: 10.2, } } } } } } } });
جاوا
کتابخانه مشتری Homegraph API برای جاوا ، الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ،
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(); // Extract follow-up token. ExecuteRequest.Inputs executeInputs = (Inputs) executeRequest.getInputs()[0]; String followUpToken = (String) executeInputs .getPayload() .getCommands()[0] .getExecution()[0] .getParams() .get("followUpToken"); // Build device follow-up response payload. Map<?, ?> followUpResponse = Map.of( "NetworkControl", Map.of( "priority", 0, "followUpResponse", Map.of( "status", "SUCCESS", "followUpToken", followUpToken, "networkDownloadSpeedMbps", 23.3, "networkUploadSpeedMbps", 10.2))); // Send follow-up response. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", followUpResponse)))); homegraphService.devices().reportStateAndNotification(request);
ورود به سیستم
اعلان ها از ورود به رویداد پشتیبانی می کنند همانطور که در گزارش های رویداد دسترسی با ورود به ابر مشخص شده است. این سیاهههای مربوط برای آزمایش و حفظ کیفیت اعلان ها در عمل شما مفید هستند.
در زیر طرح ورود یک notificationLog
است:
اموال | توضیحات |
---|---|
requestId | شناسه درخواست اعلان |
structName | نام ساختار اعلان ، مانند "ObjectDeetection". |
status | وضعیت اعلان را نشان می دهد. |
قسمت status
شامل وضعیت های مختلفی است که ممکن است خطاهای موجود در بار اعلان را نشان دهد. برخی از این موارد فقط ممکن است در مورد اقداماتی که برای تولید راه اندازی نشده اند در دسترس باشند.
وضعیت مثال شامل موارد زیر است:
وضعیت | توضیحات |
---|---|
EVENT_ID_MISSING | نشان می دهد که قسمت مورد نیاز eventId از دست رفته است. |
PRIORITY_MISSING | نشان می دهد که یک قسمت priority از دست رفته است. |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | نشان می دهد که ویژگی های اعلان دستگاه notificationSupportedByAgent های ارائه شده در SYNC نادرست است. |
NOTIFICATION_ENABLED_BY_USER_FALSE | نشان می دهد که کاربر اعلان هایی را در مورد دستگاه اعلان در GHA فعال نکرده است. این وضعیت فقط در مورد اقداماتی که برای تولید راه اندازی نشده اند در دسترس است. |
NOTIFYING_DEVICE_NOT_IN_STRUCTURE | نشان می دهد که کاربر دستگاه اطلاع رسانی را به خانه/ساختار اختصاص نداده است. این وضعیت فقط در مورد اقداماتی که برای تولید راه اندازی نشده اند در دسترس است. |
علاوه بر این وضعیت های کلی که می توانند برای کلیه اعلان ها اعمال شوند ، زمینه status
همچنین ممکن است شامل وضعیت های خاص صفت در صورت لزوم باشد (به عنوان مثال OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING
).
اعلان ها به شما اجازه می دهد تا اقدامات smart home شما از Google Assistant برای برقراری ارتباط با کاربران در مورد وقایع مهم یا تغییرات مرتبط با دستگاه استفاده کند. شما می توانید اعلان ها را برای هشدار دادن به کاربران در مورد رویدادهای به موقع دستگاه ، به عنوان مثال وقتی شخصی در خانه است ، یا گزارش تغییر وضعیت دستگاه درخواست شده را پیاده سازی کنید ، مانند زمانی که پیچ قفل درب با موفقیت درگیر شده است یا خاموش شده است.
اقدام smart home شما می تواند انواع اعلان های زیر را به کاربران ارسال کند:
اعلان های فعال : هشدار کاربر از یک رویداد دستگاه smart home را بدون هیچ گونه درخواست کاربر قبلی به دستگاه های خود ، مانند زنگ درب ، هشدار می دهد.
پاسخ های پیگیری : تأیید اینکه درخواست دستور دستگاه موفق شده یا به عنوان مثال در هنگام قفل کردن درب ، موفق شده است. از این هشدارها برای دستورات دستگاه استفاده کنید که برای تکمیل زمان لازم دارند. پاسخ های پیگیری فقط در صورت ارسال درخواست فرمان دستگاه از بلندگوهای هوشمند و نمایشگرهای هوشمند پشتیبانی می شوند.
Assistant این اعلان ها را به عنوان اطلاعیه هایی در مورد بلندگوهای هوشمند و نمایشگرهای هوشمند در اختیار کاربران قرار می دهد. اعلان های فعال به طور پیش فرض خاموش می شوند. کاربران این امکان را دارند که تمام اعلان های فعال را از Google Home app (GHA) روشن یا خاموش کنند.
رویدادهایی که باعث اعلان ها می شوند
هنگامی که وقایع دستگاه رخ می دهد ، انجام عمل شما یک درخواست اعلان را به Google ارسال می کند. ویژگی های دستگاهی که از عملکرد smart home شما پشتیبانی می کند ، تعیین می کند که چه نوع رویدادهای اعلان در دسترس است و داده هایی که می توانید در آن اعلان ها درج کنید.
صفات زیر از اعلان های فعال پشتیبانی می کند:
صفت | رویدادها |
---|---|
ObjectDetection | اشیاء شناسایی شده توسط دستگاه ، مانند زمانی که صورت شناخته شده در درب تشخیص داده می شود. به عنوان مثال: "آلیس و باب در درب جلو هستند." |
RunCycle | دستگاه یک چرخه را تکمیل می کند. به عنوان مثال: "چرخه ماشین لباسشویی به پایان رسیده است." |
SensorState | دستگاه حالت سنسور پشتیبانی شده را تشخیص می دهد. به عنوان مثال: "ردیاب دود دود را تشخیص می دهد." |
صفات زیر از پاسخ های پیگیری پشتیبانی می کند:
صفت | رویدادها |
---|---|
LockUnlock | وضعیت تکمیل و تغییر وضعیت پس از اجرای action.devices.commands.LockUnlock دستگاه. به عنوان مثال: "درب جلو قفل شده است" یا "درب جلو خاموش است". |
NetworkControl | وضعیت تکمیل و تغییر دولت پس از اجرای action.devices.commands.TestNetworkSpeed دستور دستگاه. به عنوان مثال: "تست سرعت شبکه شما به پایان رسیده است. سرعت بارگیری در روتر دفتر در حال حاضر 80.2 کیلوبیت بر ثانیه است و سرعت بارگذاری 9.3 کیلوبیت بر ثانیه است." |
OpenClose | وضعیت تکمیل و تغییر وضعیت پس از اجرای action.devices.commands.OpenClose دستگاه. به عنوان مثال: "درب جلو باز شده است" یا "درب جلو نمی تواند باز شود." |
همه انواع دستگاه از اعلان های مربوط به صفات قابل اجرا پشتیبانی می کنند.
اعلان هایی را برای اقدام خانگی هوشمند خود بسازید
اعلان ها را در این مراحل به عملکرد smart home خود اضافه کنید:
- اگر اعلان ها از برنامه دستگاه smart home شما فعال شده اند ، به Google نشان دهید. اگر کاربران در برنامه شما اعلان ها را روشن یا خاموش می کنند ، یک درخواست
SYNC
ارسال کنید تا Google را از تغییر دستگاه مطلع کنید. - هنگامی که یک رویداد دستگاه مربوطه یا تغییر حالت رخ می دهد که باعث ایجاد اعلان می شود ، با تماس با API
reportStateAndNotification
Report State ، درخواست اعلان را ارسال کنید. اگر حالت دستگاه تغییر کند ، می توانید هر دو حالت و یک بار اعلان را در Report State و تماس اعلان خود ارسال کنید.
بخش های زیر این مراحل را با جزئیات بیشتر پوشش می دهد.
اگر اعلان ها در برنامه شما فعال شده اند ، مشخص کنید
کاربران می توانند با فعال کردن این ویژگی در GHA ، آیا می خواهند اعلان های فعال را دریافت کنند. در برنامه دستگاه smart home خود ، همچنین می توانید به طور اختیاری توانایی کاربران را برای انتقال صریح اعلان ها از دستگاه ، به عنوان مثال ، از تنظیمات برنامه خود اضافه کنید.
به Google نشان دهید که با برقراری یک تماس همگام سازی درخواست برای به روزرسانی داده های دستگاه ، اعلان ها برای دستگاه شما فعال می شوند. هر زمان که کاربران این تنظیمات را در برنامه خود تغییر دهند ، باید یک درخواست SYNC
مانند این ارسال کنید.
در پاسخ SYNC
خود ، یکی از این به روزرسانی ها را ارسال کنید:
- اگر کاربر صریحاً اعلان ها را در برنامه دستگاه شما تغییر داده است ، یا اگر گزینه ضامن را ارائه نمی دهید ،
devices.notificationSupportedByAgent
true
تنظیم کنید. - اگر کاربر صریحاً اعلان ها را در برنامه دستگاه خود خاموش کرد ،
false
devices.notificationSupportedByAgent
را تنظیم کنید.
قطعه زیر نمونه ای از نحوه تنظیم پاسخ همگام سازی خود را نشان می دهد:
devices: [{
id: 'device123',
...
notificationSupportedByAgent: true,
}]
درخواست اعلان را به Google ارسال کنید
برای تحریک اعلان ها در مورد Assistant ، تحقق شما از طریق یک Report State و تماس API API ، یک بار اعلان را به Google Home Graph ارسال می کند.
API Google Homegraph را فعال کنید
در Google Cloud Console ، به صفحه API Homegraph بروید.
به صفحه API Homegraph بروید- پروژه ای را انتخاب کنید که مطابق با شناسه پروژه smart home شما باشد.
- روی فعال کردن کلیک کنید
یک کلید حساب خدمات ایجاد کنید
این دستورالعمل ها را برای تولید یک کلید حساب سرویس از Google Cloud Console دنبال کنید:
در Google Cloud Console ، به صفحه کلید Create Service Account بروید.
به صفحه کلید Create Service بروید- از لیست حساب خدمات ، حساب خدمات جدید را انتخاب کنید.
- در قسمت نام حساب سرویس ، یک نام وارد کنید.
- در قسمت شناسه حساب سرویس ، یک شناسه را وارد کنید.
از لیست نقش ، حساب های خدمات > سازنده توکن حساب خدمات را انتخاب کنید.
برای نوع کلید ، گزینه JSON را انتخاب کنید.
- روی ایجاد کلیک کنید. یک فایل JSON که شامل بارگیری های کلید شما در رایانه شما است.
اعلان را ارسال کنید
درخواست اعلان را با استفاده از devices.reportStateAndNotification
تماس بگیرید. reportstateandnotification api. درخواست JSON شما باید شامل یک eventId
باشد ، که یک شناسه منحصر به فرد است که توسط پلتفرم شما برای این رویداد ایجاد شده است که باعث ایجاد اعلان می شود. eventId
باید یک شناسه تصادفی باشد که هر بار که درخواست اعلان ارسال می کنید متفاوت است.
در شیء notifications
که در تماس API خود عبور می کنید ، یک مقدار priority
را درج کنید که نحوه ارائه اعلان را مشخص می کند. شیء notifications
شما بسته به ویژگی دستگاه ممکن است شامل زمینه های مختلف باشد.
برای تنظیم بار و تماس با API یکی از این مسیرها را دنبال کنید:
ارسال یک بار اعلان فعال ارسال کنید
برای تماس با API ، گزینه ای را از یکی از این برگه ها انتخاب کنید:
HTTP
API Home Graph یک نقطه پایانی HTTP را فراهم می کند
- برای ایجاد یک توکن وب JSON (JWT) از پرونده JSON حساب بارگیری شده استفاده کنید. برای اطلاعات بیشتر ، به تأیید اعتبار با استفاده از یک حساب خدمات مراجعه کنید.
- با استفاده از oauth2l ، یک نشانه دسترسی OAUTH 2.0 با
https://www.googleapis.com/auth/homegraph
را بدست آورید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اطلاع رسانی آورده شده است: - Report State و اعلان JSON و نشانه را در درخواست HTTP POST خود به نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
، به عنوان یک آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "ObjectDetection": { "priority": 0, "detectionTimestamp": 1534875126750, "objects": { "named": [ "Alice" ], "unclassified": 2 } } } } } } }
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
API Home Graph یک نقطه پایانی GRPC را فراهم می کند
- تعریف سرویس بافر پروتکل را برای API Home Graph دریافت کنید.
- برای تولید خرد های مشتری برای یکی از زبانهای پشتیبانی شده ، مستندات توسعه دهنده GRPC را دنبال کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
مشتری Google APIS Node.js الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ، سرویس
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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { ObjectDetection: { priority: 0, detectionTimestamp: 1534875126750, objects: { named: ['Alice'], unclassified: 2 } } } } } } } });
جاوا
کتابخانه مشتری Homegraph API برای جاوا ، الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ،
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 notification payload. Map<?, ?> notifications = Map.of( "ObjectDetection", Map.of( "priority", 0, "detectionTimestamp", 1534875126, "objects", Map.of("named", List.of("Alice"), "unclassifed", 2))); // Send notification. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", notifications)))); homegraphService.devices().reportStateAndNotification(request);
ارسال پاسخ پیگیری را ارسال کنید
بار بازپرداخت برای پاسخ پیگیری شامل وضعیت درخواست ، کدهای خطا برای خرابی رویداد ، در صورت لزوم و followUpToken
معتبر ، ارائه شده در طول درخواست قصد EXECUTE
است. followUpToken
باید در مدت پنج دقیقه استفاده شود تا معتبر بماند و به درستی پاسخ را با درخواست اصلی مرتبط کند.
قطعه زیر نمونه ای را نشان می دهد که بار درخواست بار را با یک قسمت followUpToken
EXECUTE
.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123", }], "execution": [{ "command": "action.devices.commands.TestNetworkSpeed", "params": { "testDownloadSpeed": true, "testUploadSpeed": false, "followUpToken": "PLACEHOLDER" } }] }] } }] };
Google از followUpToken
برای خروجی اعلان فقط در دستگاهی که کاربر در ابتدا با آن تعامل داشت ، استفاده می کند و در تمام دستگاه های کاربر پخش نمی شود.
برای تماس با API ، گزینه ای را از یکی از این برگه ها انتخاب کنید:
HTTP
API Home Graph یک نقطه پایانی HTTP را فراهم می کند
- برای ایجاد یک توکن وب JSON (JWT) از پرونده JSON حساب بارگیری شده استفاده کنید. برای اطلاعات بیشتر ، به تأیید اعتبار با استفاده از یک حساب خدمات مراجعه کنید.
- با استفاده از oauth2l ، یک نشانه دسترسی OAUTH 2.0 با
https://www.googleapis.com/auth/homegraph
را بدست آورید: - درخواست JSON را با
agentUserId
ایجاد کنید. در اینجا یک نمونه درخواست JSON برای Report State و اطلاع رسانی آورده شده است: - Report State و اعلان JSON و نشانه را در درخواست HTTP POST خود به نقطه پایانی Google Home Graph ترکیب کنید. در اینجا مثالی از نحوه ایجاد درخواست در خط فرمان با استفاده از
curl
، به عنوان یک آزمایش آورده شده است:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "PLACEHOLDER-USER-ID", "eventId": "PLACEHOLDER-EVENT-ID", "requestId": "PLACEHOLDER-REQUEST-ID", "payload": { "devices": { "notifications": { "PLACEHOLDER-DEVICE-ID": { "NetworkControl": { "priority": 0, "followUpResponse": { "status": "SUCCESS", "followUpToken": "PLACEHOLDER", "networkDownloadSpeedMbps": 23.3, "networkUploadSpeedMbps": 10.2 } } } } } } }
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
API Home Graph یک نقطه پایانی GRPC را فراهم می کند
- تعریف سرویس بافر پروتکل را برای API Home Graph دریافت کنید.
- برای تولید خرد های مشتری برای یکی از زبانهای پشتیبانی شده ، مستندات توسعه دهنده GRPC را دنبال کنید.
- با روش ReportStateAndNotification تماس بگیرید.
Node.js
مشتری Google APIS Node.js الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ، سرویس
google.homegraph
را اولیه کنید. - با روش
reportStateAndNotification
با ReportStateAndNotificationRequest تماس بگیرید. این یکPromise
با ReportStateAndNotificationResponse را برمی گرداند.
const followUpToken = executionRequest.inputs[0].payload.commands[0].execution[0].params.followUpToken; 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', eventId: 'PLACEHOLDER-EVENT-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { notifications: { 'PLACEHOLDER-DEVICE-ID': { NetworkControl: { priority: 0, followUpResponse: { status: 'SUCCESS', followUpToken, networkDownloadSpeedMbps: 23.3, networkUploadSpeedMbps: 10.2, } } } } } } } });
جاوا
کتابخانه مشتری Homegraph API برای جاوا ، الزاماتی را برای API Home Graph فراهم می کند.
- با استفاده از اعتبار پیش فرض برنامه ،
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(); // Extract follow-up token. ExecuteRequest.Inputs executeInputs = (Inputs) executeRequest.getInputs()[0]; String followUpToken = (String) executeInputs .getPayload() .getCommands()[0] .getExecution()[0] .getParams() .get("followUpToken"); // Build device follow-up response payload. Map<?, ?> followUpResponse = Map.of( "NetworkControl", Map.of( "priority", 0, "followUpResponse", Map.of( "status", "SUCCESS", "followUpToken", followUpToken, "networkDownloadSpeedMbps", 23.3, "networkUploadSpeedMbps", 10.2))); // Send follow-up response. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setEventId("PLACEHOLDER-EVENT-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", followUpResponse)))); homegraphService.devices().reportStateAndNotification(request);
ورود به سیستم
اعلان ها از ورود به رویداد پشتیبانی می کنند همانطور که در گزارش های رویداد دسترسی با ورود به ابر مشخص شده است. این سیاهههای مربوط برای آزمایش و حفظ کیفیت اعلان ها در عمل شما مفید هستند.
در زیر طرح ورود یک notificationLog
است:
اموال | توضیحات |
---|---|
requestId | شناسه درخواست اعلان |
structName | نام ساختار اعلان ، مانند "ObjectDeetection". |
status | وضعیت اعلان را نشان می دهد. |
قسمت status
شامل وضعیت های مختلفی است که ممکن است خطاهای موجود در بار اعلان را نشان دهد. برخی از این موارد فقط ممکن است در مورد اقداماتی که برای تولید راه اندازی نشده اند در دسترس باشند.
وضعیت مثال شامل موارد زیر است:
وضعیت | توضیحات |
---|---|
EVENT_ID_MISSING | نشان می دهد که قسمت مورد نیاز eventId از دست رفته است. |
PRIORITY_MISSING | نشان می دهد که یک قسمت priority از دست رفته است. |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | نشان می دهد که ویژگی های اعلان دستگاه notificationSupportedByAgent های ارائه شده در SYNC نادرست است. |
NOTIFICATION_ENABLED_BY_USER_FALSE | نشان می دهد که کاربر اعلان هایی را در مورد دستگاه اعلان در GHA فعال نکرده است. این وضعیت فقط در مورد اقداماتی که برای تولید راه اندازی نشده اند در دسترس است. |
NOTIFYING_DEVICE_NOT_IN_STRUCTURE | نشان می دهد که کاربر دستگاه اطلاع رسانی را به خانه/ساختار اختصاص نداده است. این وضعیت فقط در مورد اقداماتی که برای تولید راه اندازی نشده اند در دسترس است. |
علاوه بر این وضعیت های کلی که می توانند برای کلیه اعلان ها اعمال شوند ، زمینه status
همچنین ممکن است شامل وضعیت های خاص صفت در صورت لزوم باشد (به عنوان مثال OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING
).