Bu dokümanda, müşterilerinizi bilgilendiren push bildirimlerinin nasıl kullanılacağı bir kaynak değişikliğini uygulamalısınız.
Genel Bakış
Google Takvim API'si, Google Takvim API'sını kullanarak kaynak değişikliğidir. Bu özelliği, kampanyalarınızın performansını iyileştirmek için en iyi yoludur. Ekstra ağı ortadan kaldırır ve anket kaynaklarıyla ilgili maliyetlerin değişip değişmediğini belirler. İzlenen bir kaynak değiştiğinde, Google Calendar API, bu durumu bir uygulamadır.
Push bildirimlerini kullanmak için iki şey yapmanız gerekir:
Alıcı URL'nizi veya "webhook"unuzu ayarlayın geri arama alıcısı.
Bu şu API bildirim mesajlarını işleyen bir HTTPS sunucusudur: bir kaynak değiştiğinde tetiklenir.
Almak istediğiniz her kaynak uç noktası için bir (bildirim kanalı) oluşturun izleyin.
Bir kanal, bildirim için yönlendirme bilgilerini belirtiyor mesaj. Kanal oluşturma işleminin bir parçası olarak, kanalınızın bildirimleri almak istiyorsunuz. Bir kanalın kaynağı değiştiğinde Google Calendar API,
POSTolarak bir bildirim mesajı gönderir söz konusu URL'ye istek gönderebilir.
Şu anda Google Calendar API, Acl, CalendarList, Events ve Settings kaynaklarına erişin.
Bildirim kanalları oluşturma
Push bildirimi istemek için bildirim kanalı oluşturmanız gerekir her kaynak için ayrı ayrı seçebilirsiniz. Bildirim kanallarınız ayarlandıktan sonra Google Calendar API, izlenen herhangi bir kaynak olduğunda uygulamanızı bilgilendirir anlamına gelir.
İzleme isteğinde bulunma
Her izlenebilir Google Calendar API kaynağının ilişkilendirilmiş bir yolu vardır.
watch yöntemi, aşağıdaki biçimdeki bir URI'da yer alır:
https://www.googleapis.com/API_NAME/API_VERSION/RESOURCE_PATH/watch
Bir
belirli bir kaynak için bir POST isteği gönderin
Kaynak için watch yöntemi.
Her bildirim kanalı hem belirli bir kullanıcıyla ilişkilendirilir hem de
ya da belirli bir kaynak kümesi olabilir. watch isteği
başarılı kullanıcı,
bu kaynağa sahip veya erişim iznine sahip.
Örnek
Belirli bir takvimdeki etkinlik koleksiyonunda yapılan değişiklikleri izlemeye başlayın:
POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json
{
"id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
"type": "web_hook",
"address": "https://mydomain.com/notifications", // Your receiving URL.
...
"token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
"expiration": 1426325213000 // (Optional) Your requested channel expiration time.
}Zorunlu özellikler
Her watch isteğiyle birlikte şu alanları girmeniz gerekir:
-
Bunu benzersiz şekilde tanımlayan bir
idözellik dizesi yeni bir bildirim kanalı oluşturabilirsiniz. Önerilerimiz evrensel olarak benzersiz bir tanımlayıcı (UUID) veya benzer bir benzersiz dize. Maksimum uzunluk: 64 karakter.Ayarladığınız kimlik değeri,
X-Goog-Channel-IdHer bildirimin HTTP başlığı size bir mesaj gönderecektir. -
typeözellik dizesi değere ayarlandıweb_hook. -
Şunları dinleyen URL'ye bir
addressözellik dizesi ayarlandı ve bu bildirim kanalındaki bildirimlere yanıt verir. Bu ve HTTPS kullanmalıdır.Google Calendar API'nin şu adrese bildirim gönderebileceğini unutmayın: Bu HTTPS adresi yalnızca yüklü bir SSL sertifikası varsa sunucu. Geçersiz sertifikalar şunlardır:
- Kendinden imzalı sertifikalar.
- Güvenilmeyen bir kaynağın imzaladığı sertifikalar.
- İptal edilmiş sertifikalar.
- Konuyla eşleşmeyen sertifikalar ana makine adı.
İsteğe bağlı özellikler
Bu isteğe bağlı alanları
watch isteği:
-
Rastgele bir dize belirten
tokenözelliği kullanılacak değer. Bildirim kanalını kullanabilirsiniz kullanıma sunuyoruz. Örneğin, e-posta adresinize gönderilen her mesajın bildirimin gönderilmediğinden emin olmak için veya iletiyi bu kanalın amacına göre yeniden gönderin. Maksimum uzunluk: 256 karakter.Jeton, Her bildirimde
X-Goog-Channel-TokenHTTP başlığı uygulamanızın bu kanal için aldığı mesaj.Bildirim kanalı jetonlarını kullanıyorsanız şunları yapmanızı öneririz:
URL sorgusu gibi genişletilebilir bir kodlama biçimi kullanın parametreleridir. Örnek:
forwardTo=hr&createdBy=mobileOAuth jetonları gibi hassas verileri eklemeyin.
-
expirationözellik dizesi Unix zaman damgası (milisaniye cinsinden) Google Calendar API'nin bu bildirim kanalı için mesaj göndermeyi durdur.Bir kanalın geçerlilik süresi varsa bu, değer olarak dahil edilir.
X-Goog-Channel-ExpirationHTTP başlığının (kullanıcıların okuyabileceği bir biçimde) biçimi) ekleyebilirsiniz. aldığı tüm bildirimler de dahildir.
İstekle ilgili daha ayrıntılı bilgi için watch yöntemine bakın.
API'deki Acl, CalendarList, Etkinlikler ve Ayarlar kaynakları için
Yanıtı izle
watch isteği başarıyla bildirim oluşturursa
kanalından bir HTTP 200 OK durum kodu döndürür.
Saat yanıtının ileti gövdesi, aşağıdaki örnekte gösterildiği gibi, yeni oluşturduğunuz bir bildirim kanalını kullanın.
{
"kind": "api#channel",
"id": "01234567-89ab-cdef-0123456789ab"", // ID you specified for this channel.
"resourceId": "o3hgv1538sdjfh", // ID of the watched resource.
"resourceUri": "https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events", // Version-specific ID of the watched resource.
"token": "target=myApp-myCalendarChannelDest", // Present only if one was provided.
"expiration": 1426325213000, // Actual expiration time as Unix timestamp (in ms), if applicable.
}
İsteğiniz kapsamında gönderdiğiniz özelliklere ek olarak
şunları da içerir: resourceId ve
İzlenen kaynağı belirlemek için resourceUri
bildirim kanalı.
Döndürülen bilgileri başka bir bildirim kanalına aktarabilirsiniz işlemlerinize devam edebilir, örneğin almayı durdurmak istediğinizde bildirimlerine bakın.
Yanıtla ilgili daha ayrıntılı bilgiyi watch sayfasında bulabilirsiniz.
yöntemini çağırın.AclCalendarList
İletiyi senkronize et
Bir kaynağı izlemek için bildirim kanalı oluşturduktan sonra
Google Calendar API, şunu belirtmek için bir sync mesajı gönderir:
bildirimler başlıyor. X-Goog-Resource-State HTTP
bu iletilerin üstbilgi değeri sync. Ağa bağlı
zamanlama sorunları varsa sync mesajı alabilirsiniz
hem de watch yöntemi yanıtını almadan önce.
sync bildirimini yoksayabilirsiniz ancak
değerlendirebilirsiniz. Örneğin, Yeşil Ofis projenizde
Bunun için X-Goog-Channel-ID ve
Şuna yapılan çağrıda X-Goog-Resource-ID değer:
bildirim almayı durdur. Ayrıca şunu da kullanabilirsiniz:
hazırlanmak amacıyla bazı başlatma işlemlerinin yapılması için sync bildirim
etkinlikleri takip edebilirsiniz.
Google Calendar API'nin gönderdiği sync mesajlarının biçimi
alıcı URL'niz aşağıda gösterilmiştir.
POST https://mydomain.com/notifications // Your receiving URL. X-Goog-Channel-ID: channel-ID-value X-Goog-Channel-Token: channel-token-value X-Goog-Channel-Expiration: expiration-date-and-time // In human-readable format. Present only if the channel expires. X-Goog-Resource-ID: identifier-for-the-watched-resource X-Goog-Resource-URI: version-specific-URI-of-the-watched-resource X-Goog-Resource-State: sync X-Goog-Message-Number: 1
Senkronizasyon iletilerinde her zaman X-Goog-Message-Number HTTP olur
başlık değeri (1). Bu kanal için takip eden her bildirimde
daha büyük bir ileti numarası; örneğin
sayılar sıralı olmaz.
Bildirim kanallarını yenile
Bildirim kanalının, bir değere sahip geçerlilik süresi olabilir.
isteğinize veya Google Calendar API'nin dahili sınırlarına göre belirlenir
veya varsayılan değerler (daha kısıtlayıcı değer kullanılır). Kanalın geçerlilik bitiş tarihi
zamanı (varsa) Unix zaman damgası olarak eklenir.
(milisaniye cinsinden) watch yönteminin döndürdüğü bilgilerde bulunur. Ayrıca,
geçerlilik bitiş tarihi ve saati eklenir (kullanıcılar tarafından okunabilir biçimde)
uygulamanızın bu kanal için aldığı bildirim mesajı
X-Goog-Channel-Expiration HTTP üst bilgisi.
Şu anda bildirim kanallarını otomatik olarak yenilemenin bir yolu yoktur. Zaman
bir kanalın kullanım süresi dolmak üzereyse, bunu yapmak için
watch yöntemi. Her zaman olduğu gibi,
yeni kanalın id özelliği. Herhangi bir riskin
bir "örtüşme" olması 2 bildirim kanalının 24 saat veya 24 saat uzunluğunda
etkin olduğundan emin olun.
Bildirimleri alma
İzlenen bir kaynak değiştiğinde, uygulamanız
bir bildirim mesajı görebilirsiniz. Google Calendar API, bu
olarak belirttiğiniz URL'ye HTTPS POST istekleri biçiminde gönderilir.
Bu bildirim için address mülk
yardımcı olur.
Bildirim mesajı biçimini yorumlama
Tüm bildirim mesajları bir dizi HTTP üstbilgisini içerir ve
X-Goog- ön ek.
Bazı bildirim türleri şunları da içerebilir:
e-posta mesajı
Üst bilgiler
Google Takvim API'sı tarafından adresinize gönderilen bildirim mesajları URL, aşağıdaki HTTP üstbilgilerini içerir:
| Başlık | Açıklama |
|---|---|
| Her zaman mevcut | |
|
Bunu tanımlamak için sağladığınız UUID veya başka bir benzersiz dize bildirim kanalı. |
|
Bu bildirim için bu mesajı tanımlayan tam sayı
yardımcı olur. Değer, sync mesaj için her zaman 1 şeklindedir. Mesaj gönder
artacaktır, ancak bu sayılar kanalda daha
sıralı değildir. |
|
İzlenen kaynağı tanımlayan opak bir değer. Bu kimlik ve API sürümlerinde kararlı hale gelir. |
|
Bildirimi tetikleyen yeni kaynak durumu.
Olası değerler:
sync, exists veya
not_exists.
|
|
İzlenen kaynak için API sürümüne özgü bir tanımlayıcı. |
| Bazen mevcuttur | |
|
Bildirim kanalının son geçerlilik tarihi ve saati, biçimi de vardır. Yalnızca tanımlanmışsa mevcuttur. |
|
Uygulamanız tarafından ayarlanan bildirim kanalı jetonu ve bildirim kaynağını doğrulamak için kullanabilirsiniz. Yalnızca şu durumlarda mevcut: tanımlanmıştır. |
Google Takvim API'si tarafından alıcı URL'nize gönderilen bildirim iletilerinde ileti gövdesi bulunmaz. Bu mesajlar, güncellenen kaynaklar hakkında belirli bilgiler içermez. Değişiklik ayrıntılarının tamamını görmek için başka bir API çağrısı yapmanız gerekir.
Örnekler
Değiştirilen etkinlik koleksiyonu için bildirim mesajını değiştirin:
POST https://mydomain.com/notifications // Your receiving URL. Content-Type: application/json; utf-8 Content-Length: 0 X-Goog-Channel-ID: 4ba78bf0-6a47-11e2-bcfd-0800200c9a66 X-Goog-Channel-Token: 398348u3tu83ut8uu38 X-Goog-Channel-Expiration: Tue, 19 Nov 2013 01:13:52 GMT X-Goog-Resource-ID: ret08u3rv24htgh289g X-Goog-Resource-URI: https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events X-Goog-Resource-State: exists X-Goog-Message-Number: 10
Bildirimleri yanıtlama
Başarılı olduğunu belirtmek için aşağıdaki durum kodlarından herhangi birini döndürebilirsiniz:
200, 201, 202, 204 veya
102.
Hizmetiniz Google'ın API istemci kitaplığını kullanıyorsa
ve Google Calendar API'yi içeren 500,502, 503 veya 504 değerini döndürür
eksponansiyel geri yükleme ile yeniden deneme yapar.
Diğer tüm iade durum kodları, mesaj hatası olarak değerlendirilir.
Google Calendar API bildirim etkinliklerini anlama
Bu bölümde, hangi bildirimler için gönderebileceğiniz .
| Teslim tarihi: | ||
|---|---|---|
sync |
EKL'ler, Takvim listeleri, Etkinlikler, Ayarlar. | Yeni kanal başarıyla oluşturuldu. Bununla ilgili bildirim almaya başlayabilirsiniz. |
exists |
EKL'ler, Takvim listeleri, Etkinlikler, Ayarlar. | Bir kaynakta değişiklik oldu. Olası değişiklikler arasında yeni bir kaynağın oluşturulması veya mevcut bir kaynağın değiştirilmesi ya da silinmesi bulunur. |
Bildirimleri durdur
expiration özelliği, bildirimlerin ne zaman otomatik olarak durdurulacağını kontrol eder. Şunları yapabilirsiniz:
o kanaldan önce bildirim almayı durdurmayı seçebilirsiniz.
şu adreste stop yöntemini çağırarak süresi dolar:
aşağıdaki URI:
https://www.googleapis.com/calendar/v3/channels/stop
Bu yöntem için en azından kanalın
id ve resourceId özellikleri,
aşağıdaki örneğe bakın. Google Calendar API'de birden fazla
watch yöntemi olan kaynaklar için yalnızca bir
stop yöntemini çağırın.
Yalnızca doğru izne sahip kullanıcılar bir kanalı durdurabilir. Özellikle:
- Kanal normal bir kullanıcı hesabı tarafından oluşturulmuşsa, aynı istemciden gelen OAuth 2.0 istemci kimliklerine göre kimlik doğrulama jetonları) kanalı durdurabilir.
- Kanal bir hizmet hesabı tarafından oluşturulduysa aynı kanalı durdurabilir.
Aşağıdaki kod örneğinde, bildirim almayı nasıl durduracağınız gösterilmektedir:
POST https://www.googleapis.com/calendar/v3/channels/stop
Authorization: Bearer CURRENT_USER_AUTH_TOKEN
Content-Type: application/json
{
"id": "4ba78bf0-6a47-11e2-bcfd-0800200c9a66",
"resourceId": "ret08u3rv24htgh289g"
}