Classroom API-এ পুশ বিজ্ঞপ্তি

ক্লাসরুমে ডেটা পরিবর্তন হলে বিজ্ঞপ্তি পেতে আপনি Registrations সংগ্রহের পদ্ধতিগুলি ব্যবহার করতে পারেন।

এই প্রবন্ধটি পুশ বিজ্ঞপ্তিগুলি কীভাবে পাওয়া শুরু করবেন তার সহজ নির্দেশাবলী সহ একটি ধারণাগত ওভারভিউ প্রদান করে।

শ্রেণীকক্ষ পুশ বিজ্ঞপ্তিগুলির সংক্ষিপ্তসার

Classroom API পুশ নোটিফিকেশন বৈশিষ্ট্যটি Classroom API ব্যবহারকারী অ্যাপ্লিকেশনগুলিকে Classroom-এ ডেটা পরিবর্তন হলে বিজ্ঞপ্তিগুলির জন্য সাবস্ক্রাইব করার অনুমতি দেয়। পরিবর্তনের কয়েক মিনিটের মধ্যেই, বিজ্ঞপ্তিগুলি ক্লাউড পাব/সাব টপিকে পৌঁছে দেওয়া হয়।

পুশ নোটিফিকেশন পেতে, আপনাকে একটি ক্লাউড পাব/সাব টপিক সেট আপ করতে হবে এবং নোটিফিকেশনের উপযুক্ত ফিডের জন্য একটি রেজিস্ট্রেশন তৈরি করার সময় সেই টপিকের নাম প্রদান করতে হবে।

এই ডকুমেন্টেশনে ব্যবহৃত মূল ধারণাগুলির সংজ্ঞা নীচে দেওয়া হল:

  • গন্তব্য হল এমন একটি স্থান যেখানে বিজ্ঞপ্তি পাঠানো হয়।
  • ফিড হলো এক ধরণের বিজ্ঞপ্তি যা কোনও তৃতীয় পক্ষের অ্যাপ্লিকেশন সাবস্ক্রাইব করতে পারে। উদাহরণস্বরূপ, "কোর্স ১২৩৪ এর জন্য তালিকা পরিবর্তন"।
  • একটি নিবন্ধন হল Classroom API-এর একটি নির্দেশ যা একটি নির্দিষ্ট ফিড থেকে একটি গন্তব্যে বিজ্ঞপ্তি সরবরাহ করে।

একবার আপনি কোনও ফিডের জন্য একটি নিবন্ধন তৈরি করলে, সেই নিবন্ধনের ক্লাউড পাব/সাব বিষয়টি সেই ফিড থেকে বিজ্ঞপ্তিগুলি গ্রহণ করে যতক্ষণ না এটির মেয়াদ শেষ হয়। আপনার নিবন্ধনটি এক সপ্তাহ স্থায়ী হয়, তবে আপনি registrations.create() এ একই অনুরোধ করে মেয়াদ শেষ হওয়ার আগে যেকোনো সময় এটি বাড়িয়ে নিতে পারেন।

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

ফিডের প্রকারভেদ

Classroom API তিন ধরণের ফিড অফার করে:

  • প্রতিটি ডোমেনের ডোমেন ফিডের জন্য একটি তালিকা পরিবর্তন থাকে, যা শিক্ষার্থী এবং শিক্ষকদের সেই ডোমেনে যোগদান এবং কোর্স ছেড়ে যাওয়ার সময় বিজ্ঞপ্তি প্রকাশ করে।
  • প্রতিটি কোর্সে কোর্স ফিডের জন্য একটি তালিকা পরিবর্তন করা হয়েছে, যা শিক্ষার্থী এবং শিক্ষকদের সেই কোর্সে যোগদান এবং ছেড়ে যাওয়ার সময় বিজ্ঞপ্তি প্রকাশ করে।
  • প্রতিটি কোর্সে কোর্স ফিডের জন্য একটি কোর্স ওয়ার্ক পরিবর্তন থাকে, যা কোনও কোর্স ওয়ার্ক বা শিক্ষার্থীর জমা দেওয়ার বস্তু তৈরি বা পরিবর্তন করা হলে বিজ্ঞপ্তি প্রকাশ করে।

একটি ক্লাউড পাব/সাব বিষয় সেট আপ করুন

ক্লাউড পাব/সাব বিষয়গুলিতে বিজ্ঞপ্তিগুলি সরবরাহ করা হয়। ক্লাউড পাব/সাব থেকে, আপনি একটি ওয়েবহুকে বিজ্ঞপ্তি পেতে পারেন, অথবা একটি সাবস্ক্রিপশন এন্ডপয়েন্ট পোল করে।

ক্লাউড পাব/সাব টপিক সেট আপ করতে, আপনাকে নিম্নলিখিতগুলি করতে হবে:

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

  5. ক্লাউড পাব/সাব-এ একটি সাবস্ক্রিপশন তৈরি করুন , যাতে ক্লাউড পাব/সাব-কে আপনার বিজ্ঞপ্তিগুলি কীভাবে সরবরাহ করতে হয় তা বলা যায়।

  6. অবশেষে, পুশ নোটিফিকেশনের জন্য নিবন্ধন করার আগে, আপনাকে পুশ নোটিফিকেশন পরিষেবা অ্যাকাউন্ট ( classroom-notifications@system.gserviceaccount.com ) কে আপনার বিষয়ে প্রকাশ করার অনুমতি দিতে হবে।

বিজ্ঞপ্তির জন্য আপনার আবেদন নিবন্ধন করুন

একবার আপনার কাছে এমন একটি বিষয় থাকে যেখানে Classroom API পুশ নোটিফিকেশন পরিষেবা অ্যাকাউন্ট প্রকাশ করতে পারে, তাহলে আপনি registrations.create() পদ্ধতি ব্যবহার করে বিজ্ঞপ্তির জন্য নিবন্ধন করতে পারেন। registrations.create() পদ্ধতিটি যাচাই করে যে প্রদত্ত ক্লাউড পাব/সাব বিষয়টি পুশ নোটিফিকেশন পরিষেবা অ্যাকাউন্টের মাধ্যমে পৌঁছানো যেতে পারে। যদি পুশ নোটিফিকেশন পরিষেবা অ্যাকাউন্ট বিষয়টিতে পৌঁছাতে না পারে তবে পদ্ধতিটি ব্যর্থ হয়; উদাহরণস্বরূপ, যদি বিষয়টি বিদ্যমান না থাকে বা আপনি তাকে সেই বিষয়ে প্রকাশের অনুমতি না দিয়ে থাকেন।

অনুমোদন

Classroom API-তে সকল কলের মতো, registrations.create() এ কলগুলি অবশ্যই একটি অনুমোদন টোকেন দিয়ে অনুমোদিত হতে হবে । এই প্রমাণীকরণ টোকেনে পুশ নোটিফিকেশন স্কোপ ( https://www.googleapis.com/auth/classroom.push-notifications ) এবং কোন বিজ্ঞপ্তিগুলি পাঠানো হচ্ছে সে সম্পর্কে ডেটা দেখার জন্য প্রয়োজনীয় যেকোনো স্কোপ অন্তর্ভুক্ত থাকতে হবে।

  • রোস্টার পরিবর্তন ফিডের জন্য, এর অর্থ রোস্টার স্কোপ বা (আদর্শভাবে) এর কেবল পঠনযোগ্য রূপ ( https://www.googleapis.com/auth/classroom.rosters.readonly অথবা https://www.googleapis.com/auth/classroom.rosters )।
  • কোর্স ওয়ার্ক পরিবর্তন ফিডের জন্য, এর অর্থ হল কোর্স ওয়ার্ক স্কোপের "ছাত্র" সংস্করণ অথবা (আদর্শভাবে) এর শুধুমাত্র পঠনযোগ্য রূপ ( https://www.googleapis.com/auth/classroom.coursework.students.readonly অথবা https://www.googleapis.com/auth/classroom.coursework.students )।

বিজ্ঞপ্তিগুলি সরবরাহ করার জন্য, অ্যাপ্লিকেশনটিকে প্রয়োজনীয় স্কোপ সহ অনুমোদিত ব্যবহারকারীর কাছ থেকে একটি OAuth অনুদান ধরে রাখতে হবে। ব্যবহারকারী যদি অ্যাপ্লিকেশনটি সংযোগ বিচ্ছিন্ন করে দেন, তাহলে বিজ্ঞপ্তিগুলি বন্ধ হয়ে যায়। মনে রাখবেন যে বর্তমানে, ডোমেন-ওয়াইড অথরিটির প্রতিনিধিত্ব এই উদ্দেশ্যে সমর্থিত নয়। আপনি যদি শুধুমাত্র ডোমেন-ওয়াইড ডেলিগেটেড অথরিটি ব্যবহার করে বিজ্ঞপ্তিগুলির জন্য নিবন্ধন করার চেষ্টা করেন, তাহলে আপনি @MissingGrant ত্রুটি পাবেন।

বিজ্ঞপ্তি গ্রহণ করুন

বিজ্ঞপ্তিগুলি JSON দিয়ে এনকোড করা হয় এবং এতে থাকে:

  • পরিবর্তিত রিসোর্স সম্বলিত সংগ্রহের নাম। তালিকা পরিবর্তনের বিজ্ঞপ্তির জন্য, এটি হয় courses.students অথবা courses.teachers । কোর্স কাজের পরিবর্তনের জন্য, এটি হয় courses.courseWork অথবা courses.courseWork.studentSubmissions
  • একটি মানচিত্রে পরিবর্তিত রিসোর্সের জন্য শনাক্তকারী। এই মানচিত্রটি উপযুক্ত রিসোর্সের get পদ্ধতির সাথে আর্গুমেন্টগুলি মেলানোর জন্য ডিজাইন করা হয়েছে। রোস্টার পরিবর্তন সম্পর্কে বিজ্ঞপ্তির জন্য, courseId এবং userId ক্ষেত্রগুলি পূরণ করা হবে এবং courses.students.get() অথবা courses.teachers.get() এ অপরিবর্তিত পাঠানো যেতে পারে। একইভাবে, courses.courseWork সংগ্রহের পরিবর্তনগুলিতে courseId এবং id ক্ষেত্র থাকবে যা অপরিবর্তিত courses.courseWork.get () এ পাঠানো যেতে পারে এবং courses.courseWork.studentSubmissions সংগ্রহের পরিবর্তনগুলিতে courseId , courseWorkId , এবং id ক্ষেত্র থাকবে যা অপরিবর্তিত courses.courseWork.studentSubmissions.get() এ পাঠানো যেতে পারে।

নিম্নলিখিত কোড স্নিপেটটি একটি নমুনা বিজ্ঞপ্তি প্রদর্শন করে:

{
  "collection": "courses.students",
  "eventType": "CREATED",
  "resourceId": {
    "courseId": "12345",
    "userId": "45678"
  }
}

বিজ্ঞপ্তিতে একটি registrationId বার্তা বৈশিষ্ট্যও থাকে, যার মধ্যে বিজ্ঞপ্তির কারণ নিবন্ধনের শনাক্তকারী থাকে, যা registrations.delete() এর সাথে বিজ্ঞপ্তি থেকে নিবন্ধন মুক্ত করতে ব্যবহার করা যেতে পারে।