ข้อความ Push ใน Classroom API

คุณสามารถใช้เมธอดในคอลเล็กชัน 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 คุณต้องดำเนินการต่อไปนี้

  1. ตรวจสอบว่าได้ดำเนินการตาม Cloud Pub/Sub แล้ว สิ่งที่ต้องมีก่อน
  2. ตั้งค่าไคลเอ็นต์ Cloud Pub/Sub
  3. ตรวจสอบราคา Cloud Pub/Sub และเปิดใช้การเรียกเก็บเงินสำหรับโครงการใน Developer Console
  4. สร้างหัวข้อ Cloud Pub/Sub ในส่วนนักพัฒนาซอฟต์แวร์ คอนโซล (ง่ายที่สุด) ผ่านทางบรรทัดคำสั่ง เครื่องมือ (สำหรับการใช้งานแบบเป็นโปรแกรมอย่างง่าย) หรือใช้ Cloud Pub/Sub API โปรดทราบว่า Cloud Pub/Sub อนุญาต URL สำหรับ หัวข้อ ดังนั้นการใช้ 1 หัวข้อเพื่อ รับการแจ้งเตือนทั้งหมดเพื่อไม่ให้คุณประสบปัญหาการปรับขนาดหาก กลายเป็นที่นิยม

  5. สร้างการสมัครใช้บริการใน Cloud Publi/Sub เพื่อบอก Cloud Publi/Sub ว่าจะส่งการแจ้งเตือนอย่างไร

  6. สุดท้าย ก่อนลงทะเบียนเพื่อรับ 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() เพื่อยกเลิกการลงทะเบียนจากการแจ้งเตือน