UK
Відкрити CopyPost

Вебхуки: надсилаємо повідомлення з Telegram у CRM і на свій сервер

2 хвилини читанняВебхукиІнтеграції

Вебхуки Telegram: як отримувати кожен пост із Telegram-каналів на свій HTTP-сервіс — формат JSON, медіа за посиланнями, перевірка підпису на Python.

Зміст
  1. Налаштування
  2. Що надходить
  3. Перевірка підпису
  4. Надійність
  5. Ліміти

Іноді повідомлення потрібні не в іншому каналі, а у вашій системі: CRM, базі знань, аналітиці, власному боті. Для цього пайплайн має вебхуки — HTTP-запити на вашу адресу під час кожного доставленого повідомлення.

Налаштування #

  1. У розділі «Вебхуки» додайте адресу вашого сервісу, наприклад https://crm.example.com/telegram.
  2. У редакторі пайплайна позначте цей вебхук.
  3. Скопіюйте секрет вебхука — він потрібен для перевірки підпису.

Пайплайн може надсилати повідомлення лише у вебхук, без каналів-отримувачів.

Що надходить #

На кожне повідомлення (альбом — одним запитом) надходить POST із JSON:

{
  "pipeline_id": 12,
  "account_id": 3,
  "chat_id": -1001234567890,
  "messages": [{
    "id": 4521,
    "date": 1791936000,
    "text": "Новина дня",
    "entities": [{"type": "bold", "offset": 0, "length": 6}],
    "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 с, 2 хвилини та 10 хвилин. Відповідайте 2xx швидко, а важку обробку виконуйте у фоні.

Адреса має бути публічною: вебхуки не надсилаються на локальні й внутрішні адреси.

Ліміти #

1000 запитів на місяць безкоштовно, далі — пакети по 10 000 запитів. Поточні витрати видно на сторінці «Тариф».