স্মার্ট হোম অ্যাকশনের জন্য বিজ্ঞপ্তি

বিজ্ঞপ্তিগুলি আপনার 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 অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:

  1. আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি SYNC অনুরোধ পাঠান।
  2. যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, 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 সক্ষম করুন

  1. Google Cloud Console , HomeGraph API পৃষ্ঠাতে যান।

    HomeGraph API পৃষ্ঠায় যান
  2. আপনার smart home প্রোজেক্ট আইডির সাথে মেলে এমন প্রজেক্ট নির্বাচন করুন।
  3. ENABLE এ ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন

Google Cloud Console থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:

দ্রষ্টব্য : এই পদক্ষেপগুলি সম্পাদন করার সময় আপনি সঠিক GCP প্রকল্প ব্যবহার করছেন তা নিশ্চিত করুন। এটি সেই প্রজেক্ট যা আপনার smart home প্রোজেক্ট আইডির সাথে মেলে।
  1. Google Cloud Console , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷

    পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান
  2. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  4. পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
  5. ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।

  6. কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।

  7. তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

বিজ্ঞপ্তি পাঠান

devices.reportStateAndNotification API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷

আপনার API কলে আপনি যে notifications অবজেক্টটি পাস করেন তাতে একটি priority মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।

পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:

একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান

API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন।
  2. 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 এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন
  2. 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 অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:

  1. আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি SYNC অনুরোধ পাঠান।
  2. যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, 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 সক্ষম করুন

  1. Google Cloud Console , HomeGraph API পৃষ্ঠাতে যান।

    HomeGraph API পৃষ্ঠায় যান
  2. আপনার smart home প্রোজেক্ট আইডির সাথে মেলে এমন প্রজেক্ট নির্বাচন করুন।
  3. ENABLE এ ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন

Google Cloud Console থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:

দ্রষ্টব্য : এই পদক্ষেপগুলি সম্পাদন করার সময় আপনি সঠিক GCP প্রকল্প ব্যবহার করছেন তা নিশ্চিত করুন। এটি সেই প্রজেক্ট যা আপনার smart home প্রোজেক্ট আইডির সাথে মেলে।
  1. Google Cloud Console , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷

    পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান
  2. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  4. পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
  5. ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।

  6. কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।

  7. তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

বিজ্ঞপ্তি পাঠান

devices.reportStateAndNotification API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷

আপনার API কলে আপনি যে notifications অবজেক্টটি পাস করেন তাতে একটি priority মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।

পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:

একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান

API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন।
  2. 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 এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন
  2. 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 অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:

  1. আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি SYNC অনুরোধ পাঠান।
  2. যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, 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 সক্ষম করুন

  1. Google Cloud Console , HomeGraph API পৃষ্ঠাতে যান।

    HomeGraph API পৃষ্ঠায় যান
  2. আপনার smart home প্রোজেক্ট আইডির সাথে মেলে এমন প্রজেক্ট নির্বাচন করুন।
  3. ENABLE এ ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন

Google Cloud Console থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:

দ্রষ্টব্য : এই পদক্ষেপগুলি সম্পাদন করার সময় আপনি সঠিক GCP প্রকল্প ব্যবহার করছেন তা নিশ্চিত করুন। এটি সেই প্রজেক্ট যা আপনার smart home প্রোজেক্ট আইডির সাথে মেলে।
  1. Google Cloud Console , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷

    পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান
  2. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  4. পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
  5. ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।

  6. কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।

  7. তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

বিজ্ঞপ্তি পাঠান

devices.reportStateAndNotification API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷

আপনার API কলে আপনি যে notifications অবজেক্টটি পাস করেন তাতে একটি priority মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।

পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:

একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান

API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন।
  2. 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 এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন
  2. 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 অ্যাকশনে বিজ্ঞপ্তি যোগ করুন:

  1. আপনার smart home ডিভাইস অ্যাপ থেকে বিজ্ঞপ্তি চালু করা থাকলে Google-কে নির্দেশ করুন। ব্যবহারকারীরা আপনার অ্যাপে বিজ্ঞপ্তি চালু বা বন্ধ করলে, Google-কে ডিভাইসের পরিবর্তন সম্পর্কে জানাতে একটি SYNC অনুরোধ পাঠান।
  2. যখন একটি প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি বিজ্ঞপ্তি ট্রিগার করে, 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 সক্ষম করুন

  1. Google Cloud Console , HomeGraph API পৃষ্ঠাতে যান।

    HomeGraph API পৃষ্ঠায় যান
  2. আপনার smart home প্রোজেক্ট আইডির সাথে মেলে এমন প্রজেক্ট নির্বাচন করুন।
  3. ENABLE এ ক্লিক করুন।

একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন

Google Cloud Console থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:

দ্রষ্টব্য : এই পদক্ষেপগুলি সম্পাদন করার সময় আপনি সঠিক GCP প্রকল্প ব্যবহার করছেন তা নিশ্চিত করুন। এটি সেই প্রজেক্ট যা আপনার smart home প্রোজেক্ট আইডির সাথে মেলে।
  1. Google Cloud Console , পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠাতে যান৷

    পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান
  2. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  4. পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
  5. ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।

  6. কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।

  7. তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

বিজ্ঞপ্তি পাঠান

devices.reportStateAndNotification API ব্যবহার করে বিজ্ঞপ্তি অনুরোধ কল করুন। আপনার JSON অনুরোধে অবশ্যই একটি eventId অন্তর্ভুক্ত করতে হবে, যা বিজ্ঞপ্তিটি ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্মের দ্বারা তৈরি একটি অনন্য আইডি। eventId একটি র্যান্ডম আইডি হওয়া উচিত যা আপনি যখনই একটি বিজ্ঞপ্তি অনুরোধ পাঠান তখন আলাদা হয়৷

আপনার API কলে আপনি যে notifications অবজেক্টটি পাস করেন তাতে একটি priority মান অন্তর্ভুক্ত করুন যা বিজ্ঞপ্তিটি কীভাবে উপস্থাপন করা উচিত তা নির্ধারণ করে। ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে আপনার notifications অবজেক্টে বিভিন্ন ক্ষেত্র অন্তর্ভুক্ত থাকতে পারে।

পেলোড সেট করতে এবং API কল করতে এই পথগুলির মধ্যে একটি অনুসরণ করুন:

একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান

API কল করতে, এই ট্যাবগুলির মধ্যে একটি থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন।
  2. 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 এন্ডপয়েন্ট প্রদান করে

  1. একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId দিয়ে JSON অনুরোধ তৈরি করুন। Report State এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:
  5. {
      "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
                }
              }
            }
          }
        }
      }
    }
    
  6. Report State এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph API একটি gRPC শেষ পয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
  3. ReportStateAndNotification পদ্ধতিতে কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. 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-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে HomeGraphApiService আরম্ভ করুন
  2. 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 )।