Webhooklar

Son güncelleme: 22.05.2023

Webhooklar (web kancaları), belirli olaylar hakkında üçüncü taraf web sitelerini/uygulamaları bilgilendirmek için kullanılan bir araçtır. Deskie'deki değişiklikleri izlemenize ve diğer servislerde belirli eylemleri tetiklemek için belirttiğiniz URL'ye gerekli bilgileri göndermenize olanak tanır.

Kullanım örnekleri

Webhookların iki temel kullanım alanı vardır: 

1. Belirli bir servisin API adresine doğrudan bir istek gönderme. Böylece, aşağıda sıralanan benzer görevler çözülebilir:

a. VIP müşterileriniz vardır. Onların oluşturduğu destek talepleri alındığında, yalnızca e-postanıza bildirimleri değil, SMS bildirimlerini de almak istersiniz.

b. Destek taleplerinde meydana gelen olaylara dair bildirimlerin popüler messengerlere gönderilmesini istersiniz.

c. Web sitenizdeki kullanıcı hesaplarına gerekli verilerin iletilmesini isterseniz.

d. Destek taleplerinde belirli etiketler eklendiğinde, Basecamp/JIRA gibi servislerde Basecamp/JIRA görevlerin otomatik olarak eklenmesini istersiniz.

e. Deskie'ye de bir istek gönderiminde bulunabilirinsiniz. Örneğin, bir webhook aracılığıyla yeni bir destek talebi oluşturabilir, müşteri verilerindeki dil seçeneğini ayarlayabilir veya API'de mevcut diğer eylemleri gerçekleştirebilirsiniz.

2. Verileri, oluşturduğunuz kendi scriptinize (betiğinize) gönderme. 

Script verileri alır, işler ve ardından üçüncü taraf servislerde ve Deskie'de sizin adınıza gerekli eylemleri gerçekleştirir. Scripti yazmak için kendi programcılarınızı görevlendirmeniz gerekecektir. Ayrıca, webhookun scriptinize ileteceği isteğin içeriğini de hazırlamaları gerekecektir.

Yukarıdakiler, webhokların sunduğu olanaklarının yalnızca küçük bir kısmıdır. Webhokları kullanmanın birçok yolu vardır.

Ayarları yapılandırma

Daha fazla kolaylık sağlamak için, webhooklar kurallara yerleştirilmiştir: tüm kural türlerin (gelen, güncellenen, cari) eylemler bloklarında sıradan bir eylem olarak eklenirler.

1. "Webhooku çalıştır" eylemini ekleme sırasında ilk adım, metodu seçmektir: GET, POST, PUT ve DELETE.

  • POST — üçüncü taraf servislerinin API'si aracılığıyla veri eklemenize olanak tanır;

  • GET — verilerin vaziyetini denetler veya veri alır;

  • PUT — verileri günceller;

  • DELETE — verileri siler.

2. Ardından, isteğin gönderileceği URL bağlantısı belirtilir. Bu tür bir bağlantı, genellikle alıcı tarafında oluşturulur — ilgili servisin ayarlarında veya scripti yazan programcılar tarafından.

3. İstek alımı kimlik doğrulamayı gerektiriyorsa, onay kutusunu işaretlemek ve kimlik doğrulama yöntemini seçmek yeterlidir:

4. POST ve PUT metodları seçildiğinde, isteğin kendisini ve formatını belirtmenize olanak tanıyan ek alanlar belirir:

  • Eğer kendi scriptinizi oluşturuyorsanız, onu herhangi bir yapıdaki isteği alacak şekilde ayarlamanızı öneririz. Başka bir ifade ile, "standart istek" seçeneği, istek gönderimini önemli ölçüde basitleştirir;

  • İsteklerin üçüncü taraf bir servise gönderilmesi gerekiyorsa, ilgili servisin API'si onların belirli bir formatta olmasını bekler, bu nedenle "özel istek" seçeneğinin kullanılması doğru olacaktır. Genel olarak, bu tür isteklerin yapısı ve sözdizimi, servislerin kendi API belgelerinde açıklanır.

Kullanılabilir mevcut değişkenler, alanın sağ üst tarafında bulunan bağlantı aracılığıyla eklenirler.

Slack'a bildirim örneği

Bunun tam olarak nasıl çalıştığını daha net hale getirmek için, Slack'a bildirim almak için kullandığımız kurala bakalım:

Aşağıdaki özel isteğimizin metnini kopyalayın ve zamandan tasarruf edin :)

{
        "text": "Yeni destek talebi alındı № [case_number]: [case_subject]",
        "blocks": [{
                "type": "section",
                "text": {
                    "type": "mrkdwn",
                    "text": "*Yeni destek talebi* alındı № <[case_url] | *[case_number]*>"
                }
            },
            {
                "type": "section",
                "fields": [{
                        "type": "mrkdwn",
                        "text": "*Gönderen*\n[user_full_name] \n [user_email]"
                    },
                    {
                        "type": "mrkdwn",
                        "text": "*Grup*\n[case_group]"
                    }
                ]
            },
            {
                "type": "section",
                "text": {
                    "type": "mrkdwn",
                    "text": "*[case_subject]:*\n\n[case_description|text]"
                }
            },
            {
                "type": "divider"
            }
        ]
}

Yukarıda yer alan kod kullanılarak gönderilen bildirim Slack arayüzünde şu şekilde görünecektir:

Kısıtlamalar

1. Saatte 3600'e kadar webhook çalıştırılabilir. Kısıtlama, tüm Deskie hesabı için geçerli olduğu için, tüm kurallarda yapılandırılan webhooklar dikkate alınır.

2. Limit aşıldığında, isteklerin gönderilmesi limit sıfırlanana kadar ertelenir.

3. Varsayılan olarak, yapılandırılmış bir webhook uç noktasının HTTP yanıtlarının 2XX aralığı içinde olan bir HTTP durum koduyla yanıt vermesi beklenir.

a. Durum 2xx — webhook başarılı olarak çalıştırıldı.

b. Durum 3xx — sayfa başka bir sayfaya yönlendirdiği için yönlendirme işlemi yapıldı.

c. Durum 2xx veya 3xx değil — iki opsiyonlu hata:

  • 4xx durumu hatanın kalıcı olduğu anlamına geldiği için webhook çalıştırılmasını tekrar denemeyiz;

  • 5xx durumu hatanın geçici olduğu anlamına geldiği için webhook çalıştırılması başarılı olarak sonuçlanana kadar webhook çalıştırılmasını her 30 dakikada bir tekrarlarız, ancak 48'den fazla deneme yapmayız.

4. Bir webhook'a yanıt olarak "http code #0" alıyorsanız, ya alıcı yanıt vermiyordur ya da isteği yanlış gönderiyorsunuzdur. Çoğu zaman sorun, "İsteğin gönderileceği URL" alanında fazladan bir boşluk olması nedeni ile oluşur.

Bu makale yardımcı oldu mu?