Classroom API'deki push bildirimleri

Classroom'da veriler değiştiğinde bildirim almak için Registrations koleksiyonundaki yöntemleri kullanabilirsiniz.

Bu makalede, kavramsal bir genel bakışın yanı sıra push bildirimlerini almaya nasıl başlayacağınızla ilgili basit talimatlar sağlanmaktadır.

Classroom push bildirimlerine genel bakış

Classroom API push bildirimleri özelliği, Classroom API'yi kullanan uygulamaların Classroom'da veri değişikliği olduğunda bildirim almak üzere abone olmasını sağlar. Bildirimler, genellikle değişiklikten sonraki birkaç dakika içinde bir Cloud Pub/Sub konusuna gönderilir.

Push bildirimleri almak için bir Cloud Pub/Sub konusu ayarlamanız ve uygun bildirim feed'i için bir kayıt oluştururken bu konunun adını girmeniz gerekir.

Bu belgede kullanılan temel kavramların tanımları aşağıda verilmiştir:

  • Hedef, bildirimlerin gönderildiği bir yerdir.
  • Feed, üçüncü taraf bir uygulamanın abone olabileceği bir bildirim türüdür. Örneğin, "1234 ders kadrosu değişiklikleri".
  • Kayıt, Classroom API'ye belirli bir feed'den hedefe bildirim gönderme talimatıdır.

Bir feed için kayıt oluşturduktan sonra kaydın Cloud Pub/Sub konusu, süresi dolana kadar o feed'den bildirim alır. Kaydınız bir hafta sürer ancak registrations.create() adlı sağlayıcıya aynı istekte bulunarak kaydınızı istediğiniz zaman uzatabilirsiniz.

Cloud Pub/Sub konunuz, yalnızca kayıt oluştururken sağladığınız kimlik bilgileriyle görüntüleyebileceğiniz kaynaklarla ilgili bildirimleri alır. Örneğin, kullanıcı uygulamanızdan izni iptal ederse veya öğretmen olarak kaldırılırsa bildirimler daha uzun süre gönderilir.

Feed türleri

Classroom API şu anda üç tür feed sunmaktadır:

  • Her alanda bir alan için liste değişiklikleri feed'i bulunur. Bu feed, öğrenciler ve öğretmenler ilgili alandaki derslere katıldığında ve derslerden ayrıldığında bildirim gösterilir.
  • Her dersin ders için öğrenci listesi değişiklikleri feed'i vardır. Bu feed, öğrenciler ve öğretmenler söz konusu kursa katıldığında ve derslerden ayrıldığında bildirimler gösterilir.
  • Her kursta, ders için ders çalışması değişiklikleri feed'i bulunur. Bu feed, söz konusu derste herhangi bir ders çalışması veya öğrenci gönderim nesnesi oluşturulduğunda veya değiştirildiğinde bildirim gösterir.

Cloud Pub/Sub konusu oluşturma

Bildirimler Cloud Pub/Sub konularına gönderilir. Cloud Pub/Sub'dan bir web kancası ile veya bir abonelik uç noktasını yoklayarak bildirim alabilirsiniz.

Cloud Pub/Sub konusu oluşturmak için şunları yapmanız gerekir:

  1. Cloud Pub/Sub Önkoşullarını yerine getirdiğinizden emin olun.
  2. Cloud Pub/Sub istemcisi kurun.
  3. Cloud Pub/Sub fiyatlandırmasını inceleyin ve Developer Console projeniz için faturalandırmayı etkinleştirin.
  4. Geliştirici Konsolu'nda (en kolay), komut satırı aracıyla (basit programatik kullanım için) veya Cloud Pub/Sub API'yi kullanarak bir Cloud Pub/Sub konusu oluşturun. Cloud Pub/Sub'ın yalnızca sınırlı sayıda konuya izin verdiğini unutmayın. Bu nedenle, tüm bildirimlerinizi almak için tek bir konu kullanmanız, uygulamanız popüler hale geldiğinde ölçeklendirme sorunları yaşamamanızı sağlar.

  5. Cloud Pub/Sub'a bildirimlerinizi nasıl teslim edeceğinizi bildirmek için Cloud Pub/Sub'da bir Abonelik oluşturun.

  6. Son olarak, Push Bildirimleri'ne kaydolmadan önce konunuzda yayınlama işlemi için Push Bildirimleri hizmet hesabına (classroom-notifications@system.gserviceaccount.com) izin vermeniz gerekir.

NOT: Push Bildirimleri hizmet hesabına Cloud Pub/Sub konunuzda yayınlama izni verirseniz Developer Console projenizden istek gönderebilen kullanıcılar projenizin mevcut olduğunu belirleyip bildirim almak için kaydolabilir. Birçok uygulama, OAuth İstemci Kimliklerini istemci tarafında depolar. Bu nedenle, son kullanıcılar Developer Console projenizden istekte bulunabilir. Bu durum sizin için geçerliyse ve son kullanıcıların Cloud Pub/Sub konunuza istenmeyen bildirimler göndermesi veya push bildirimleri için kullandığınız Cloud Pub/Sub konularının adlarını bilme konusunda endişeleriniz varsa farklı bir Developer Console projesinden push bildirimlerine kaydolmayı düşünmelisiniz.

Uygulamanızı bildirimler için kaydedin

Classroom API push bildirimleri hizmet hesabının yayınlayabileceği bir konu belirledikten sonra, registrations.create() yöntemini kullanarak bildirim için kaydolabilirsiniz. registrations.create() yöntemi, sağlanan Cloud Pub/Sub konusuna push bildirimleri hizmet hesabı tarafından erişilebildiğini doğrular. Push bildirimleri hizmet hesabı konuya erişemezse (ör. konu yoksa veya hizmete bu konuda yayınlama izni vermediyseniz) yöntem başarısız olur.

Yetkilendirme

Classroom API'ye yapılan tüm çağrılar gibi registrations.create() çağrıları da bir yetkilendirme jetonuyla yetkilendirilmelidir. Bu kimlik doğrulama jetonu, Push Bildirimleri kapsamını (https://www.googleapis.com/auth/classroom.push-notifications) ve hangi bildirimlerin gönderildiğiyle ilgili verileri görüntülemek için gerekli olan kapsamları içermelidir.

  • Öğrenci listesi değişikliği feed'leri için bu, sanatçı listesi kapsamı veya (ideal olarak) salt okunur varyantı (https://www.googleapis.com/auth/classroom.rosters.readonly veya https://www.googleapis.com/auth/classroom.rosters) anlamına gelir.
  • Sınıf çalışması değişiklik feed'leri için bu, sınıf çalışması kapsamının "öğrenciler" sürümleri veya (ideal olarak) salt okunur varyantı (https://www.googleapis.com/auth/classroom.coursework.students.readonly veya https://www.googleapis.com/auth/classroom.coursework.students) anlamına gelir.

Bildirimlerin teslim edilebilmesi için uygulamanın, yetkili kullanıcıdan gerekli kapsamlarla birlikte bir OAuth hibesi alması gerekir. Kullanıcı uygulamanın bağlantısını keserse bildirimler durdurulur. Şu anda bu amaç için alan genelinde yetki verme yetkisinin desteklenmediğini unutmayın. Bildirimleri yalnızca alan genelinde yetki verilmiş yetkiliyi kullanarak kaydettirmeye çalışırsanız @MissingGrant hatası alırsınız.

Bildirim alma

Bildirimler JSON ile kodlanmıştır ve şunları içerir:

  • Değişen kaynağı içeren koleksiyonun adı. Kadro değişiklikleriyle ilgili bildirimler için e-posta adresi courses.students veya courses.teachers. Sınıf çalışması değişiklikleri için bu alan courses.courseWork veya courses.courseWork.studentSubmissions olacaktır.
  • Değişen kaynağın bir haritada tanımlayıcıları. Bu eşleme, bağımsız değişkenleri uygun kaynağın get yöntemiyle eşleştirmek üzere tasarlanmıştır. İsim listesi değişiklikleriyle ilgili bildirimler için courseId ve userId alanları doldurulur ve {courses.course1course1%C%C4%C5%25%C5%25%C4%24%C4%25%C4%25%C4%2 aç%C5%21%C4 ile gönderilen dosya {/2%C4%20% ve%C5%22%C4 hareket paketi ile değiştirilebilecek olanWorkcourse.course1%C%C2.C%C4.2{B>Cher.{course1%C%C4.D2.c%C4.com{C% gözden Yük'e,%C4%C öğesine{/1 vecourseId}courseId ve {course.course1} üret.course.courses.students.get()courses.teachers.get()ididcourses.courseWork.get()courseWorkIdcourses.courseWork.studentSubmissions.get()

Aşağıdaki kod snippet'inde örnek bir bildirim gösterilmektedir:

{
  "collection": "courses.students",
  "eventType": "CREATED",
  "resourceId": {
    "courseId": "12345",
    "userId": "45678"
  }
}

Bildirimlerde ayrıca, bildirime neden olan kaydın tanımlayıcısını içeren registrationId mesaj özelliği bulunur. Bu özellik, bildirimlerdeki kaydını iptal etmek için registrations.delete() ile birlikte kullanılabilir.