Classroom'da veri 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ın yanı sıra kavramsal bir genel bakış sunulmaktadır.
Classroom push bildirimlerine genel bakış
Classroom API push bildirimleri özelliği, Classroom API'yi kullanan uygulamaların Classroom'da veri değiştiğinde bildirim almalarına olanak tanır. Bildirimler, genellikle değişiklikten sonraki birkaç dakika içinde Cloud Pub/Sub konusuna gönderilir.
Push bildirimleri almak için Cloud Pub/Sub konusu oluşturmanız ve uygun bildirim feed'i için kayıt oluştururken bu konunun adını belirtmeniz gerekir.
Bu dokümanlarda 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, "Ders 1234 için değişiklikleri teşvik edin".
- Kayıt, Classroom API'ye belirli bir feed'den hedefe bildirim iletme talimatıdır.
Bir feed için kayıt oluşturduğunuzda bu kaydın Cloud Pub/Sub konusu, geçerliliği sona erene kadar bu feed'den bildirim alır. Kaydınız bir hafta sürer ancak registrations.create()
tarihinde belirli bir istekte bulunarak kaydınızı süresi dolmadan önce 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ızdan izni iptal ederse veya öğretmen olarak kaldırılırsa bildirimler daha uzun süre yayınlanır.
Feed türleri
Classroom API şu anda üç tür feed sunmaktadır:
- Her alanda, alanda öğrenci listesi değişiklikleri bulunur. Bu feed, öğrenciler ve öğretmenler bu alandaki derslere katıldığında ve derslerden ayrıldığında bildirim gösterir.
- Her kursta, kurs için öğrenci listesi değişiklikleri feed'i bulunur. Bu feed, öğrenciler ve öğretmenler kurstaki derslere katıldığında ve derslerden ayrıldığında bildirim gösterir.
- Her kursta, kurs için sınıf çalışmasındaki değişiklikler feed'i bulunur. Bu özet akışı, herhangi bir ders çalışması veya ders gönderim nesnesi oluşturulduğunda veya derste 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ında veya bir abonelik uç noktasına anket göndererek bildirim alabilirsiniz.
Cloud Pub/Sub konusu oluşturmak için aşağıdakileri yapmanız gerekir:
- Cloud Pub/Sub Ön Koşulları'nı karşıladığınızdan emin olun.
- Cloud Pub/Sub istemcisi oluşturun.
- Cloud Pub/Sub fiyatlandırmasını inceleyin ve Developer Console projeniz için faturalandırmayı etkinleştirin.
Geliştirici Konsolu'nda (en kolayı), komut satırı aracıyla (basit programatik kullanım için) veya Cloud Pub/Sub API'yi 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 ulaşmamanızı sağlar.
Cloud Pub/Sub'a bildirimlerinizi nasıl ileteceğinizi bildirmek için Cloud Pub/Sub'da bir abonelik oluşturun.
Son olarak, Push Bildirimleri'ne kaydolmadan önce konunuz için Push Bildirimleri hizmet hesabına (
classroom-notifications@system.gserviceaccount.com
) izin vermeniz gerekir.
NOT: Push Bildirimleri hizmet hesabına Cloud Pub/Sub konunuz için yayın yapma izni verirseniz Geliştirici Konsolu projenizden istek yapabilen kullanıcılar bunun mevcut olduğunu belirleyebilir ve buna kaydolabilmelerini sağlayabilir. Birçok uygulama, istemci tarafında OAuth istemci kimliklerini depolar. Bu nedenle son kullanıcılar Geliştirici Konsolu projenizden istek yapabilir. 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ı öğrenme konusunda endişeleriniz varsa farklı bir Developer Console projesinden push bildirimleri için kaydolmayı düşünmeniz gerekir.
Bildirimler için başvurunuzu kaydedin
Classroom API push bildirimleri hizmet hesabının yayınlayabileceği bir konu oluşturduktan sonra, 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 erişemezse (örneğin, konu mevcut değilse veya konuya konu yayınlama izni vermediyseniz) yöntem başarısız olur.
Yetkilendirme
Classroom API'sine yapılan tüm çağrılarda olduğu gibi, registrations.create()
çağrılarına bir yetkilendirme jetonuyla yetki verilmesi gerekir. Bu kimlik doğrulama jetonu, hangi bildirimlerin gönderildiğine dair verileri görüntülemek için Push Bildirimleri kapsamını (https://www.googleapis.com/auth/classroom.push-notifications
) ve gerekli kapsamları içermelidir.
- Öğrenci listesi değişiklik feed'lerinde bu, Rosters kapsamının veya (mümkünse) salt okunur varyantının (
https://www.googleapis.com/auth/classroom.rosters.readonly
veyahttps://www.googleapis.com/auth/classroom.rosters
) kullanımı anlamına gelir. - Ders çalışması değişikliği feed'leri için, bu, sınıf çalışması kapsamının "öğrenciler" sürümleri veya (mümkünse) salt okunur varyantı (
https://www.googleapis.com/auth/classroom.coursework.students.readonly
veyahttps://www.googleapis.com/auth/classroom.coursework.students
) anlamına gelir.
Bildirimlerin teslim edilebilmesi için uygulamanın, gerekli kapsamlara sahip yetkili kullanıcının OAuth erişim iznini saklaması gerekir. Kullanıcı uygulamanın bağlantısını keserse bildirimler durdurulur. Alan genelinde yetki vermenin şu anda bu amaç için desteklenmediğini unutmayın. Yalnızca alan genelinde yetki verilen yetkiliyi kullanarak bildirimlere kaydolmayı denerseniz "@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ı. Öğrenci listesi değişiklikleriyle ilgili bildirimler için şu numarayı kullanabilirsiniz:
courses.students
veyacourses.teachers
. Sınıf çalışmasındaki değişiklikler için bucourses.courseWork
veyacourses.courseWork.studentSubmissions
şeklindedir. - Haritada değişen kaynağın tanımlayıcıları. Bu harita, bağımsız değişkenleri uygun kaynağın
get
yöntemiyle eşleşecek şekilde tasarlanmıştır. Öğrenci listesi değişiklikleriyle ilgili bildirimler içincourseId
veuserId
alanları doldurulacak olup courses.students.get() veya courses.ogres.get() alanlarına değiştirilmeden gönderilebilir. Benzer şekilde, kurslar.courseWork koleksiyonunda yapılan değişiklikler,courseId
veid
alanlarının courses.courseWork.get().course.course.courses.course.course.courses adlı Classroom'a
Aşağıdaki kod snippet'inde örnek bir bildirim gösterilmektedir:
{
"collection": "courses.students",
"eventType": "CREATED",
"resourceId": {
"courseId": "12345",
"userId": "45678"
}
}
Bildirimlerde, bildirime neden olan kaydın tanımlayıcısını içeren bir registrationId
mesaj özelliği de bulunur. Bu tanımlayıcı, bildirimlerin kaydını iptal etmek için registrations.delete()
ile kullanılabilir.