ইভেন্ট

ইভেন্টগুলি অ্যাসিঙ্ক্রোনাস এবং Google ক্লাউড পাব/সাব দ্বারা পরিচালিত হয়, প্রতি একক বিষয়ে Project। ইভেন্টগুলি সমস্ত ডিভাইস এবং কাঠামোর জন্য আপডেট প্রদান করে এবং ব্যবহারকারীর দ্বারা অ্যাক্সেস টোকেন প্রত্যাহার না করা এবং ইভেন্ট বার্তাগুলির মেয়াদ শেষ না হওয়া পর্যন্ত ইভেন্টগুলির প্রাপ্তি নিশ্চিত করা হয়।

ইভেন্টগুলি সক্ষম করুন

ইভেন্টগুলি SDM API-এর একটি ঐচ্ছিক বৈশিষ্ট্য। দেখুন ইভেন্টগুলি সক্ষম করুন আপনার জন্য কীভাবে এগুলি সক্ষম করবেন তা শিখতে Project.

গুগল ক্লাউড পাব/সাব

পাব/সাব কীভাবে কাজ করে সে সম্পর্কে আরও জানতে গুগল ক্লাউড পাব/সাব ডকুমেন্টেশন দেখুন। বিশেষ করে:

ইভেন্ট সাবস্ক্রিপশন

জানুয়ারী ২০২৫ এর আগে, যদি আপনার জন্য ইভেন্টগুলি সক্ষম করা হত Project, আপনাকে সেই বিষয়ের জন্য নির্দিষ্ট একটি বিষয় দেওয়া হত Project আইডি, এই আকারে:

projects/gcp-project-name/subscriptions/topic-id
জানুয়ারী ২০২৫ এর পরে তৈরি প্রকল্পগুলিকে তাদের পাব/সাব বিষয়গুলি স্ব-হোস্ট করতে হবে এবং আপনাকে আপনার নিজস্ব বিষয় আইডি প্রদান করতে হবে। আরও তথ্যের জন্য একটি বিষয় তৈরি করুন দেখুন।

ইভেন্টগুলি গ্রহণ করতে, আপনার ব্যবহারের ক্ষেত্রের উপর নির্ভর করে সেই বিষয়ে একটি পুল বা পুশ সাবস্ক্রিপশন তৈরি করুন। SDM বিষয়ের একাধিক সাবস্ক্রিপশন সমর্থিত। আরও তথ্যের জন্য সাবস্ক্রিপশন পরিচালনা দেখুন।

ইভেন্ট শুরু করুন

Pub/Sub সাবস্ক্রিপশন তৈরি হয়ে গেলে প্রথমবারের মতো ইভেন্ট শুরু করতে, এককালীন ট্রিগার হিসেবে devices.list API কল করুন। এই কলের পরে সমস্ত স্ট্রাকচার এবং ডিভাইসের ইভেন্ট প্রকাশিত হবে।

উদাহরণস্বরূপ, দ্রুত শুরু নির্দেশিকাতে অনুমোদন পৃষ্ঠাটি দেখুন।

ইভেন্টের ক্রম

পাব/সাব ইভেন্টের অর্ডার করা ডেলিভারির গ্যারান্টি দেয় না এবং ইভেন্টের প্রাপ্তির ক্রম আসলে যে ক্রমানুসারে ঘটেছিল তার সাথে সঙ্গতিপূর্ণ নাও হতে পারে। ইভেন্টের ক্রম সমন্বয় করতে timestamp ক্ষেত্রটি ব্যবহার করুন। ইভেন্টগুলি পৃথকভাবে বা একটি একক ইভেন্ট বার্তায় একত্রিত হতে পারে।

আরও তথ্যের জন্য, অর্ডারিং বার্তা দেখুন।

ব্যবহারকারী আইডি

যদি আপনার বাস্তবায়ন ব্যবহারকারীদের উপর ভিত্তি করে করা হয় (কাঠামো বা ডিভাইসের পরিবর্তে), তাহলে রিসোর্স এবং ইভেন্টের সাথে সম্পর্ক স্থাপনের জন্য ইভেন্ট পেলোড থেকে userID ক্ষেত্রটি ব্যবহার করুন। এই ক্ষেত্রটি একটি অস্পষ্ট আইডি যা একটি নির্দিষ্ট ব্যবহারকারীর প্রতিনিধিত্ব করে।

প্রতিটি API কলের HTTP রেসপন্স হেডারেও userID পাওয়া যায়।

সম্পর্কের ঘটনা

রিলেশন ইভেন্টগুলি একটি রিসোর্সের জন্য একটি রিলেশনাল আপডেট উপস্থাপন করে। উদাহরণস্বরূপ, যখন একটি ডিভাইস একটি কাঠামোতে যোগ করা হয়, অথবা যখন একটি ডিভাইস একটি কাঠামো থেকে মুছে ফেলা হয়।

তিন ধরণের সম্পর্কের ঘটনা রয়েছে:

  • তৈরি
  • মুছে ফেলা হয়েছে
  • আপডেট করা হয়েছে

একটি রিলেশন ইভেন্টের পেলোড নিম্নরূপ:

পেলোড

{
  "eventId" : "44c9544b-72bb-4def-9527-e5f41070d59e",
  "timestamp" : "2019-01-01T00:00:01Z",
  "relationUpdate" : {
    "type" : "CREATED",
    "subject" : "enterprises/project-id/structures/structure-id",
    "object" : "enterprises/project-id/devices/device-id"
  },
  "userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi"
}

একটি রিলেশন ইভেন্টে, object হলো সেই রিসোর্স যা ইভেন্টটিকে ট্রিগার করেছিল এবং subject হলো সেই রিসোর্স যার সাথে object এখন সম্পর্ক রয়েছে। উপরের উদাহরণে, a user এই নির্দিষ্ট ডিভাইসে অ্যাক্সেস দিয়েছে একটি developer, এবং userএর অনুমোদিত ডিভাইসটি এখন তাদের অনুমোদিত কাঠামোর সাথে সম্পর্কিত, যা ইভেন্টটিকে ট্রিগার করে।

একটি subject কেবল একটি ঘর বা একটি কাঠামো হতে পারে। যদি a developer দেখার অনুমতি নেই userএর কাঠামোতে, subject সর্বদা খালি থাকে।

ক্ষেত্র

মাঠ বিবরণ ডেটা টাইপ
eventId ইভেন্টের জন্য অনন্য শনাক্তকারী। string
উদাহরণ: "78c8f0e4-3f55-4907-99ac-f23fdf8bd137"
timestamp ঘটনাটি ঘটেছিল সেই সময়। string
উদাহরণ: "২০১৯-০১-০১T০০:০০:০১Z"
relationUpdate একটি অবজেক্ট যা সম্পর্ক আপডেট সম্পর্কে বিস্তারিত তথ্য প্রদান করে। object
userId একটি অনন্য, অস্পষ্ট শনাক্তকারী যা ব্যবহারকারীর প্রতিনিধিত্ব করে। string
উদাহরণ: "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi"

বিভিন্ন ধরণের ইভেন্ট এবং সেগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য ইভেন্টগুলি দেখুন।

উদাহরণ

প্রতিটি ধরণের রিলেশন ইভেন্টের জন্য ইভেন্ট পেলোড আলাদা হয়:

তৈরি

কাঠামো তৈরি করা হয়েছে

"relationUpdate" : {
  "type" : "CREATED",
  "subject" : "",
  "object" : "enterprises/project-id/structures/structure-id"
}

ডিভাইস তৈরি করা হয়েছে

"relationUpdate" : {
  "type" : "CREATED",
  "subject" : "enterprises/project-id/structures/structure-id",
  "object" : "enterprises/project-id/devices/device-id"
}

ডিভাইস তৈরি করা হয়েছে

"relationUpdate" : {
  "type" : "CREATED",
  "subject" : "enterprises/project-id/structures/structure-id/rooms/room-id",
  "object" : "enterprises/project-id/devices/device-id"
}

আপডেট করা হয়েছে

ডিভাইসটি সরানো হয়েছে

"relationUpdate" : {
  "type" : "UPDATED",
  "subject" : "enterprises/project-id/structures/structure-id/rooms/room-id",
  "object" : "enterprises/project-id/devices/device-id"
}

মুছে ফেলা হয়েছে

কাঠামো মুছে ফেলা হয়েছে

"relationUpdate" : {
  "type" : "DELETED",
  "subject" : "",
  "object" : "enterprises/project-id/structures/structure-id"
}

ডিভাইসটি মুছে ফেলা হয়েছে

"relationUpdate" : {
  "type" : "DELETED",
  "subject" : "enterprises/project-id/structures/structure-id",
  "object" : "enterprises/project-id/devices/device-id"
}

ডিভাইসটি মুছে ফেলা হয়েছে

"relationUpdate" : {
  "type" : "DELETED",
  "subject" : "enterprises/project-id/structures/structure-id/rooms/room-id",
  "object" : "enterprises/project-id/devices/device-id"
}

নিম্নলিখিত ক্ষেত্রে সম্পর্ক ইভেন্ট পাঠানো হয় না:

  • একটি রুম মুছে ফেলা হয়েছে

রিসোর্স ইভেন্ট

একটি রিসোর্স ইভেন্ট একটি রিসোর্সের জন্য নির্দিষ্ট একটি আপডেটকে প্রতিনিধিত্ব করে। এটি একটি বৈশিষ্ট্য ক্ষেত্রের মানের পরিবর্তনের প্রতিক্রিয়া হিসাবে হতে পারে, যেমন একটি থার্মোস্ট্যাটের মোড পরিবর্তন করা। এটি এমন একটি ডিভাইস অ্যাকশনও উপস্থাপন করতে পারে যা কোনও বৈশিষ্ট্য ক্ষেত্র পরিবর্তন করে না, যেমন একটি ডিভাইস বোতাম টিপে।

trait ফিল্ডের মান পরিবর্তনের প্রতিক্রিয়ায় তৈরি একটি ইভেন্টে একটি traits অবজেক্ট থাকে, যা ডিভাইস GET কলের মতো:

পেলোড

{
  "eventId" : "111880e7-0ba4-4ed3-8077-5b10f6a549b3",
  "timestamp" : "2019-01-01T00:00:01Z",
  "resourceUpdate" : {
    "name" : "enterprises/project-id/devices/device-id",
    "traits" : {
      "sdm.devices.traits.ThermostatMode" : {
        "mode" : "COOL"
      }
    }
  },
  "userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
  "resourceGroup" : [
    "enterprises/project-id/devices/device-id"
  ]
}

যেকোনো বৈশিষ্ট্য ক্ষেত্র পরিবর্তন রিসোর্স ইভেন্টের পেলোড ফর্ম্যাট বুঝতে ব্যক্তিগত বৈশিষ্ট্য ডকুমেন্টেশন ব্যবহার করুন।

একটি ডিভাইস অ্যাকশনের প্রতিক্রিয়ায় তৈরি হওয়া একটি ইভেন্ট যা একটি trait ফিল্ড পরিবর্তন করে না, তার একটি resourceUpdate অবজেক্ট সহ একটি পেলোড থাকে, তবে traits অবজেক্টের পরিবর্তে একটি events অবজেক্ট থাকে:

পেলোড

{
  "eventId" : "3d9baf85-bb0d-4c0b-adc7-a297185044fc",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "QBOmDLzweSFGI48K287fvIro9Q...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"eventThreadId" : "d67cd3f7-86a7-425e-8bb3-462f92ec9f59",
"eventThreadState" : "STARTED",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }

এই ধরণের রিসোর্স ইভেন্টগুলি নির্দিষ্ট বৈশিষ্ট্যে সংজ্ঞায়িত করা হয়। উদাহরণস্বরূপ, মোশন ইভেন্টটি সংজ্ঞায়িত করা হয়েছে ক্যামেরামোশন trait। এই ধরণের রিসোর্স ইভেন্টের পেলোড ফর্ম্যাট বুঝতে প্রতিটি trait এর ডকুমেন্টেশন দেখুন।

ক্ষেত্র

মাঠ বিবরণ ডেটা টাইপ
eventId ইভেন্টের জন্য অনন্য শনাক্তকারী। string
উদাহরণ: "3d9baf85-bb0d-4c0b-adc7-a297185044fc"
timestamp ঘটনাটি ঘটেছিল সেই সময়। string
উদাহরণ: "২০১৯-০১-০১T০০:০০:০১Z"
resourceUpdate একটি অবজেক্ট যা রিসোর্স আপডেট সম্পর্কে বিস্তারিত তথ্য প্রদান করে। object
userId একটি অনন্য, অস্পষ্ট শনাক্তকারী যা ব্যবহারকারীর প্রতিনিধিত্ব করে। string
উদাহরণ: "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi"
eventThreadId ইভেন্ট থ্রেডের জন্য অনন্য শনাক্তকারী। string
উদাহরণ: "d67cd3f7-86a7-425e-8bb3-462f92ec9f59"
eventThreadState ইভেন্ট থ্রেডের অবস্থা। string
মান: "শুরু", "আপডেট করা", "শেষ"
resourceGroup এমন একটি অবজেক্ট যা এমন রিসোর্স নির্দেশ করে যার এই ইভেন্টের অনুরূপ আপডেট থাকতে পারে। ইভেন্টের রিসোর্স ( resourceUpdate অবজেক্ট থেকে) সর্বদা এই অবজেক্টে উপস্থিত থাকবে। object

বিভিন্ন ধরণের ইভেন্ট এবং সেগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য ইভেন্টগুলি দেখুন।

আপডেটযোগ্য বিজ্ঞপ্তি

রিসোর্স ইভেন্টের উপর ভিত্তি করে বিজ্ঞপ্তিগুলি অ্যান্ড্রয়েড বা iOS এর মতো কোনও অ্যাপে প্রয়োগ করা যেতে পারে। প্রেরিত বিজ্ঞপ্তির সংখ্যা কমাতে, আপডেটযোগ্য বিজ্ঞপ্তি নামে একটি বৈশিষ্ট্য প্রয়োগ করা যেতে পারে, যেখানে বিদ্যমান বিজ্ঞপ্তিগুলি একই ইভেন্ট থ্রেডে পরবর্তী ইভেন্টগুলির উপর ভিত্তি করে নতুন তথ্য দিয়ে আপডেট করা হয়।

সিলেক্ট ইভেন্টগুলিতে আপডেটযোগ্য বিজ্ঞপ্তিগুলি সমর্থন করা হয় এবং ডকুমেন্টেশনে আপডেটযোগ্য হিসাবে ট্যাগ করা হয়। এই ইভেন্টগুলির পেলোডে eventThreadId নামে একটি অতিরিক্ত ক্ষেত্র থাকে। ব্যবহারকারীর জন্য প্রকাশিত একটি বিদ্যমান বিজ্ঞপ্তি আপডেট করার উদ্দেশ্যে পৃথক ইভেন্টগুলিকে একসাথে লিঙ্ক করতে এই ক্ষেত্রটি ব্যবহার করুন।

একটি ইভেন্ট থ্রেড এবং একটি ইভেন্ট সেশন এক নয়। ইভেন্ট থ্রেড একই থ্রেডে পূর্ববর্তী ইভেন্টের জন্য একটি আপডেট করা অবস্থা সনাক্ত করে। ইভেন্ট সেশনটি একে অপরের সাথে সম্পর্কিত পৃথক ইভেন্টগুলি সনাক্ত করে এবং একটি নির্দিষ্ট ইভেন্ট সেশনের জন্য একাধিক ইভেন্ট থ্রেড থাকতে পারে।

বিজ্ঞপ্তির উদ্দেশ্যে, বিভিন্ন ধরণের ইভেন্টগুলিকে বিভিন্ন থ্রেডে ভাগ করা হয়।

এই থ্রেড গ্রুপিং এবং টাইমিং লজিকটি গুগল দ্বারা পরিচালিত হয় এবং যেকোনো সময় পরিবর্তন সাপেক্ষে। A developer SDM API দ্বারা প্রদত্ত ইভেন্ট থ্রেড এবং সেশনের উপর ভিত্তি করে বিজ্ঞপ্তিগুলি আপডেট করা উচিত।

থ্রেডের অবস্থা

আপডেটযোগ্য বিজ্ঞপ্তি সমর্থন করে এমন ইভেন্টগুলিতে একটি eventThreadState ক্ষেত্রও থাকে যা সেই সময়ে ইভেন্ট থ্রেডের অবস্থা নির্দেশ করে। এই ক্ষেত্রটিতে নিম্নলিখিত মানগুলি রয়েছে:

  • শুরু — একটি ইভেন্ট থ্রেডের প্রথম ইভেন্ট।
  • আপডেট করা হয়েছে — একটি চলমান ইভেন্ট থ্রেডে একটি ইভেন্ট। একটি থ্রেডে এই অবস্থায় শূন্য বা তার বেশি ইভেন্ট থাকতে পারে।
  • ENDED — একটি ইভেন্ট থ্রেডের শেষ ইভেন্ট, যা থ্রেডের ধরণের উপর নির্ভর করে শেষ আপডেটেড ইভেন্টের সদৃশ হতে পারে।

এই ক্ষেত্রটি একটি ইভেন্ট থ্রেডের অগ্রগতি এবং এটি কখন শেষ হয়েছে তা ট্র্যাক করতে ব্যবহার করা যেতে পারে।

ইভেন্ট ফিল্টারিং

কিছু ক্ষেত্রে, কোনও ডিভাইস দ্বারা শনাক্ত করা ইভেন্টগুলি প্রকাশনা থেকে SDM পাব/সাব টপিকে ফিল্টার করা হতে পারে। এই আচরণকে ইভেন্ট ফিল্টারিং বলা হয়। ইভেন্ট ফিল্টারিংয়ের উদ্দেশ্য হল অল্প সময়ের মধ্যে অনেকগুলি অনুরূপ ইভেন্ট বার্তা প্রকাশ করা এড়ানো।

উদাহরণস্বরূপ, একটি প্রাথমিক মোশন ইভেন্টের জন্য একটি বার্তা একটি SDM বিষয়ে প্রকাশিত হতে পারে। এর পরে মোশনের জন্য অন্যান্য বার্তাগুলি একটি নির্দিষ্ট সময়কাল অতিক্রম না করা পর্যন্ত প্রকাশনা থেকে ফিল্টার করা হবে। সেই সময়কাল অতিক্রম করার পরে, সেই ইভেন্ট ধরণের জন্য একটি ইভেন্ট বার্তা আবার প্রকাশিত হতে পারে।

গুগল হোম অ্যাপে (GHA), ফিল্টার করা ইভেন্টগুলি এখনও দেখা যাবে userএর ইভেন্ট ইতিহাস। তবে, এই ধরনের ইভেন্টগুলি কোনও অ্যাপ বিজ্ঞপ্তি তৈরি করে না (যদিও সেই বিজ্ঞপ্তির ধরণটি সক্ষম থাকে)।

প্রতিটি ধরণের ইভেন্টের নিজস্ব ইভেন্ট ফিল্টারিং লজিক থাকে, যা গুগল দ্বারা সংজ্ঞায়িত করা হয় এবং যেকোনো সময় পরিবর্তন হতে পারে। এই ইভেন্ট ফিল্টারিং লজিক ইভেন্ট থ্রেড এবং সেশন লজিকের উপর নির্ভর করে না।

পরিষেবা অ্যাকাউন্ট

SDM API সাবস্ক্রিপশন এবং ইভেন্ট বার্তা পরিচালনার জন্য পরিষেবা অ্যাকাউন্টগুলি সুপারিশ করা হয়। একটি পরিষেবা অ্যাকাউন্ট কোনও ব্যক্তি নয়, একটি অ্যাপ্লিকেশন বা ভার্চুয়াল মেশিন দ্বারা ব্যবহৃত হয় এবং এর নিজস্ব অনন্য অ্যাকাউন্ট কী থাকে।

Pub/Sub API-এর জন্য পরিষেবা অ্যাকাউন্ট অনুমোদন Two-legged OAuth (2LO) ব্যবহার করে।

2LO অনুমোদন প্রবাহে:

  • দ্য developer একটি পরিষেবা কী ব্যবহার করে একটি অ্যাক্সেস টোকেনের অনুরোধ করে।
  • দ্য developer API-তে কল করার সময় অ্যাক্সেস টোকেন ব্যবহার করে।

Google 2LO এবং কীভাবে সেট আপ করবেন সে সম্পর্কে আরও জানতে, সার্ভার থেকে সার্ভার অ্যাপ্লিকেশনের জন্য OAuth 2.0 ব্যবহার দেখুন।

অনুমোদন

পরিষেবা অ্যাকাউন্টটি Pub/Sub API-এর সাথে ব্যবহারের জন্য অনুমোদিত হওয়া উচিত:

  1. গুগল ক্লাউডে ক্লাউড পাব/সাব এপিআই সক্ষম করুন
  2. একটি পরিষেবা অ্যাকাউন্ট তৈরি করা বিভাগে বর্ণিত একটি পরিষেবা অ্যাকাউন্ট এবং পরিষেবা অ্যাকাউন্ট কী তৈরি করুন। আমরা এটিকে কেবল Pub/Sub সাবস্ক্রাইবার ভূমিকা দেওয়ার পরামর্শ দিচ্ছি। Pub/Sub API ব্যবহার করা মেশিনে পরিষেবা অ্যাকাউন্ট কী ডাউনলোড করতে ভুলবেন না।
  3. পূর্ববর্তী ধাপে পৃষ্ঠায় দেওয়া নির্দেশাবলী অনুসরণ করে আপনার অ্যাপ্লিকেশন কোডে আপনার প্রমাণীকরণ শংসাপত্র (পরিষেবা অ্যাকাউন্ট কী) প্রদান করুন, অথবা যদি আপনি দ্রুত API অ্যাক্সেস পরীক্ষা করতে চান তবে oauth2l ব্যবহার করে ম্যানুয়ালি একটি অ্যাক্সেস টোকেন পান।
  4. বার্তাগুলি টানতে এবং স্বীকৃতি দিতে Pub/Sub project.subscriptions API-এর সাথে পরিষেবা অ্যাকাউন্ট শংসাপত্র বা অ্যাক্সেস টোকেন ব্যবহার করুন।

oauth2l সম্পর্কে

Google oauth2l হল Go তে লেখা OAuth-এর জন্য একটি কমান্ড লাইন টুল। Go ব্যবহার করে Mac বা Linux-এর জন্য এটি ইনস্টল করুন।

  1. যদি আপনার সিস্টেমে Go না থাকে, তাহলে প্রথমে এটি ডাউনলোড করে ইনস্টল করুন
  2. Go ইনস্টল হয়ে গেলে, oauth2l ইনস্টল করুন এবং আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলে এর অবস্থান যোগ করুন:
    go install github.com/google/oauth2l@latest
    export PATH=$PATH:~/go/bin
  3. উপযুক্ত OAuth স্কোপ(গুলি) ব্যবহার করে API-এর জন্য একটি অ্যাক্সেস টোকেন পেতে oauth2l ব্যবহার করুন:
    oauth2l fetch --credentials path-to-service-key.json --scope https://www.googleapis.com/auth/pubsub
    https://www.googleapis.com/auth/cloud-platform
    উদাহরণস্বরূপ, যদি আপনার পরিষেবা কীটি ~/myServiceKey-eb0a5f900ee3.json এ অবস্থিত থাকে:
    oauth2l fetch --credentials ~/myServiceKey-eb0a5f900ee3.json --scope https://www.googleapis.com/auth/pubsub
    https://www.googleapis.com/auth/cloud-platform
    ya29.c.Elo4BmHXK5...

আরও ব্যবহারের তথ্যের জন্য oauth2l README দেখুন।

গুগল এপিআই ক্লায়েন্ট লাইব্রেরি

OAuth 2.0 ব্যবহার করে এমন Google API-এর জন্য বেশ কিছু ক্লায়েন্ট লাইব্রেরি উপলব্ধ। আপনার পছন্দের ভাষা সম্পর্কে আরও তথ্যের জন্য Google API ক্লায়েন্ট লাইব্রেরি দেখুন।

এই লাইব্রেরিগুলি ব্যবহার করার সময় Pub/Sub API, নিম্নলিখিত স্কোপ স্ট্রিং(গুলি) ব্যবহার করুন:

https://www.googleapis.com/auth/pubsub
https://www.googleapis.com/auth/cloud-platform

ত্রুটি

এই নির্দেশিকার সাথে সম্পর্কিত নিম্নলিখিত ত্রুটি কোড(গুলি) ফেরত পাঠানো যেতে পারে:

ত্রুটি বার্তা আরপিসি সমস্যা সমাধান
ক্যামেরার ছবি আর ডাউনলোডের জন্য উপলব্ধ নেই। DEADLINE_EXCEEDED ইভেন্টের ছবি প্রকাশের ৩০ সেকেন্ড পরে শেষ হয়ে যায়। মেয়াদ শেষ হওয়ার আগে ছবিটি ডাউনলোড করতে ভুলবেন না।
ইভেন্ট আইডি ক্যামেরার অন্তর্গত নয়। FAILED_PRECONDITION ক্যামেরা ইভেন্ট দ্বারা প্রদত্ত সঠিক eventID ব্যবহার করুন।

API ত্রুটি কোডের সম্পূর্ণ তালিকার জন্য API ত্রুটি কোড রেফারেন্স দেখুন।