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

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

এই নিবন্ধটিতে পুশ নোটিফিকেশন পাওয়া শুরু করার পদ্ধতি সম্পর্কে একটি ধারণাগত রূপরেখা এবং সহজ নির্দেশাবলী দেওয়া হয়েছে।

ক্লাসরুম পুশ নোটিফিকেশনের সংক্ষিপ্ত বিবরণ

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

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

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

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

Once you create a registration for a feed, that registration's Cloud Pub/Sub topic receives notifications from that feed until it expires. Your registration lasts a week, but you can extend it at any point before it expires by making an identical request to registrations.create() .

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

খাদ্যের প্রকারভেদ

ক্লাসরুম এপিআই তিন ধরনের ফিড প্রদান করে:

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

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

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

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

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

  5. আপনার নোটিফিকেশনগুলো কীভাবে পাঠানো হবে, তা Cloud Pub/Sub-কে জানানোর জন্য সেখানে একটি সাবস্ক্রিপশন তৈরি করুন

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

বিজ্ঞপ্তি পেতে আপনার অ্যাপ্লিকেশনটি নিবন্ধন করুন।

একবার আপনার কাছে এমন একটি টপিক থাকলে যেখানে ক্লাসরুম এপিআই পুশ নোটিফিকেশন সার্ভিস অ্যাকাউন্টটি পাবলিশ করতে পারে, আপনি 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() এর সাথে ব্যবহার করে নোটিফিকেশন থেকে আনরেজিস্টার করা যায়।