الويب هوك: إرسال رسائل تيليجرام إلى CRM وإلى خادمك
كيف تستقبل كل منشور من قنوات تيليجرام على خدمة HTTP خاصة بك عبر الويب هوك: صيغة JSON، والوسائط عبر روابط، والتحقق من التوقيع بلغة Python.
أحيانًا لا تحتاج إلى الرسائل في قناة أخرى، بل في نظامك أنت: CRM، أو قاعدة المعرفة، أو أدوات التحليل، أو بوتك الخاص. لهذا يدعم المسار الويب هوك — طلبات HTTP تُرسل إلى عنوانك مع كل رسالة تُسلَّم.
الإعداد #
- في قسم «الويب هوك» أضف عنوان خدمتك، مثلًا
https://crm.example.com/telegram. - في محرر المسار حدّد هذا الويب هوك.
- انسخ السر الخاص بالويب هوك — فهو لازم للتحقق من التوقيع.
يمكن للمسار أن يرسل الرسائل إلى الويب هوك وحده، دون قنوات مستلمة.
ما الذي يصل #
مع كل رسالة (والألبوم في طلب واحد) يصل طلب POST يحمل JSON:
{
"pipeline_id": 12,
"account_id": 3,
"chat_id": -1001234567890,
"messages": [{
"id": 4521,
"date": 1791936000,
"text": "خبر اليوم",
"entities": [{"type": "bold", "offset": 0, "length": 3}],
"media": {"type": "photo", "url": "https://cpo.st/m/…", "mime_type": "image/jpeg"}
}]
}
يصل النص بعد تطبيق فلاتر المسار واستبدالاته. تُمرَّر الوسائط عبر روابط: يُنزَّل الملف عند أول طلب له ويبقى متاحًا 7 أيام.
التحقق من التوقيع #
كل طلب موقَّع: الترويسة X-Copyposter-Signature تحتوي على HMAC-SHA256 للسلسلة
<X-Copyposter-Timestamp>.<جسم الطلب> باستخدام سر الويب هوك. التحقق بلغة Python:
import hmac, hashlib, time
def verify(secret: str, timestamp: str, body: bytes, signature: str) -> bool:
if abs(time.time() - int(timestamp)) > 300:
return False # طلب قديم — ربما إعادة إرسال
expected = "sha256=" + hmac.new(secret.encode(), timestamp.encode() + b"." + body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
الموثوقية #
إذا كانت الخدمة غير متاحة أو أجابت بالرمز 429/5xx، فسيعيد CopyPost الطلب بعد 1 ث، و5 ث، و30 ث،
ودقيقتين، و10 دقائق. أجب بـ 2xx بسرعة، ونفّذ المعالجة الثقيلة في الخلفية.
يجب أن يكون العنوان عامًا: لا تُرسل طلبات الويب هوك إلى العناوين المحلية والداخلية.
الحدود #
1000 طلب شهريًا مجانًا، وبعدها باقات من 10,000 طلب. الاستهلاك الحالي ظاهر في صفحة «الخطة».