Classroom में डेटा में बदलाव होने पर सूचनाएं पाने के लिए,
Registrations
कलेक्शन का इस्तेमाल किया जा सकता है.
इस लेख में पुश नोटिफ़िकेशन पाने की सुविधा को शुरू करने के तरीके के बारे में बुनियादी जानकारी दी गई है.
Classroom पुश नोटिफ़िकेशन की खास जानकारी
Classroom API पुश नोटिफ़िकेशन सुविधा, Classroom एपीआई का इस्तेमाल करके ऐप्लिकेशन को Classroom में डेटा बदलने पर सूचनाएं पाने की सुविधा देती है. आम तौर पर, सूचनाओं को Cloud Pub/Sub के विषय में, बदलाव के कुछ मिनट बाद भेजा जाता है.
पुश नोटिफ़िकेशन पाने के लिए, आपको क्लाउड Pub/Sub विषय सेट अप करना होगा. साथ ही, सूचनाओं के सही फ़ीड के लिए रजिस्ट्रेशन बनाते समय उस विषय का नाम बताना होगा.
इस दस्तावेज़ में इस्तेमाल किए गए मुख्य सिद्धांतों की परिभाषाएं यहां दी गई हैं:
- डेस्टिनेशन वह जगह है जहां सूचनाएं भेजी जाती हैं.
- फ़ीड एक तरह की सूचनाएं होती हैं. इनकी मदद से, तीसरे पक्ष का ऐप्लिकेशन सदस्यता ले सकता है. उदाहरण के लिए, "कोर्स 1234 के लिए रोस्टर में बदलाव".
- रजिस्ट्रेशन, Classroom एपीआई के लिए एक निर्देश होता है. इससे, किसी फ़ीड से डेस्टिनेशन पर सूचनाएं भेजने का तरीका पता चलता है.
किसी फ़ीड के लिए रजिस्ट्रेशन बनाने के बाद, उस रजिस्ट्रेशन के Cloud Pub/Sub
विषय को उस फ़ीड से सूचनाएं मिलती हैं. यह तब तक रहती है, जब तक उसकी समयसीमा खत्म नहीं हो जाती. आपका रजिस्ट्रेशन
एक हफ़्ते तक चलता है, लेकिन आप समयसीमा खत्म होने से पहले इसे कभी भी बढ़ा सकते हैं. इसके लिए, आपको registrations.create()
से जुड़ा एक अनुरोध करना होगा.
आपके Cloud Pub/Sub विषय को सिर्फ़ उन संसाधनों के बारे में सूचनाएं मिलती हैं जिन्हें आप रजिस्ट्रेशन बनाते समय दिए गए क्रेडेंशियल की मदद से देख सकते हैं. उदाहरण के लिए, अगर उपयोगकर्ता आपके ऐप्लिकेशन से अनुमति रद्द कर देता है या शिक्षक के तौर पर हटा दिया जाता है, तो सूचनाएं अब नहीं भेजी जाएंगी.
फ़ीड के प्रकार
Classroom API पर फ़िलहाल तीन तरह के फ़ीड उपलब्ध हैं:
- हर डोमेन में, डोमेन के लिए नामावली फ़ीड की सुविधा होती है. इससे, छात्र-छात्राओं और शिक्षकों के उस डोमेन में शामिल होने और कोर्स छोड़ने पर, सूचनाएं दिखती हैं.
- हर कोर्स में कोर्स के लिए नाम बदलने का फ़ीड होता है, जो तब दिखता है, जब छात्र-छात्राएं और शिक्षक उस कोर्स में शामिल होते हैं और कोर्स छोड़ते हैं.
- हर कोर्स में कोर्स के लिए कोर्स वर्क में बदलाव फ़ीड होता है, जिससे उस कोर्स में कोई भी कोर्स वर्क या छात्र/छात्रा के सबमिट किए जाने या बदलाव किए जाने पर सूचनाएं दिखाई जाती हैं.
Cloud Pub/Sub विषय सेट अप करना
सूचनाएं, Cloud Pub/Sub विषयों पर दी जाती हैं. Cloud Pub/Sub से, आपको वेब हुक पर सूचनाएं मिल सकती हैं. इसके अलावा, आपके पास सदस्यता एंडपॉइंट पर पोल करने का विकल्प भी है.
Cloud Pub/Sub विषय सेट अप करने के लिए, आपको ये काम करने होंगे:
- पक्का करें कि आपने Cloud Pub/Sub की ज़रूरी शर्तों को पूरा किया हो.
- Cloud Pub/Sub क्लाइंट सेट अप करें.
- Cloud Pub/Sub की कीमत की समीक्षा करें और अपने Developer Console प्रोजेक्ट के लिए बिलिंग चालू करें.
डेवलपर कंसोल में (सबसे आसान तरीका), कमांड लाइन टूल के ज़रिए (Cloud प्रोग्रामैटिक Pub/Sub एपीआई का इस्तेमाल करके, Cloud Pub/Sub विषय बनाएं. ध्यान दें कि Cloud Pub/Sub सिर्फ़ कुछ विषयों के लिए अनुमति देता है. इसलिए, सभी सूचनाएं पाने के लिए एक ही विषय का इस्तेमाल करने से यह पक्का होता है कि अगर आपका ऐप्लिकेशन लोकप्रिय हो जाए, तो आपको स्केलिंग से जुड़ी समस्याओं का सामना न करना पड़े.
क्लाउड/Pub/Sub में सदस्यता बनाएं, ताकि क्लाउड Pub/Sub को यह बताया जा सके कि आपको सूचनाएं कैसे मिलती हैं.
आखिर में, पुश नोटिफ़िकेशन के लिए रजिस्टर करने से पहले, आपको अपने विषय में प्रकाशित करने के लिए पुश नोटिफ़िकेशन सेवा खाता (
classroom-notifications@system.gserviceaccount.com
) अनुमति देना होगा.
ध्यान दें: अगर आप पुश नोटिफ़िकेशन सेवा खाते को अपने Cloud Pub/Sub विषय में प्रकाशित करने की अनुमति देते हैं, तो जो उपयोगकर्ता आपके Developer Console प्रोजेक्ट से अनुरोध कर सकते हैं वे यह तय कर सकते हैं कि वह मौजूद है और उसे सूचनाओं के लिए रजिस्टर किया जा सकता है. कई ऐप्लिकेशन, OAuth क्लाइंट आईडी क्लाइंट-साइड पर सेव करते हैं. इसलिए, हो सकता है कि असली उपयोगकर्ता आपके डेवलपर कंसोल प्रोजेक्ट से अनुरोध कर पाएं. अगर यह आप पर लागू होता है और आपको इस बात की चिंता है कि आपके असली उपयोगकर्ता आपके Cloud Pub/Sub विषय पर अनचाहे सूचनाएं भेज रहे हैं या पुश नोटिफ़िकेशन के लिए इस्तेमाल किए जाने वाले Cloud Pub/Sub विषयों के नाम जानते हैं, तो आपको किसी दूसरे Developer Console प्रोजेक्ट से पुश सूचनाओं के लिए रजिस्टर करना चाहिए.
सूचनाओं के लिए अपना ऐप्लिकेशन रजिस्टर करें
जब आपके पास कोई ऐसा विषय आ जाए जिसे Classroom API पुश नोटिफ़िकेशन खाते में पब्लिश किया जा सकता है, तो registrations.create()
तरीके का इस्तेमाल करके, सूचनाओं के लिए रजिस्टर किया जा सकता है. registrations.create()
वाला तरीका इस बात की पुष्टि करता है कि दिए गए Cloud
Pub/Sub विषय को, पुश नोटिफ़िकेशन सेवा खाते से ऐक्सेस किया जा सकता है. यह तरीका
काम नहीं करता है. इसलिए, पुश नोटिफ़िकेशन सेवा खाता, विषय तक नहीं पहुंच सकता. उदाहरण के लिए, अगर कोई विषय मौजूद नहीं है या आपने उसके लिए, विषय पब्लिश करने की अनुमति नहीं दी है.
अनुमति देना
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 की मदद लेनी होगी. अगर उपयोगकर्ता ऐप्लिकेशन को डिसकनेक्ट करता है, तो सूचनाएं बंद हो जाती हैं. ध्यान रखें कि फ़िलहाल, अनुमति देने के लिए पूरे डोमेन को अनुमति देना इस मकसद के लिए काम नहीं करता है. अगर आपने सिर्फ़ डोमेन के लिए डेलीगेटेड अथॉरिटी का इस्तेमाल करके, सूचनाएं पाने की सुविधा के लिए रजिस्टर करने की कोशिश की है, तो आपको @@GrantGrant का अनुरोध करने वाली गड़बड़ी का मैसेज मिलेगा.
सूचनाएं मिल रही हैं
सूचनाओं को JSON से एन्कोड किया जाता है, और इनमें ये चीज़ें शामिल होती हैं:
- कलेक्शन का नाम, जिसमें बदलाव करने वाले संसाधन की जानकारी दी गई है. रोस्टर में
बदलाव से जुड़ी सूचनाओं के लिए, यह
courses.students
याcourses.teachers
है. कोर्स वर्क में बदलाव करने के लिए, यहcourses.courseWork
याcourses.courseWork.studentSubmissions
होता है. - मैप में, बदले गए रिसॉर्स के आइडेंटिफ़ायर. इस मैप को इसलिए बनाया गया है, ताकि
आर्ग्युमेंट को सही रिसॉर्स के
get
तरीके से मैच किया जा सके. नाम में बदलाव की सूचनाओं के लिए,courseId
औरuserId
फ़ील्ड में जानकारी दिखाई जाएगी. साथ ही, इन्हें courses.students.get() या courses.teachers.get() में बदला जा सकता है. उसी तरह,Courses.courseWork कलेक्शन मेंcourseId
औरid
फ़ील्ड को 'रजिस्ट्रेशन.
नीचे दिया गया कोड स्निपेट एक सैंपल सूचना दिखाता है:
{
"collection": "courses.students",
"eventType": "CREATED",
"resourceId": {
"courseId": "12345",
"userId": "45678"
}
}
सूचनाओं में एक registrationId
मैसेज एट्रिब्यूट भी होता है. इसमें, रजिस्ट्रेशन की सूचना देने वाला आइडेंटिफ़ायर शामिल होता है. इसका इस्तेमाल सूचनाओं से रजिस्ट्रेशन रद्द करने के लिए, registrations.delete()
के साथ किया जा सकता है.