אפשר להשתמש בשיטות שבאוסף Registrations
כדי לקבל התראות על שינויים בנתונים ב-Classroom.
המאמר הזה כולל סקירה כללית של מושגים והוראות פשוטות להתחלת קבלת התראות.
סקירה כללית של התראות ב-Classroom
תכונת ההתראות של Classroom API מאפשרת לאפליקציות שמשתמשות ב-Classroom API להירשם לקבלת התראות כשנתונים משתנים ב-Classroom. ההתראות נשלחות לנושא ב-Cloud Pub/Sub, בדרך כלל תוך כמה דקות מרגע השינוי.
כדי לקבל התראות, צריך להגדיר נושא של Cloud Pub/Sub ולציין את שם הנושא הזה כשיוצרים רישום לפיד ההתראות המתאים.
בהמשך מפורטות הגדרות של מושגי מפתח שנעשה בהם שימוש בתיעוד הזה:
- יעד הוא מקום שאליו נשלחות התראות.
- פיד הוא סוג של התראות שאפליקציית צד שלישי יכולה להירשם אליהן. לדוגמה, 'שינויים ברשימת המשתתפים בקורס 1234'.
- רישום הוא הוראה ל-Classroom API לשליחת התראות מפיד מסוים ליעד מסוים.
אחרי שיוצרים רישום של פיד, נושא Cloud Pub/Sub של הרישום מקבל התראות מהפיד הזה עד שהתוקף שלו פג. הרישום נמשך שבוע, אבל אפשר להאריך אותו בכל שלב לפני שהתוקף שלו יפוג. לשם כך, יש לשלוח בקשה זהה אל registrations.create()
.
לנושא Cloud Pub/Sub מתקבלות התראות רק לגבי משאבים שאתם יכולים להציג באמצעות פרטי הכניסה שאתם מספקים בזמן ההרשמה. לדוגמה, אם המשתמש מבטל את ההרשאה מהאפליקציה או הוסר כמורה, ההתראות נשלחות לזמן ארוך יותר.
סוגים של פידים
בשלב זה, ממשק ה-API של Classroom מציע שלושה סוגי עדכונים:
- בכל דומיין יש פיד שינויים ברשימת הדומיינים, שחושף התראות כשתלמידים ומורים מצטרפים לקורסים באותו דומיין ועוזבים אותו.
- בכל קורס יש פיד שינויים ברשימת הקורסים, שחושף התראות כשתלמידים ומורים מצטרפים לקורסים ויוצאים מהם.
- בכל קורס יש פיד שינויים בעבודה בקורס. הפיד כולל התראות כשנוצרים או משנים אובייקטים בקורסים או שהם מגישים אותם במסגרת הקורס.
הגדרת נושא ב-Cloud Pub/Sub
ההתראות נשלחות לנושאים של Cloud Pub/Sub. באמצעות Cloud Pub/Sub אתם יכולים לקבל התראות בתגובה ל-hook באינטרנט, או על ידי דגימה של נקודת קצה (endpoint) של מינוי.
כדי להגדיר נושא ב-Cloud Pub/Sub, צריך לבצע את הפעולות הבאות:
- חשוב לוודא שאתם עומדים בדרישות המוקדמות של Cloud Pub/Sub.
- הגדרת לקוח Cloud Pub/Sub
- עליכם לבדוק את מחירי Cloud Pub/Sub ולהפעיל את החיוב בפרויקט שלכם ב-Developer Console.
אפשר ליצור נושא ב-Cloud Pub/Sub במסוף למפתחים (הפשוט ביותר), דרך כלי שורת הפקודה (לשימוש פרוגרמטי פשוט) או באמצעות Cloud Pub/Sub API. שימו לב: ב-Cloud Pub/Sub יש הרשאה רק למספר מוגבל של נושאים, לכן שימוש בנושא אחד לקבלת כל ההתראות מבטיח שלא תיפגעו בבעיות של התאמה לעומס (scaling) אם האפליקציה שלכם הופכת לפופולרית.
ליצור מינוי ב-Cloud Pub/Sub ולהורות ל-Cloud Pub/Sub איך לשלוח את ההתראות.
לסיום, לפני ההרשמה לשירות ההתראות, צריך לתת לחשבון השירות של ההתראות (
classroom-notifications@system.gserviceaccount.com
) הרשאה כדי לפרסם בנושא.
הערה: כשנותנים לחשבון השירות של ההתראות הרשאה לפרסם בנושא Cloud Pub/Sub, משתמשים שיכולים לשלוח בקשות מהפרויקט שלך במסוף המפתחים יוכלו לוודא שהפרויקט קיים, ולהירשם לקבלת התראות. אפליקציות רבות מאחסנות מזהי לקוח של OAuth בצד הלקוח, ולכן ייתכן שמשתמשי הקצה יוכלו להגיש בקשות מהפרויקט שלכם ב-Developer Console. אם המצב הזה נכון לגביכם, ואתם חוששים שמשתמשי הקצה שולחים התראות לא רצויות לנושא Cloud Pub/Sub או אם הם יודעים את השמות של נושאי Cloud Pub/Sub שבהם אתם משתמשים להתראות, כדאי להירשם לקבלת התראות מפרויקט אחר ב-Developer Console.
רישום האפליקציה לקבלת התראות
אחרי שיוצרים נושא מחשבון שירות ההתראות של Classroom API יכול לפרסם בו, אפשר להירשם לקבלת התראות ב-method 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 מהמשתמש המורשה עם ההיקפים הנדרשים. אם המשתמש ינתק את האפליקציה, ההתראות ייפסקו. שימו לב שבשלב הזה אין תמיכה בהאצלת סמכויות ברמת הדומיין. אם תנסו להירשם לקבלת התראות רק באמצעות ייפוי כוח ברמת הדומיין, תופיע הודעת השגיאה @MissingGrant
.
קבלת התראות
התראות מקודדות באמצעות JSON ומכילות:
- שם האוסף שמכיל את המשאב שהשתנה. ההתראות על שינויים ברשימת המשתתפים הן
courses.students
אוcourses.teachers
. במקרה של שינויים בעבודה בקורס, הערך הואcourses.courseWork
אוcourses.courseWork.studentSubmissions
. - מזהים של המשאב שהשתנה, במפה. המפה הזו תוכננה כדי להתאים את הארגומנטים לשיטה
get
של המשאב המתאים. בהתראות על שינויים ברשימת התלמידים, השדותcourseId
ו-userId
יאוכלסו בשדותcourseId
ו-userId
ללא שינוי, ואפשר יהיה לשלוח אותם ללא שינוי ל-courses.students.get() או ל-courses.teachers.get(). בדומה, גם בשדות של הקורסים.coursework אוסף השדותcourseId
ו-id
אפשר לשלוח את השדותcourseId
ו-id
ללא שינוי, אל courses.courseWork.get(), ו-subcourses unmodified() subcourses.Submission() ו-subsubmission המח הילדים כיcourseWorkId
courses.courseWork.studentSubmissions.get()
קטע הקוד הבא מדגים התראה לדוגמה:
{
"collection": "courses.students",
"eventType": "CREATED",
"resourceId": {
"courseId": "12345",
"userId": "45678"
}
}
להתראות יש גם מאפיין של הודעת registrationId
, שמכיל את
המזהה של הרישום שגרם לרישום ההתראה, ואפשר להשתמש בו
עם registrations.delete()
כדי לבטל את הרישום בהתראות.