বিজ্ঞপ্তিগুলি আপনার 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 Kbps, এবং আপলোডের গতি 9.3 Kbps।" |
OpenClose | action.devices.commands.OpenClose ডিভাইস কমান্ড কার্যকর করার পরে সমাপ্তির স্থিতি এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "সামনের দরজা খোলা হয়েছে" বা "সামনের দরজা খোলা যায়নি।" |
সমস্ত ডিভাইস প্রকার প্রযোজ্য বৈশিষ্ট্যগুলির জন্য বিজ্ঞপ্তি সমর্থন করে৷
আপনার স্মার্ট হোম অ্যাকশনের জন্য বিজ্ঞপ্তি তৈরি করুন
এই ধাপে আপনার smart home অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:
- আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি
SYNC
অনুরোধ পাঠান। - যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, Report State
reportStateAndNotification
API এ কল করে একটি বিজ্ঞপ্তি অনুরোধ পাঠান। ডিভাইসের অবস্থা পরিবর্তিত হলে, আপনি আপনার Report State এবং বিজ্ঞপ্তি কলে একটি স্টেট এবং নোটিফিকেশন পেলোড উভয়ই একসাথে পাঠাতে পারেন।
নিম্নলিখিত বিভাগগুলি এই পদক্ষেপগুলিকে আরও বিশদে কভার করে৷
আপনার অ্যাপে বিজ্ঞপ্তিগুলি সক্ষম করা আছে কিনা তা নির্দেশ করুন৷
ব্যবহারকারীরা GHA তে এই বৈশিষ্ট্যটি সক্ষম করে সক্রিয় বিজ্ঞপ্তিগুলি পেতে চান কিনা তা চয়ন করতে পারেন৷ আপনার smart home ডিভাইসের জন্য অ্যাপটিতে, আপনি বিকল্পভাবে ব্যবহারকারীদের ডিভাইস থেকে বিজ্ঞপ্তি টগল করার ক্ষমতাও যোগ করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপ সেটিংস থেকে।
Google-কে নির্দেশ করুন যে ডিভাইস ডেটা আপডেট করার জন্য একটি অনুরোধ SYNC কল করে আপনার ডিভাইসের জন্য বিজ্ঞপ্তিগুলি সক্ষম করা হয়েছে৷ ব্যবহারকারীরা যখনই আপনার অ্যাপে এই সেটিং পরিবর্তন করে তখনই আপনাকে এইরকম একটি SYNC
অনুরোধ পাঠাতে হবে।
আপনার SYNC
প্রতিক্রিয়াতে, এই আপডেটগুলির মধ্যে একটি পাঠান:
- ব্যবহারকারী যদি স্পষ্টভাবে আপনার ডিভাইস অ্যাপে নোটিফিকেশনগুলিকে টগল করে থাকেন, অথবা আপনি যদি টগল বিকল্প না দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিটিকেtrue
সেট করুন। - ব্যবহারকারী যদি আপনার ডিভাইস অ্যাপে স্পষ্টভাবে নোটিফিকেশন টগল করে বন্ধ করে দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিfalse
সেট করুন।
নিম্নলিখিত স্নিপেটটি আপনার সিঙ্ক প্রতিক্রিয়া কীভাবে সেট করবেন তার একটি উদাহরণ দেখায়:
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 , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷
পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান- পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
- পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
- পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।
কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷
বিজ্ঞপ্তি পাঠান
devices.reportStateAndNotification
API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId
অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId
একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷
আপনার API কলে আপনি যে notifications
অবজেক্টটি পাস করেন তাতে একটি priority
মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications
অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।
পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:
একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান
API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:
HTTP
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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 } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন। -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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, } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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 | বিজ্ঞপ্তি কাঠামোর নাম, যেমন "অবজেক্ট ডিটেকশন"। |
status | বিজ্ঞপ্তির অবস্থা নির্দেশ করে। |
status
ফিল্ডে বিভিন্ন স্ট্যাটাস রয়েছে যা বিজ্ঞপ্তি পেলোডে ত্রুটি নির্দেশ করতে পারে। এর মধ্যে কিছু শুধুমাত্র অ্যাকশনে উপলব্ধ হতে পারে যেগুলি উৎপাদনে চালু হয়নি।
উদাহরণ স্থিতি অন্তর্ভুক্ত:
স্ট্যাটাস | বর্ণনা |
---|---|
EVENT_ID_MISSING | নির্দেশ করে যে প্রয়োজনীয় eventId ক্ষেত্রটি অনুপস্থিত। |
PRIORITY_MISSING | নির্দেশ করে যে একটি priority ক্ষেত্র অনুপস্থিত। |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | নির্দেশ করে যে সূচনাকারী ডিভাইসের বিজ্ঞপ্তি SYNC তে প্রদত্ত notificationSupportedByAgent সম্পত্তি মিথ্যা৷ |
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 Kbps, এবং আপলোডের গতি 9.3 Kbps।" |
OpenClose | action.devices.commands.OpenClose ডিভাইস কমান্ড কার্যকর করার পরে সমাপ্তির স্থিতি এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "সামনের দরজা খোলা হয়েছে" বা "সামনের দরজা খোলা যায়নি।" |
সমস্ত ডিভাইস প্রকার প্রযোজ্য বৈশিষ্ট্যগুলির জন্য বিজ্ঞপ্তি সমর্থন করে৷
আপনার স্মার্ট হোম অ্যাকশনের জন্য বিজ্ঞপ্তি তৈরি করুন
এই ধাপে আপনার smart home অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:
- আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি
SYNC
অনুরোধ পাঠান। - যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, Report State
reportStateAndNotification
API এ কল করে একটি বিজ্ঞপ্তি অনুরোধ পাঠান। ডিভাইসের অবস্থা পরিবর্তিত হলে, আপনি আপনার Report State এবং বিজ্ঞপ্তি কলে একটি স্টেট এবং নোটিফিকেশন পেলোড উভয়ই একসাথে পাঠাতে পারেন।
নিম্নলিখিত বিভাগগুলি এই পদক্ষেপগুলিকে আরও বিশদে কভার করে৷
আপনার অ্যাপে বিজ্ঞপ্তিগুলি সক্ষম করা আছে কিনা তা নির্দেশ করুন৷
ব্যবহারকারীরা GHA তে এই বৈশিষ্ট্যটি সক্ষম করে সক্রিয় বিজ্ঞপ্তিগুলি পেতে চান কিনা তা চয়ন করতে পারেন৷ আপনার smart home ডিভাইসের জন্য অ্যাপটিতে, আপনি বিকল্পভাবে ব্যবহারকারীদের ডিভাইস থেকে বিজ্ঞপ্তি টগল করার ক্ষমতাও যোগ করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপ সেটিংস থেকে।
Google-কে নির্দেশ করুন যে ডিভাইস ডেটা আপডেট করার জন্য একটি অনুরোধ SYNC কল করে আপনার ডিভাইসের জন্য বিজ্ঞপ্তিগুলি সক্ষম করা হয়েছে৷ ব্যবহারকারীরা যখনই আপনার অ্যাপে এই সেটিং পরিবর্তন করে তখনই আপনাকে এইরকম একটি SYNC
অনুরোধ পাঠাতে হবে।
আপনার SYNC
প্রতিক্রিয়াতে, এই আপডেটগুলির মধ্যে একটি পাঠান:
- ব্যবহারকারী যদি স্পষ্টভাবে আপনার ডিভাইস অ্যাপে নোটিফিকেশনগুলিকে টগল করে থাকেন, অথবা আপনি যদি টগল বিকল্প না দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিটিকেtrue
সেট করুন। - ব্যবহারকারী যদি আপনার ডিভাইস অ্যাপে স্পষ্টভাবে নোটিফিকেশন টগল করে বন্ধ করে দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিfalse
সেট করুন।
নিম্নলিখিত স্নিপেটটি আপনার সিঙ্ক প্রতিক্রিয়া কীভাবে সেট করবেন তার একটি উদাহরণ দেখায়:
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 , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷
পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান- পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
- পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
- পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।
কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷
বিজ্ঞপ্তি পাঠান
devices.reportStateAndNotification
API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId
অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId
একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷
আপনার API কলে আপনি যে notifications
অবজেক্টটি পাস করেন তাতে একটি priority
মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications
অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।
পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:
একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান
API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:
HTTP
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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 } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন। -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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, } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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 | বিজ্ঞপ্তি কাঠামোর নাম, যেমন "অবজেক্ট ডিটেকশন"। |
status | বিজ্ঞপ্তির অবস্থা নির্দেশ করে। |
status
ফিল্ডে বিভিন্ন স্ট্যাটাস রয়েছে যা বিজ্ঞপ্তি পেলোডে ত্রুটি নির্দেশ করতে পারে। এর মধ্যে কিছু শুধুমাত্র অ্যাকশনে উপলব্ধ হতে পারে যেগুলি উৎপাদনে চালু হয়নি।
উদাহরণ স্থিতি অন্তর্ভুক্ত:
স্ট্যাটাস | বর্ণনা |
---|---|
EVENT_ID_MISSING | নির্দেশ করে যে প্রয়োজনীয় eventId ক্ষেত্রটি অনুপস্থিত। |
PRIORITY_MISSING | নির্দেশ করে যে একটি priority ক্ষেত্র অনুপস্থিত। |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | নির্দেশ করে যে সূচনাকারী ডিভাইসের বিজ্ঞপ্তি SYNC তে প্রদত্ত notificationSupportedByAgent সম্পত্তি মিথ্যা৷ |
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 Kbps, এবং আপলোডের গতি 9.3 Kbps।" |
OpenClose | action.devices.commands.OpenClose ডিভাইস কমান্ড কার্যকর করার পরে সমাপ্তির স্থিতি এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "সামনের দরজা খোলা হয়েছে" বা "সামনের দরজা খোলা যায়নি।" |
সমস্ত ডিভাইস প্রকার প্রযোজ্য বৈশিষ্ট্যগুলির জন্য বিজ্ঞপ্তি সমর্থন করে৷
আপনার স্মার্ট হোম অ্যাকশনের জন্য বিজ্ঞপ্তি তৈরি করুন
এই ধাপে আপনার smart home অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:
- আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি
SYNC
অনুরোধ পাঠান। - যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, Report State
reportStateAndNotification
API এ কল করে একটি বিজ্ঞপ্তি অনুরোধ পাঠান। ডিভাইসের অবস্থা পরিবর্তিত হলে, আপনি আপনার Report State এবং বিজ্ঞপ্তি কলে একটি স্টেট এবং নোটিফিকেশন পেলোড উভয়ই একসাথে পাঠাতে পারেন।
নিম্নলিখিত বিভাগগুলি এই পদক্ষেপগুলিকে আরও বিশদে কভার করে৷
আপনার অ্যাপে বিজ্ঞপ্তিগুলি সক্ষম করা আছে কিনা তা নির্দেশ করুন৷
ব্যবহারকারীরা GHA তে এই বৈশিষ্ট্যটি সক্ষম করে সক্রিয় বিজ্ঞপ্তিগুলি পেতে চান কিনা তা চয়ন করতে পারেন৷ আপনার smart home ডিভাইসের জন্য অ্যাপটিতে, আপনি বিকল্পভাবে ব্যবহারকারীদের ডিভাইস থেকে বিজ্ঞপ্তি টগল করার ক্ষমতাও যোগ করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপ সেটিংস থেকে।
Google-কে নির্দেশ করুন যে ডিভাইস ডেটা আপডেট করার জন্য একটি অনুরোধ SYNC কল করে আপনার ডিভাইসের জন্য বিজ্ঞপ্তিগুলি সক্ষম করা হয়েছে৷ ব্যবহারকারীরা যখনই আপনার অ্যাপে এই সেটিং পরিবর্তন করে তখনই আপনাকে এইরকম একটি SYNC
অনুরোধ পাঠাতে হবে।
আপনার SYNC
প্রতিক্রিয়াতে, এই আপডেটগুলির মধ্যে একটি পাঠান:
- ব্যবহারকারী যদি স্পষ্টভাবে আপনার ডিভাইস অ্যাপে নোটিফিকেশনগুলিকে টগল করে থাকেন, অথবা আপনি যদি টগল বিকল্প না দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিটিকেtrue
সেট করুন। - ব্যবহারকারী যদি আপনার ডিভাইস অ্যাপে স্পষ্টভাবে নোটিফিকেশন টগল করে বন্ধ করে দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিfalse
সেট করুন।
নিম্নলিখিত স্নিপেটটি আপনার সিঙ্ক প্রতিক্রিয়া কীভাবে সেট করবেন তার একটি উদাহরণ দেখায়:
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 , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷
পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান- পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
- পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
- পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।
কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷
বিজ্ঞপ্তি পাঠান
devices.reportStateAndNotification
API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId
অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId
একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷
আপনার API কলে আপনি যে notifications
অবজেক্টটি পাস করেন তাতে একটি priority
মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications
অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।
পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:
একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান
API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:
HTTP
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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 } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন। -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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, } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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 | বিজ্ঞপ্তি কাঠামোর নাম, যেমন "অবজেক্ট ডিটেকশন"। |
status | বিজ্ঞপ্তির অবস্থা নির্দেশ করে। |
status
ফিল্ডে বিভিন্ন স্ট্যাটাস রয়েছে যা বিজ্ঞপ্তি পেলোডে ত্রুটি নির্দেশ করতে পারে। এর মধ্যে কিছু শুধুমাত্র অ্যাকশনে উপলব্ধ হতে পারে যেগুলি উৎপাদনে চালু হয়নি।
উদাহরণ স্থিতি অন্তর্ভুক্ত:
স্ট্যাটাস | বর্ণনা |
---|---|
EVENT_ID_MISSING | নির্দেশ করে যে প্রয়োজনীয় eventId ক্ষেত্রটি অনুপস্থিত। |
PRIORITY_MISSING | নির্দেশ করে যে একটি priority ক্ষেত্র অনুপস্থিত। |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | নির্দেশ করে যে সূচনাকারী ডিভাইসের বিজ্ঞপ্তি SYNC তে প্রদত্ত notificationSupportedByAgent সম্পত্তি মিথ্যা৷ |
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 Kbps, এবং আপলোডের গতি 9.3 Kbps।" |
OpenClose | action.devices.commands.OpenClose ডিভাইস কমান্ড কার্যকর করার পরে সমাপ্তির স্থিতি এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "সামনের দরজা খোলা হয়েছে" বা "সামনের দরজা খোলা যায়নি।" |
সমস্ত ডিভাইস প্রকার প্রযোজ্য বৈশিষ্ট্যগুলির জন্য বিজ্ঞপ্তি সমর্থন করে৷
আপনার স্মার্ট হোম অ্যাকশনের জন্য বিজ্ঞপ্তি তৈরি করুন
এই ধাপে আপনার smart home অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:
- আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি
SYNC
অনুরোধ পাঠান। - যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, Report State
reportStateAndNotification
API এ কল করে একটি বিজ্ঞপ্তি অনুরোধ পাঠান। ডিভাইসের অবস্থা পরিবর্তিত হলে, আপনি আপনার Report State এবং বিজ্ঞপ্তি কলে একটি স্টেট এবং নোটিফিকেশন পেলোড উভয়ই একসাথে পাঠাতে পারেন।
নিম্নলিখিত বিভাগগুলি এই পদক্ষেপগুলিকে আরও বিশদে কভার করে৷
আপনার অ্যাপে বিজ্ঞপ্তিগুলি সক্ষম করা আছে কিনা তা নির্দেশ করুন৷
ব্যবহারকারীরা GHA তে এই বৈশিষ্ট্যটি সক্ষম করে সক্রিয় বিজ্ঞপ্তিগুলি পেতে চান কিনা তা চয়ন করতে পারেন৷ আপনার smart home ডিভাইসের জন্য অ্যাপটিতে, আপনি বিকল্পভাবে ব্যবহারকারীদের ডিভাইস থেকে বিজ্ঞপ্তি টগল করার ক্ষমতাও যোগ করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপ সেটিংস থেকে।
Google-কে নির্দেশ করুন যে ডিভাইস ডেটা আপডেট করার জন্য একটি অনুরোধ SYNC কল করে আপনার ডিভাইসের জন্য বিজ্ঞপ্তিগুলি সক্ষম করা হয়েছে৷ ব্যবহারকারীরা যখনই আপনার অ্যাপে এই সেটিং পরিবর্তন করে তখনই আপনাকে এইরকম একটি SYNC
অনুরোধ পাঠাতে হবে।
আপনার SYNC
প্রতিক্রিয়াতে, এই আপডেটগুলির মধ্যে একটি পাঠান:
- ব্যবহারকারী যদি স্পষ্টভাবে আপনার ডিভাইস অ্যাপে নোটিফিকেশনগুলিকে টগল করে থাকেন, অথবা আপনি যদি টগল বিকল্প না দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিটিকেtrue
সেট করুন। - ব্যবহারকারী যদি আপনার ডিভাইস অ্যাপে স্পষ্টভাবে নোটিফিকেশন টগল করে বন্ধ করে দেন, তাহলে
devices.notificationSupportedByAgent
প্রপার্টিfalse
সেট করুন।
নিম্নলিখিত স্নিপেটটি আপনার সিঙ্ক প্রতিক্রিয়া কীভাবে সেট করবেন তার একটি উদাহরণ দেখায়:
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 , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷
পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান- পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
- পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
- পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।
কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।
- তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷
বিজ্ঞপ্তি পাঠান
devices.reportStateAndNotification
API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId
অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId
একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷
আপনার API কলে আপনি যে notifications
অবজেক্টটি পাস করেন তাতে একটি priority
মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications
অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।
পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:
একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান
API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:
HTTP
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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 } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন। -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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
Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraph
স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: -
agentUserId
দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে: - 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraph
পরিষেবা শুরু করুন। - ReportStateAndNotificationRequest সহ
reportStateAndNotification
পদ্ধতিতে কল করুন। এটি 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, } } } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiService
আরম্ভ করুন -
ReportStateAndNotificationRequest
সহreportStateAndNotification
পদ্ধতিতে কল করুন। এটি একটি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 | বিজ্ঞপ্তি কাঠামোর নাম, যেমন "অবজেক্ট ডিটেকশন"। |
status | বিজ্ঞপ্তির অবস্থা নির্দেশ করে। |
status
ফিল্ডে বিভিন্ন স্ট্যাটাস রয়েছে যা বিজ্ঞপ্তি পেলোডে ত্রুটি নির্দেশ করতে পারে। এর মধ্যে কিছু শুধুমাত্র অ্যাকশনে উপলব্ধ হতে পারে যেগুলি উৎপাদনে চালু হয়নি।
উদাহরণ স্থিতি অন্তর্ভুক্ত:
স্ট্যাটাস | বর্ণনা |
---|---|
EVENT_ID_MISSING | নির্দেশ করে যে প্রয়োজনীয় eventId ক্ষেত্রটি অনুপস্থিত। |
PRIORITY_MISSING | নির্দেশ করে যে একটি priority ক্ষেত্র অনুপস্থিত। |
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE | নির্দেশ করে যে সূচনাকারী ডিভাইসের বিজ্ঞপ্তি SYNC তে প্রদত্ত notificationSupportedByAgent সম্পত্তি মিথ্যা৷ |
NOTIFICATION_ENABLED_BY_USER_FALSE | ইঙ্গিত করে যে ব্যবহারকারী GHA তে বিজ্ঞপ্তি প্রদানকারী ডিভাইসে বিজ্ঞপ্তিগুলি সক্ষম করেনি৷ এই স্ট্যাটাসটি শুধুমাত্র এমন অ্যাকশনগুলিতে পাওয়া যায় যেগুলি প্রোডাকশনে লঞ্চ করা হয়নি। |
NOTIFYING_DEVICE_NOT_IN_STRUCTURE | ইঙ্গিত করে যে ব্যবহারকারী একটি হোম/কাঠামোতে বিজ্ঞপ্তি ডিভাইসটি বরাদ্দ করেননি৷ এই স্ট্যাটাসটি শুধুমাত্র এমন অ্যাকশনগুলিতে পাওয়া যায় যেগুলি প্রোডাকশনে লঞ্চ করা হয়নি। |
এই সাধারণ স্ট্যাটাসগুলি ছাড়াও যা সমস্ত বিজ্ঞপ্তিতে প্রযোজ্য হতে পারে, status
ক্ষেত্রে প্রযোজ্য ক্ষেত্রে বৈশিষ্ট্য-নির্দিষ্ট স্থিতিগুলিও অন্তর্ভুক্ত থাকতে পারে (যেমন OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING
)।