คุณสามารถใช้เมธอดในคอลเล็กชัน Registrations
เพื่อรับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลงข้อมูลใน Classroom
บทความนี้จะแสดงภาพรวมเชิงแนวคิด พร้อมด้วยวิธีการง่ายๆ เกี่ยวกับ วิธีเริ่มรับข้อความ Push
ภาพรวมข้อความ Push ของ Classroom
ฟีเจอร์ข้อความ Push ของ Classroom API ทำให้แอปพลิเคชันที่ใช้ Classroom API เพื่อสมัครรับการแจ้งเตือนเมื่อข้อมูลใน Classroom มีการเปลี่ยนแปลง ระบบจะส่งการแจ้งเตือนไปยังระบบคลาวด์ Pub/Sub โดยทั่วไปภายในไม่กี่นาที การเปลี่ยนแปลงได้
หากต้องการรับข้อความ Push คุณต้องตั้งค่าหัวข้อ Cloud Pub/Sub และระบุชื่อหัวข้อนั้นเมื่อสร้างการลงทะเบียนสําหรับฟีดการแจ้งเตือนที่เหมาะสม
ด้านล่างคือคำจำกัดความของแนวคิดหลักที่ใช้ในเอกสารนี้
- ปลายทางคือที่สำหรับส่งการแจ้งเตือน
- ฟีดคือการแจ้งเตือนประเภทหนึ่งที่แอปพลิเคชันของบุคคลที่สามสามารถติดตามได้ เช่น "การเปลี่ยนแปลงบัญชีรายชื่อสำหรับหลักสูตร 1234"
- การลงทะเบียนเป็นวิธีการสำหรับ Classroom API เพื่อส่งมอบ การแจ้งเตือนจากฟีดหนึ่งๆ ไปยังปลายทาง
เมื่อคุณสร้างการลงทะเบียนฟีดแล้ว หัวข้อ Cloud Pub/Sub ของการลงทะเบียนดังกล่าวจะได้รับการแจ้งเตือนจากฟีดนั้นจนกว่าจะหมดอายุ การลงทะเบียนของคุณ
ระยะเวลา 1 สัปดาห์ แต่คุณสามารถขยายเวลาใช้งานได้ทุกเมื่อก่อนหมดอายุ
คำขอเดียวกันกับ registrations.create()
หัวข้อ Cloud Pub/Sub ของคุณจะได้รับการแจ้งเตือนเกี่ยวกับทรัพยากรที่คุณดูได้ด้วยข้อมูลเข้าสู่ระบบที่ระบุไว้เมื่อสร้างการลงทะเบียนเท่านั้น สำหรับ ตัวอย่างเช่น หากผู้ใช้เพิกถอนสิทธิ์จากแอปพลิเคชันของคุณ หรือถูกนำออกจาก ครู ระบบส่งการแจ้งเตือนที่ยาวนานขึ้น
ประเภทของฟีด
ปัจจุบัน Classroom API มีฟีด 3 ประเภท ได้แก่
- โดเมนแต่ละโดเมนจะมีฟีดการเปลี่ยนแปลงข้อมูลรายชื่อสำหรับโดเมน ซึ่งจะแสดงการแจ้งเตือนเมื่อนักเรียนและครูเข้าร่วมและออกจากหลักสูตรในโดเมนนั้น
- แต่ละหลักสูตรจะมีฟีดการเปลี่ยนแปลงข้อมูลนักเรียนสำหรับหลักสูตร ซึ่งจะแสดงการแจ้งเตือนเมื่อนักเรียนและครูเข้าร่วมและออกจากหลักสูตรนั้น
- แต่ละหลักสูตรจะมีฟีดการเปลี่ยนแปลงงานในหลักสูตรสำหรับหลักสูตร ซึ่งจะแสดงการแจ้งเตือนเมื่อมีการสร้างหรือแก้ไขงานในหลักสูตรหรือออบเจ็กต์การส่งของนักเรียนในหลักสูตรนั้น
การตั้งค่าหัวข้อ 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 API โปรดทราบว่า Cloud Pub/Sub อนุญาต URL สำหรับ หัวข้อ ดังนั้นการใช้ 1 หัวข้อเพื่อ รับการแจ้งเตือนทั้งหมดเพื่อไม่ให้คุณประสบปัญหาการปรับขนาดหาก กลายเป็นที่นิยม
สร้างการสมัครใช้บริการใน Cloud Publi/Sub เพื่อบอก Cloud Publi/Sub ว่าจะส่งการแจ้งเตือนอย่างไร
สุดท้าย ก่อนลงทะเบียนเพื่อรับ Push Notifications คุณต้องให้สิทธิ์บัญชีบริการ Push Notifications (
[email protected]
) เพื่อเผยแพร่ไปยังหัวข้อ
หมายเหตุ: หากคุณให้สิทธิ์แก่บัญชีบริการข้อความ Push ในการเผยแพร่ ไปยังหัวข้อ Cloud Pub/Sub ผู้ใช้ที่ส่งคำขอจากนักพัฒนาซอฟต์แวร์ได้ โปรเจ็กต์คอนโซลจะสามารถระบุได้ว่ามีโปรเจ็กต์อยู่และลงทะเบียนสำหรับ การแจ้งเตือนไปยังแอปนั้น แอปพลิเคชันจำนวนมากจัดเก็บรหัสไคลเอ็นต์ OAuth ไว้ในไคลเอ็นต์ เพื่อให้ผู้ใช้ปลายทางสามารถส่งคำขอจาก Play Console ของคุณได้ หากกรณีนี้ตรงกับคุณ และคุณกังวลเกี่ยวกับผู้ใช้ปลายทางที่ส่ง การแจ้งเตือนที่ไม่ต้องการไปยังหัวข้อ Cloud Pub/Sub หรือการทราบชื่อของระบบคลาวด์ หัวข้อ Pub/Sub ที่คุณใช้สำหรับข้อความ Push คุณควรพิจารณา ลงทะเบียนเพื่อรับข้อความ Push จากโครงการ Developer Console อื่น
ลงทะเบียนแอปพลิเคชันเพื่อรับการแจ้งเตือน
เมื่อคุณมีหัวข้อที่บัญชีบริการข้อความ Push API ของ Classroom API
คุณสามารถลงทะเบียนรับการแจ้งเตือน
registrations.create()
เมธอด registrations.create()
จะตรวจสอบว่าระบบคลาวด์ที่ระบุ
บัญชีบริการข้อความ Push สามารถเข้าถึงหัวข้อ Pub/Sub ได้ วิธีการจะดำเนินการไม่สำเร็จหากบัญชีบริการ Push Notification เข้าถึงหัวข้อไม่ได้ เช่น หัวข้อนั้นไม่มีอยู่หรือคุณยังไม่ได้ให้สิทธิ์เผยแพร่ในหัวข้อนั้น
การให้สิทธิ์
การเรียก registrations.create()
ต้องได้รับการให้สิทธิ์ด้วยโทเค็นการให้สิทธิ์ เช่นเดียวกับการเรียกใช้ Classroom API ทั้งหมด โทเค็นการตรวจสอบสิทธิ์นี้ต้องมีขอบเขต Push Notification (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(). ในทำนองเดียวกัน การเปลี่ยนแปลงคอลเล็กชันcourse.courseWork จะมี ฟิลด์courseId
และid
ที่สามารถส่งได้โดยไม่ต้องแก้ไข courses.courseWork.get() และการเปลี่ยนแปลงในคอลเล็กชันcourse.courseWork.studentSubmissionsจะ มีช่องcourseId
,courseWorkId
และid
ที่ส่งได้โดยไม่ต้องแก้ไข ถึง courses.courseWork.studentSubmissions.get().
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างการแจ้งเตือน
{
"collection": "courses.students",
"eventType": "CREATED",
"resourceId": {
"courseId": "12345",
"userId": "45678"
}
}
การแจ้งเตือนยังมีแอตทริบิวต์ข้อความ registrationId
ซึ่งมี
สำหรับการลงทะเบียนที่ทำให้เกิดการแจ้งเตือน ซึ่งสามารถนำไปใช้
กับ
registrations.delete()
เพื่อยกเลิกการลงทะเบียนจากการแจ้งเตือน