Skip to main content

Zapier ve Make ile Bağlantı

Dış bir sistemden Workinno'ya veri göndermek için gelen webhook kurun; her istek imzalanır, imzayı nasıl üreteceğinizi burada bulursunuz.

Ne yapacaksınız?

Dış bir sistemden (Zapier, Make ya da kendi yazılımınız) Workinno'ya veri gönderip otomatik bir kural çalıştıracaksınız. Örneğin bir reklam formu doldurulunca müşteri kaydı açılması ya da bir sipariş gelince görev oluşması.

Üç adım var: kuralı kurmak, adresi almak, isteği imzalamak. Üçüncüsü çoğu kişinin takıldığı adım olduğu için burada tam olarak anlatılıyor.

1. Kuralı kurun

Otomasyon bölümünde Yeni kural düğmesine basın ve tetikleyici olarak Gelen webhook'u seçin. → Otomasyon Kuralı Oluşturma

Pencerede iki alan doldurmanız gerekir:

  • Webhook URL adı: adresin son parçası (örneğin siparis). Harf, rakam ve tire

kullanabilirsiniz.

  • İmza anahtarı: isteğin gerçekten sizden geldiğini doğrulayan gizli anahtar.

Zorunludur; listede yoksa Webhook anahtarları sayfasından bir tane ekleyin. → Webhook Anahtarları

Ad girildiğinde adres pencerede görünür ve kopyalanabilir. Biçimi şudur:

https://api.workinno.com/api/webhooks/automation/<çalışma-alanınız>/<webhook-url-adı>

2. İsteği imzalayın

Her gelen istek imzalı olmak zorundadır. İmzasız, yanlış imzalı veya anahtarı tanınmayan istek reddedilir; bunu kapatan bir ayar yoktur. Sebebi şu: adres tahmin edilebilir bir metin, imza olmasaydı adresi bilen herkes kuralınızı çalıştırabilirdi.

İmza şöyle hesaplanır:

  1. Göndereceğiniz gövdeyi (JSON metni) alın.

  2. İmza anahtarınızla HMAC-SHA256'dan geçirin.

  3. Sonucu onaltılık yazıya çevirin.

  4. İsteğe şu başlığı ekleyin:

X-Workinno-Signature: sha256=<onaltılık sonuç>

Önemli: imza, gönderdiğiniz baytların tam olarak kendisi üzerinden hesaplanır. Gövdeyi imzaladıktan sonra biçimlendirmeyi değiştirirseniz (boşluk eklemek, alan sırasını değiştirmek) imza tutmaz.

Zaman damgalı biçim (tercihe bağlı)

İkinci bir biçim daha kabul edilir. Burada zaman damgası imzanın içine katılır, böylece alıcı isteğin ne zaman üretildiğini de doğrulayabilir:

X-Workinno-Signature: t=<unix zaman>,v1=<HMAC-SHA256(anahtar, "<unix zaman>.<gövde>")>

Workinno'nun kendi giden webhook'ları bu biçimi kullanır. Gelen tarafta ikisi de geçerlidir; hangisi kolayınıza gelirse onu kullanın.

Node.js örneği

const crypto = require('crypto'); const govde = JSON.stringify({ ad: 'Ayşe Yılmaz', eposta: '[email protected]' }); const imza = crypto.createHmac('sha256', IMZA_ANAHTARI).update(govde).digest('hex'); await fetch(ADRES, { method: 'POST', headers: { 'content-type': 'application/json', 'x-workinno-signature': sha256=${imza}, }, body: govde, });

Python örneği

import hmac, hashlib, json, requests govde = json.dumps({"ad": "Ayşe Yılmaz", "eposta": "[email protected]"}) imza = hmac.new(IMZA_ANAHTARI.encode(), govde.encode(), hashlib.sha256).hexdigest() requests.post(ADRES, data=govde, headers={ "content-type": "application/json", "x-workinno-signature": f"sha256={imza}", })

3. Zapier tarafında kurulum

Zapier'in hazır Webhooks by Zapier → POST adımı imza hesaplayamaz. Araya bir kod adımı koymanız gerekir:

  1. Zap'inize Code by Zapier → Run JavaScript adımı ekleyin.

  2. Girdi olarak göndereceğiniz alanları tanımlayın (ad, e-posta, telefon gibi).

  3. Koda yukarıdaki Node.js örneğini uyarlayın; imza anahtarınızı adımın girdisi

olarak verin, koda düz yazmayın.

  1. İsteği bu kod adımından gönderin. Ayrı bir "Webhooks" adımına gerek kalmaz.

Make tarafında da aynı mantık geçerlidir: HTTP → Make a request modülüne başlığı elle eklersiniz, imzayı önceki bir Tools → Set variable adımında hesaplarsınız.

4. Çalıştığını doğrulayın

İlk isteği gönderdikten sonra Otomasyon bölümündeki Webhook teslimatları sekmesine bakın. Her istek burada görünür: kabul edilenler de, reddedilenler de. Reddedilmişse sebebi yazar (imza eksik, imza geçersiz, kural pasif gibi). → Webhook Teslimatları

Aynı isteğin iki kez gönderilmesi

Bir istek kabul edildikten sonra aynı imzayla gelen ikinci istek 24 saat boyunca reddedilir ve çalışma geçmişinde "atlandı" olarak görünür. Bu, ağ koptuğunda yapılan tekrar denemelerin çift kayıt oluşturmasını önler.

Aynı veriyi bilerek ikinci kez göndermeniz gerekiyorsa gövdeye değişen bir alan koyun (sipariş numarası, zaman damgası gibi); gövde değişince imza da değişir ve istek yeni sayılır.

Sorun giderme

  • İstek reddediliyor, "imza eksik" yazıyor: X-Workinno-Signature başlığını hiç

göndermemişsiniz. Zapier'in hazır webhook adımı bunu eklemez.

  • "İmza geçersiz" yazıyor: gövde ile imzalanan metin birebir aynı değil. En sık

sebep: gövdeyi imzaladıktan sonra yeniden biçimlendirmek.

  • "Kural pasif veya askıda" yazıyor: kuralın Aktif anahtarı kapalı ya da kural üst

üste on kez başarısız olduğu için askıya alınmış. → Otomasyonlar

  • "Bu istek daha önce işlendi" yazıyor: aynı imza 24 saat içinde ikinci kez geldi.

Yukarıdaki bölüme bakın.

İlgili: Webhook Anahtarları, Otomasyon Kuralı Oluşturma, Webhook Teslimatları, API ve Geliştirici

Preguntas frecuentes

Webhook adresimi Zapier'e yapıştırdım ama istek reddediliyor, neden?

Gelen webhook istekleri imza zorunludur. Yalnız adresi yapıştırmak yetmez; isteğe X-Workinno-Signature başlığını da eklemeniz gerekir. Zapier'in hazır "Webhooks by Zapier" adımı imza hesaplayamaz, araya bir "Code by Zapier" adımı koymanız gerekir. Aşağıda hazır kod var.

İmzayı nasıl hesaplarım?

İsteğin gövdesini imza anahtarınızla HMAC-SHA256'dan geçirir, sonucu onaltılık yazıya çevirir ve başlığa "sha256=" ön ekiyle koyarsınız. Anahtarı Webhook anahtarları sayfasından alırsınız.

Aynı isteği iki kez gönderirsem ne olur?

Aynı imzayla gelen ikinci istek reddedilir ve çalışma geçmişinde "atlandı" olarak görünür. Bu koruma 24 saat sürer; ağ koptu diye tekrar denemeniz çift kayıt oluşturmaz.

İmza anahtarını nereden alırım?

Otomasyon bölümündeki Webhook anahtarları sekmesinden. Anahtarı bir kez girersiniz, değeri bir daha gösterilmez; bu yüzden kaynak sistemde de saklayın.

Zapier yerine kendi yazılımımı bağlayabilir miyim?

Evet. Kural her HTTP istemcisini kabul eder; tek şart imza başlığıdır. Aşağıda Node.js ve Python örnekleri var.

Test ederken imzayı atlayabilir miyim?

Hayır. İmzasız istek her durumda reddedilir; kapatan bir ayar yoktur. Bunun sebebi adresin tahmin edilebilir olması: imza olmasaydı adresi bilen herkes kuralınızı çalıştırabilirdi.

¿Le resultó útil este artículo?