Classroom API'deki push bildirimleri

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

Bu makalede, push bildirimleri almaya nasıl başlayacağınızla ilgili basit talimatlar ve kavramsal bir genel bakış sunulmaktadır.

Classroom push bildirimlerine genel bakış

Classroom API push bildirim özelliği, Classroom API'yi kullanan uygulamaların Classroom'da veri değiştiğinde bildirimlere abone olmasına olanak tanır. Bildirimler, genellikle değişiklikten birkaç dakika sonra bir Cloud Pub/Sub konusuna gönderilir.

Push bildirimi almak için bir Cloud Pub/Sub konusu oluşturmanız ve uygun bildirim feed'i için kayıt oluştururken bu konunun adını sağlamanız gerekir.

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

  • Hedef, bildirimlerin gönderildiği yerdir.
  • Feed, üçüncü taraf uygulamalarının abone olabileceği bir bildirim türüdür. Örneğin, "1234 numaralı ders için öğrenci listesi değişiklikleri".
  • Kayıt, Classroom API'ye belirli bir feed'den hedef'e bildirim göndermesi için verilen bir talimattır.

Bir feed için kayıt oluşturduğunuzda bu kaydın Cloud Pub/Sub konusu, süresi dolana kadar ilgili feed'den bildirim alır. Kayıt süreniz bir haftadır ancak registrations.create() ile aynı isteği göndererek sürenin dolmasından önce dilediğiniz zaman uzatabilirsiniz.

Cloud Pub/Sub konunuz, yalnızca kayıt oluştururken sağladığınız kimlik bilgileriyle görüntüleyebileceğiniz kaynaklar hakkında bildirim alır. Örneğin, kullanıcı uygulamanızdaki izni iptal ederse veya öğretmen olarak kaldırılırsa bildirimler artık gönderilmez.

Feed türleri

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

  • Her alanın bir alan için öğrenci listesi değişiklikleri feed'i vardır. Bu feed, öğrenciler ve öğretmenler ilgili alandaki derslere katıldığında ve derslerden ayrıldığında bildirim gösterir.
  • Her dersin, öğrenciler ve öğretmenler derslere katılıp ayrıldığında bildirimler gösteren bir ders için öğrenci listesi değişiklikleri feed'i vardır.
  • Her kursta, ders için kurs çalışmasıyla ilgili değişiklikler feed'i vardır. Bu feed, ilgili derste herhangi bir sınıf çalışması veya öğrenci gönderim nesnesi oluşturulduğunda ya da değiştirildiğinde bununla ilgili bildirim gösterir.

Cloud Pub/Sub konusu oluşturma

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

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

  1. Cloud Pub/Sub ön koşullarını karşıladığınızdan emin olun.
  2. Cloud Pub/Sub istemcisi oluşturun.
  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 yöntem), komut satırı aracını (basit programatik kullanım için) veya Cloud Pub/Sub API'sini kullanarak 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 kullanmak, uygulamanız popüler hale gelirse ölçeklendirme sorunlarına maruz kalmamanızı sağlar.

  5. Cloud Pub/Sub'a bildirimlerinizi nasıl yayınlayacağını bildirmek için Cloud Pub/Sub'da abonelik oluşturun.

  6. Son olarak, Push bildirimleri için kaydolurken Push bildirimleri hizmet hesabına (classroom-notifications@system.gserviceaccount.com) konunuzda yayın yapma izni vermeniz gerekir.

NOT: Push Bildirimleri hizmet hesabına Cloud Pub/Sub konunuza yayın yapma izni verirseniz Developer Console projenizden istek gönderebilen kullanıcılar projenin mevcut olup olmadığını belirleyebilir ve bildirim almak için kaydolabilir. Birçok uygulama, OAuth istemci kimliklerini istemci tarafında depolar. Bu nedenle, son kullanıcılar Developer Console projenizden istek gönderebilir. Bu durum sizin için geçerliyse ve son kullanıcıların Cloud Pub/Sub konunuza istemediğiniz bildirimler göndermesinden veya push bildirimleri için kullandığınız Cloud Pub/Sub konularının adlarını öğrenmesinden endişeleniyorsanız farklı bir Developer Console projesinden push bildirimlerine kaydolmanız önerilir.

Uygulamanızı bildirimler için kaydetme

Classroom API push bildirimlerinin hizmet hesabının yayınlayabileceği bir konunuz olduğunda registrations.create() yöntemini kullanarak bildirimlere kaydolabilirsiniz. registrations.create() yöntemi, sağlanan Cloud Pub/Sub konusuna push bildirimleri hizmet hesabı tarafından ulaşılabileceğini doğrular. Push bildirimleri hizmet hesabı konuya ulaşamazsa (ör. konu mevcut değilse veya konuyla ilgili 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 gereken tüm kapsamları içermelidir.

  • Kadro değişikliği feed'leri için bu, Kadrolar 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.
  • Ders ç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 okuma varyantı (https://www.googleapis.com/auth/classroom.coursework.students.readonly veya https://www.googleapis.com/auth/classroom.coursework.students) anlamına gelir.

Bildirimlerin gönderilebilmesi için uygulamanın, yetkili kullanıcıdan gerekli kapsamları içeren bir OAuth izni alması gerekir. Kullanıcı uygulamanın bağlantısını keserse bildirimler durdurulur. Alan genelinde yetki vermenin şu anda bu amaçla desteklenmediğini unutmayın. Bildirimlere yalnızca alan genelinde yetki verilmiş yetkiliyi kullanarak kaydolmaya çalışırsanız @MissingGrant hatası alırsınız.

Bildirim alma

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

  • Değişen kaynağı içeren koleksiyonun adı. Kadro değişiklikleriyle ilgili bildirimler için bu değer courses.students veya courses.teachers'tır. Sınıf çalışması değişiklikleri için bu değer courses.courseWork veya courses.courseWork.studentSubmissions'tır.
  • Değişen kaynağın bir haritadaki tanımlayıcıları. Bu harita, bağımsız değişkenleri uygun kaynağın get yöntemiyle eşleştirmek için tasarlanmıştır. courseIdcourseIdcourseIduserIdcourses.students.get()courses.teachers.get()ididcourses.courseWork.get()courseWorkIdcourses.courseWork.studentSubmissions.get()

Aşağıdaki kod snippet'i örnek bir bildirim göstermektedir:

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

Bildirimler ayrıca, bildirime neden olan kayda ait tanımlayıcıyı içeren bir registrationId mesaj özelliğine sahiptir. Bu özellik, bildirimlerin kaydını registrations.delete() ile birlikte kullanarak silebilirsiniz.