คุณสามารถใช้วิธีการในคอลเล็กชัน
Registrations
เพื่อรับการแจ้งเตือนเมื่อข้อมูลใน Classroom มีการเปลี่ยนแปลง
บทความนี้จะให้ภาพรวมเชิงแนวคิดพร้อมวิธีการง่ายๆ เกี่ยวกับ วิธีเริ่มรับการแจ้งเตือนแบบพุช
ภาพรวมของข้อความ Push ของ Classroom
ฟีเจอร์ข้อความ Push ของ Classroom API ช่วยให้แอปพลิเคชันที่ใช้ Classroom API สมัครรับการแจ้งเตือนเมื่อข้อมูลใน Classroom มีการเปลี่ยนแปลงได้ ระบบจะส่งการแจ้งเตือนไปยังหัวข้อ Cloud Pub/Sub โดยปกติจะใช้เวลาไม่กี่นาทีหลังจาก การเปลี่ยนแปลง
หากต้องการรับการแจ้งเตือนแบบพุช คุณต้องตั้งค่าหัวข้อ Cloud Pub/Sub และระบุชื่อหัวข้อนั้นเมื่อสร้างการลงทะเบียนสำหรับฟีดการแจ้งเตือนที่เหมาะสม
ด้านล่างนี้คือคำจำกัดความของแนวคิดหลักที่ใช้ในเอกสารนี้
- ปลายทางคือที่ที่ระบบส่งการแจ้งเตือน
- ฟีดคือการแจ้งเตือนประเภทหนึ่งที่แอปพลิเคชันของบุคคลที่สามสามารถ สมัครรับข้อมูลได้ เช่น "การเปลี่ยนแปลงบัญชีรายชื่อสำหรับหลักสูตร 1234"
- การลงทะเบียนคือคำสั่งให้ Classroom API ส่งการแจ้งเตือนจากฟีดหนึ่งๆ ไปยังปลายทาง
เมื่อสร้างการลงทะเบียนสำหรับฟีดแล้ว หัวข้อ Cloud Pub/Sub ของการลงทะเบียนนั้นจะได้รับการแจ้งเตือนจากฟีดดังกล่าวจนกว่าจะหมดอายุ
การลงทะเบียนของคุณ
จะมีอายุ 1 สัปดาห์ แต่คุณสามารถขยายเวลาได้ทุกเมื่อก่อนที่การลงทะเบียนจะหมดอายุโดยส่งคำขอ
เดียวกันไปที่ registrations.create()
หัวข้อ Cloud Pub/Sub จะได้รับการแจ้งเตือนเกี่ยวกับทรัพยากรที่คุณดูได้ด้วยข้อมูลเข้าสู่ระบบที่คุณระบุเมื่อสร้างการลงทะเบียนเท่านั้น เช่น หากผู้ใช้เพิกถอนสิทธิ์จากแอปพลิเคชันของคุณหรือถูกนำออกจากการเป็นครู ระบบจะไม่ส่งการแจ้งเตือนอีกต่อไป
ประเภทของฟีด
Classroom API มีฟีด 3 ประเภท ได้แก่
- แต่ละโดเมนจะมีฟีดการเปลี่ยนแปลงบัญชีรายชื่อสำหรับโดเมน ซึ่งจะแสดง การแจ้งเตือนเมื่อนักเรียน/นักศึกษาและครูเข้าร่วมและออกจากหลักสูตรในโดเมนนั้น
- แต่ละหลักสูตรจะมีฟีดการเปลี่ยนแปลงบัญชีรายชื่อสำหรับหลักสูตร ซึ่งจะแสดง การแจ้งเตือนเมื่อนักเรียน/นักศึกษาและครูเข้าร่วมและออกจากหลักสูตรในหลักสูตรนั้น
- แต่ละหลักสูตรจะมีฟีดการเปลี่ยนแปลงงานในหลักสูตรสำหรับหลักสูตร ซึ่งจะแสดง การแจ้งเตือนเมื่อมีการสร้างหรือแก้ไขออบเจ็กต์งานในหลักสูตรหรืองานที่นักเรียนส่ง ในหลักสูตรนั้น
ตั้งค่าหัวข้อ Cloud Pub/Sub
ระบบจะส่งการแจ้งเตือนไปยังหัวข้อ Cloud Pub/Sub คุณสามารถรับการแจ้งเตือนใน Webhook หรือโดยการสำรวจปลายทางการสมัครรับข้อมูลจาก Cloud Pub/Sub
หากต้องการตั้งค่าหัวข้อ Cloud Pub/Sub คุณต้องทำดังนี้
- ตรวจสอบว่าคุณมีข้อกำหนดเบื้องต้นของ Cloud Pub/Sub
- ตั้งค่าไคลเอ็นต์ Cloud Pub/Sub
- ตรวจสอบราคาของ Cloud Pub/Sub และเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Developer Console
สร้างหัวข้อ Cloud Pub/Sub ใน Developer Console (ง่ายที่สุด) ผ่านเครื่องมือ บรรทัดคำสั่ง (สำหรับการใช้งานแบบเป็นโปรแกรมอย่างง่าย) หรือใช้ Cloud Pub/Sub API โปรดทราบว่า Cloud Pub/Sub อนุญาตให้ใช้หัวข้อได้เพียงจำนวนจำกัด ดังนั้นการใช้หัวข้อเดียวเพื่อรับการแจ้งเตือนทั้งหมดจะช่วยให้คุณไม่พบปัญหาการปรับขนาดหากแอปพลิเคชันได้รับความนิยม
สร้างการสมัครรับข้อมูลใน Cloud Pub/Sub เพื่อบอก Cloud Pub/Sub ว่าจะส่งการแจ้งเตือนอย่างไร
สุดท้ายนี้ ก่อนลงทะเบียนรับการแจ้งเตือนแบบพุช คุณต้องให้สิทธิ์ บัญชีบริการการแจ้งเตือนแบบพุช (
classroom-notifications@system.gserviceaccount.com)ในการ เผยแพร่ไปยังหัวข้อของคุณ
ลงทะเบียนแอปพลิเคชันเพื่อรับการแจ้งเตือน
เมื่อมีหัวข้อที่บัญชีบริการการแจ้งเตือนแบบพุชของ 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
จากผู้ใช้ที่ได้รับอนุญาตซึ่งมีขอบเขตที่จำเป็นไว้เพื่อให้ส่งการแจ้งเตือนได้ หากผู้ใช้ยกเลิกการเชื่อมต่อแอปพลิเคชัน การแจ้งเตือนจะหยุด โปรดทราบว่าปัจจุบันระบบยังไม่รองรับการมอบสิทธิ์ทั่วทั้งโดเมนเพื่อวัตถุประสงค์นี้ หากพยายามลงทะเบียนรับการแจ้งเตือนโดยใช้สิทธิ์ที่มอบหมายระดับโดเมนเท่านั้น คุณจะได้รับข้อผิดพลาด @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()
เพื่อยกเลิกการลงทะเบียนรับการแจ้งเตือน