Formlardaki veriler değiştiğinde bildirim almak için Watches koleksiyonundaki yöntemleri kullanabilirsiniz. Bu sayfada, push bildirimlerini ayarlama ve alma ile ilgili kavramsal bir genel bakış ve talimatlar sağlanmaktadır.
Genel Bakış
Google Forms API'nin push bildirimleri özelliği, uygulamaların formlardaki veriler değiştiğinde bildirimlere abone olmasına olanak tanır. Bildirimler, genellikle değişiklikten sonraki birkaç dakika içinde bir Cloud Pub/Sub konusuna gönderilir.
Push bildirimi almak için bir Cloud Pub/Sub konusu oluşturmanız ve uygun etkinlik türü için izleme 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. Desteklenen tek hedef bir Cloud Pub/Sub konusudur.
- Etkinlik türü, üçüncü taraf bir uygulamanın abone olabileceği bildirim kategorisidir.
- İzleme, Forms API'ye belirli bir formdaki belirli bir etkinlik türü için bildirimleri bir hedefe gönderme talimatıdır.
Belirli bir formda bir etkinlik türü için izleme oluşturduğunuzda, bu izlemenin hedefi (Cloud Pub/Sub konusu) izleme süresi dolana kadar söz konusu formdaki etkinliklerden bildirim alır. İzleme isteğiniz bir hafta sürer ancak süresi dolmadan önce watches.renew() isteğinde bulunarak süreyi uzatabilirsiniz.
Cloud Pub/Sub konunuz yalnızca sağladığınız kimlik bilgileriyle görüntüleyebileceğiniz formlarla ilgili bildirimleri alır. Örneğin, kullanıcı uygulamanızdan izni iptal ederse veya izlenen bir forma düzenleme erişimini kaybederse bildirimler artık gönderilmez.
Kullanılabilir etkinlik türleri
Google Forms API şu anda iki etkinlik kategorisi sunmaktadır:
EventType.SCHEMA
: Formun içeriğinde ve ayarlarında yapılan düzenlemeler hakkında bildirim gönderir.EventType.RESPONSES
: Form yanıtları (hem yeni hem de güncellenmiş) gönderildiğinde bildirim gönderir.
Bildirim yanıtları
Bildirimler JSON ile kodlanır ve şunları içerir:
- Tetikleyici formun kimliği
- Tetikleyici izlemenin kimliği
- Bildirimi tetikleyen etkinlik türü
- Cloud Pub/Sub tarafından ayarlanan diğer alanlar (ör.
messageId
vepublishTime
)
Bildirimler, ayrıntılı form veya yanıt verileri içermez. Her bildirim alındıktan sonra yeni verileri getirmek için ayrı bir API çağrısı yapılması gerekir. Bunu nasıl yapacağınızı öğrenmek için Önerilen kullanım bölümüne bakın.
Aşağıdaki snippet, şema değişikliğiyle ilgili örnek bir bildirimi gösterir:
{
"attributes": {
"eventType": "SCHEMA",
"formId": "18Xgmr4XQb-l0ypfCNGQoHAw2o82foMr8J0HPHdagS6g",
"watchId": "892515d1-a902-444f-a2fe-42b718fe8159"
},
"messageId": "767437830649",
"publishTime": "2021-03-31T01:34:08.053Z"
}
Aşağıdaki snippet'te yeni bir yanıtla ilgili örnek bir bildirim gösterilmektedir:
{
"attributes": {
"eventType": "RESPONSES",
"formId": "18Xgmr4XQb-l0ypfCNGQoHAw2o82foMr8J0HPHdagS6g",
"watchId": "5d7e5690-b1ff-41ce-8afb-b469912efd7d"
},
"messageId": "767467004397",
"publishTime": "2021-03-31T01:43:57.285Z"
}
Cloud Pub/Sub konusu oluşturma
Bildirimler Cloud Pub/Sub konularına iletilir. Cloud Pub/Sub'dan web kancası üzerinden veya bir abonelik uç noktası yoklanarak bildirim alabilirsiniz.
Cloud Pub/Sub konusu oluşturmak için aşağıdakileri yapın:
- Cloud Pub/Sub Ön Koşulları'nı tamamlayın.
- Cloud Pub/Sub istemcisi ayarlayın.
- Cloud Pub/Sub fiyatlandırmasını inceleyin ve Developer Console projeniz için faturalandırmayı etkinleştirin.
Üç yöntemden birini kullanarak Cloud Pub/Sub konusu oluşturun:
- Developer Console'u kullanarak (en kolay yöntem)
- Komut satırı aracını (basit programatik kullanım için) veya
- Cloud Pub/Sub API'yi kullanarak.
Cloud Pub/Sub'a bildirimlerinizi nasıl ileteceğini söylemek için Cloud Pub/Sub'da bir abonelik oluşturun.
Son olarak, konunuzu hedefleyen izlemeler oluşturmadan önce Formlar bildirimleri hizmet hesabına (forms-notifications@system.gserviceaccount.com) konunuza yayınlama izni vermeniz gerekir.
Kol saati oluşturma
Forms API push bildirimleri hizmet hesabının yayınlayabileceği bir konu belirledikten sonra watches.create() yöntemini kullanarak bildirim oluşturabilirsiniz. Bu yöntem, sağlanan Cloud Pub/Sub konusuna push bildirimleri hizmet hesabıyla erişilebildiğini doğrular ve konuya erişilemezse (ör. konu mevcut değilse veya bu konuda yayınlama izni vermediyseniz) başarısız olur.
Python
Node.js
Kol saati silme
Python
Node.js
Yetkilendirme
Forms API'ye yapılan tüm çağrılar gibi, watches.create()
çağrıları da bir yetkilendirme jetonuyla yetkilendirilmelidir. Jeton, hangi bildirimlerin gönderildiğiyle ilgili verilere okuma erişimi veren bir kapsam içermelidir.
- Şema değişiklikleri için bu, forms.get() kullanılarak formlara okuma erişimi veren tüm kapsamlar anlamına gelir.
- Yanıtlar için bu, form yanıtlarına okuma erişimi veren tüm kapsamlar anlamına gelir. Örneğin, forms.responses.list() kullanılır.
Bildirimlerin gönderilebilmesi için uygulamanın, yetkili kullanıcıdan gerekli kapsamlarla bir OAuth izni alması gerekir. Kullanıcı uygulamanın bağlantısını keserse bildirimler durdurulur ve saat, hata nedeniyle askıya alınabilir. Yetkiyi yeniden kazandıktan sonra bildirimleri devam ettirmek için Saati yenileme başlıklı makaleyi inceleyin.
Bir formun izleme listesini görüntüleme
Python
Node.js
Kol saatini yenileme
Python
Node.js
Kısıtlama
Bildirimler sınırlandırılır. Her kol saati, otuz saniyede en fazla bir bildirim alabilir. Bu sıklık eşiği değişebilir.
Sınırlama nedeniyle, tek bir bildirim birden fazla etkinliğe karşılık gelebilir. Başka bir deyişle, bir bildirim, son bildirimden bu yana bir veya daha fazla etkinliğin gerçekleştiğini gösterir.
Sınırlar
Herhangi bir zamanda, belirli bir form ve etkinlik türü için her Cloud Console projesi şunlara sahip olabilir:
- toplamda 20 izleme
- Son kullanıcı başına bir izleme
Ayrıca, her form herhangi bir zamanda tüm Cloud Console projelerinde toplamda etkinlik türü başına 50 izlemeyle sınırlıdır.
Bir kol saati, ilgili kullanıcının kimlik bilgileriyle oluşturulduğunda veya yenilendiğinde son kullanıcıyla ilişkilendirilir. İlişkili son kullanıcı form erişimini kaybederse veya uygulamanın form erişimini iptal ederse izleme askıya alınır.
Güvenilirlik
Her kol saati, olağanüstü durumlar dışında her etkinlikten sonra en az bir kez bildirim alır. Çok büyük bir çoğunlukta, etkinlikten sonraki birkaç dakika içinde bildirim gönderilir.
Hatalar
Bir kol saatiyle ilgili bildirimler sürekli olarak teslim edilemezse kol saatinin durumu SUSPENDED
olur ve kol saatinin errorType
alanı ayarlanır. Askıya alınmış bir saatin durumunu ACTIVE
olarak sıfırlamak ve bildirimleri devam ettirmek için Saati yenileme başlıklı makaleyi inceleyin.
Önerilen kullanım
- Tek bir Cloud Pub/Sub konusunu birçok izlemenin hedefi olarak kullanma.
- Bir konuyla ilgili bildirim alırken form kimliği, bildirim yüküne dahil edilir. Hangi verilerin ve hangi formdan getirileceğini öğrenmek için etkinlik türüyle birlikte kullanın.
EventType.RESPONSES
içeren bir bildirimden sonra güncellenen verileri getirmek için forms.responses.list() işlevini çağırın.- İstekle ilgili filtreyi
timestamp > timestamp_of_the_last_response_you_fetched
olarak ayarlayın.
- İstekle ilgili filtreyi
EventType.SCHEMA
içeren bir bildirimden sonra güncellenen verileri getirmek için forms.get() işlevini çağırın.