Webhook'lar: Telegram mesajlarını CRM'e ve kendi sunucunuza gönderin
Telegram kanallarındaki her gönderiyi kendi HTTP servisinize webhook ile alın: JSON formatı, bağlantıyla medya, Python ile imza doğrulama.
Bazen mesajlara başka bir kanalda değil, kendi sisteminizde ihtiyaç duyarsınız: CRM, bilgi tabanı, analitik, kendi botunuz. Bunun için akışta webhook’lar var — teslim edilen her mesajda adresinize gönderilen HTTP istekleri.
Kurulum #
- «Webhook’lar» bölümünde servisinizin adresini ekleyin, örneğin
https://crm.example.com/telegram. - Akış düzenleyicisinde bu webhook’u işaretleyin.
- Webhook’un gizli anahtarını kopyalayın — imza doğrulaması için gereklidir.
Bir akış, alıcı kanallar olmadan yalnızca webhook’a da mesaj gönderebilir.
Ne gelir #
Her mesaj için (albüm — tek istekte) JSON içeren bir POST gelir:
{
"pipeline_id": 12,
"account_id": 3,
"chat_id": -1001234567890,
"messages": [{
"id": 4521,
"date": 1791936000,
"text": "Bugünün haberi",
"entities": [{"type": "bold", "offset": 0, "length": 7}],
"media": {"type": "photo", "url": "https://cpo.st/m/…", "mime_type": "image/jpeg"}
}]
}
Metin, akışın filtrelerinden ve değiştirmelerinden geçmiş hâliyle gelir. Medyalar bağlantı olarak iletilir: dosya ilk erişimde indirilir ve 7 gün boyunca erişilebilir kalır.
İmza doğrulama #
Her istek imzalıdır: X-Copyposter-Signature başlığı, <X-Copyposter-Timestamp>.<istek gövdesi>
dizesinin webhook gizli anahtarıyla hesaplanan HMAC-SHA256 değerini içerir. Python ile doğrulama:
import hmac, hashlib, time
def verify(secret: str, timestamp: str, body: bytes, signature: str) -> bool:
if abs(time.time() - int(timestamp)) > 300:
return False # eski istek — muhtemelen tekrar gönderim
expected = "sha256=" + hmac.new(secret.encode(), timestamp.encode() + b"." + body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
Güvenilirlik #
Servis erişilemez durumdaysa veya 429/5xx döndürürse CopyPost isteği 1 sn, 5 sn, 30 sn, 2 dakika ve
10 dakika sonra tekrarlar. 2xx ile hızlı yanıt verin, ağır işlemleri arka planda yapın.
Adres herkese açık olmalıdır: webhook’lar yerel ve dahili adreslere gönderilmez.
Limitler #
Ayda 1000 istek ücretsiz, sonrası 10 000 isteklik paketlerle. Güncel kullanım «Plan» sayfasında görünür.