TR
CopyPost'u aç

Webhook'lar: Telegram mesajlarını CRM'e ve kendi sunucunuza gönderin

2 dakikalık okumaWebhook'larEntegrasyonlar

Telegram kanallarındaki her gönderiyi kendi HTTP servisinize webhook ile alın: JSON formatı, bağlantıyla medya, Python ile imza doğrulama.

İçindekiler
  1. Kurulum
  2. Ne gelir
  3. İmza doğrulama
  4. Güvenilirlik
  5. Limitler

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 #

  1. «Webhook’lar» bölümünde servisinizin adresini ekleyin, örneğin https://crm.example.com/telegram.
  2. Akış düzenleyicisinde bu webhook’u işaretleyin.
  3. 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.