Przejdź do treści głównej

Webhooki — zdarzenia moderacji w czasie rzeczywistym w Twoich systemach

Subskrybuj webhooki Telm dla wykryć spamu, banów, wyrzuceń, wyciszeń oraz zdarzeń dołączenia i opuszczenia na własnym adresie URL. Podpisywane HMAC-SHA256 i ponawiane. Pro+.

8 min czytania
W skrócie

Webhooki wypychają zdarzenia moderacji na Twój adres URL w chwili, gdy się dzieją — wykrycia spamu, bany, wyrzucenia, wyciszenia oraz dołączenie i opuszczenie grupy przez członka. Każde dostarczenie jest podpisane HMAC-SHA256 (weryfikowane względem sekretu whsec_), niesie stabilny identyfikator dostarczenia do deduplikacji i jest ponawiane według harmonogramu, jeśli Twój serwer jest nieosiągalny. Webhooki są częścią planu Pro i wyżej.

Twórz klucze API i webhooki na stronie Deweloperzy.

1Co robią webhooki

Zamiast odpytywać API, rejestrujesz adres URL, a Telm wysyła na niego podpisany HTTP POST za każdym razem, gdy coś dzieje się w Twojej grupie. Tak właśnie sprowadzasz zdarzenia moderacji do własnych systemów — panelu, hurtowni danych, kanału alertów — w czasie rzeczywistym.

Punktami końcowymi webhooków zarządzasz przez API: rejestrujesz adres URL, wybierasz, które zdarzenia subskrybować, opcjonalnie ograniczasz je do konkretnych grup, wysyłasz testowy ping i odczytujesz ostatni dziennik dostarczeń.

Webhooki wymagają planu Pro lub wyżej (ta sama bramka co pełne REST API). W Free i Basic wciąż możesz wypróbować punkt sprawdzania spamu, ale nie zarejestrujesz webhooków.

2Dlaczego wypychanie bije odpytywanie

Mógłbyś wywoływać punkt dziennika na timerze, aby znajdować nowe zdarzenia, ale to dodaje opóźnienie, zużywa przydział i może przegapić dokładny moment, gdy coś się dzieje. Webhooki odwracają model: Telm mówi Ci w chwili, gdy zdarzenie się uruchamia, więc Twoje systemy reagują w kilka sekund.

Typowe zastosowania to odzwierciedlanie banów we własnych narzędziach administracyjnych, alarmowanie kanału zespołu, gdy wykryto nalot, strumieniowanie wykryć do analiz albo uruchamianie procesu, gdy członek dołącza lub odchodzi.

  • W czasie rzeczywistym: dowiadujesz się o zdarzeniu, gdy się dzieje, a nie przy kolejnym odpytaniu.
  • Wydajnie: żadnych powtarzanych odczytów pochłaniających Twój dzienny przydział.
  • Kompletnie: dostarczenia są ponawiane, więc krótka awaria po Twojej stronie nie gubi zdarzeń.

3Zdarzenia, które możesz subskrybować

Jest siedem subskrybowalnych typów zdarzeń, obejmujących werdykty spamu, kary i zmiany członkostwa. Jedna moderowana wiadomość może wygenerować więcej niż jedno zdarzenie — wiadomość spamowa, która kończy się banem, emituje zarówno spam.detected, jak i user.banned.

  • spam.detected — silnik oflagował wiadomość jako spam.
  • message.suspicious — wykrycie w cieniu (tryb monitorowania) z wynikiem.
  • user.banned — członek został zbanowany.
  • user.kicked — członek został usunięty.
  • user.muted — członek został wyciszony.
  • user.joined — członek dołączył do grupy.
  • user.left — członek opuścił grupę.
Istnieje też zdarzenie ping, używane wyłącznie przez wywołanie testowe, dzięki czemu możesz sprawdzić, że Twój punkt końcowy odbiera i weryfikuje dostarczenia, zanim zaczną płynąć prawdziwe zdarzenia. Pełne ładunki są udokumentowane w Dokumentacja zdarzeń webhook.

4Koperta ładunku

Każde dostarczenie to koperta JSON z małym, stabilnym zestawem pól najwyższego poziomu oraz obiektem data zależnym od zdarzenia w środku. Możesz kierować ruchem na podstawie typu i czasu, bez parsowania szczegółów, dopóki ich nie potrzebujesz.

  • id — unikalny identyfikator dostarczenia; ponowne dostarczenia tego samego zdarzenia używają tego samego id, i tak właśnie deduplikujesz.
  • type — typ zdarzenia, jeden z siedmiu powyższych.
  • created_at — kiedy zdarzenie się uruchomiło, w formacie RFC3339 UTC.
  • group_id — grupa, do której należy zdarzenie (gdy ma to zastosowanie).
  • data — obiekt zależny od zdarzenia: szczegóły wiadomości i werdyktu dla zdarzeń spamu, szczegóły członka dla zdarzeń członkostwa.

5Weryfikacja, że dostarczenia naprawdę pochodzą od Telm

Każde dostarczenie jest podpisane, aby Twój serwer mógł potwierdzić, że żądanie faktycznie pochodzi od Telm i nie zostało zmienione w tranzycie. Zweryfikuj podpis, zanim zaufasz ładunkowi, i odrzuć wszystko, co się nie zgadza.

Podpis to HMAC-SHA256 znacznika czasu i surowej treści żądania, kluczowany Twoim sekretem podpisującym punktu końcowego. Aby zweryfikować, przelicz ponownie HMAC z nagłówka znacznika czasu i dokładnych bajtów, które otrzymałeś, i porównaj go z nagłówkiem podpisu.

  • X-Telm-Signature — podpis, sformatowany jako v1, po którym następuje szesnastkowy HMAC-SHA256 ze znacznika czasu połączonego z treścią.
  • X-Telm-Timestamp — znacznik czasu w sekundach unix, który jest podpisywany, więc możesz odrzucać przeterminowane lub powtórzone dostarczenia.
  • X-Telm-Event — typ zdarzenia, a X-Telm-Delivery — identyfikator dostarczenia do deduplikacji.
  • Sekret podpisujący pokazywany jest raz, przy tworzeniu punktu końcowego, i zaczyna się od whsec_. Przechowuj go bezpiecznie; to jedyna rzecz, która dowodzi, że dostarczenie jest prawdziwe.
Nigdy nie pomijaj weryfikacji podpisu. Bez niej każdy, kto odgadnie Twój adres URL, mógłby wysyłać fałszywe zdarzenia. Przepis na weryfikację krok po kroku jest w Dokumentacja zdarzeń webhook.

6Niezawodne, deduplikowane dostarczanie

Dostarczanie odbywa się co najmniej raz: Telm dba, by zdarzenie do Ciebie dotarło, co oznacza, że to samo zdarzenie może czasem przyjść dwa razy. Ponieważ każde ponowne dostarczenie używa tego samego identyfikatora dostarczenia, deduplikujesz, przechowując przetworzone identyfikatory i pomijając powtórzenia.

Jeśli Twój punkt końcowy jest nieosiągalny lub zwraca błąd, dostarczenie jest ponawiane według stałego harmonogramu — mniej więcej po jednej minucie, pięciu minutach, trzydziestu minutach, dwóch godzinach i sześciu godzinach, do sześciu prób w ciągu około ośmiu i pół godziny. Punkt końcowy, który wciąż zawodzi, jest automatycznie wyłączany, aby chronić obie strony, a właściciel jest powiadamiany.

  • Odpowiadaj szybko statusem 2xx; ciężką pracę wykonuj asynchronicznie po potwierdzeniu.
  • Deduplikuj po identyfikatorze dostarczenia — nigdy po zawartości ładunku.
  • Punkt końcowy, który zawodzi około dwudziestu razy z rzędu bez powodzenia w oknie 72 godzin, jest automatycznie wyłączany; włącz go ponownie, gdy Twój serwer będzie sprawny.

7Zarządzanie punktami końcowymi i odczyt dziennika

Rejestrujesz, edytujesz i usuwasz punkty końcowe webhooków przez API. Gdy tworzysz jeden, otrzymujesz sekret podpisujący dokładnie raz, wybierasz zdarzenia do subskrypcji i opcjonalnie ograniczasz go do konkretnych grup. Wywołanie testowe wysyła podpisany ping, więc możesz potwierdzić, że Twoja weryfikacja działa, zanim zacznie się prawdziwy ruch.

Każdy punkt końcowy prowadzi dziennik dostarczeń, który możesz odczytać, aby zobaczyć, co wysłano, kiedy i czy się powiodło — przydatne do debugowania odbiorcy bez czekania na kolejne zdarzenie na żywo.

  • Utwórz punkt końcowy i skopiuj sekret whsec_ natychmiast.
  • Wyślij testowy ping, aby zweryfikować swoją kontrolę podpisu od początku do końca.
  • Ogranicz punkt końcowy do jednej grupy albo pozostaw otwarty na wszystkie grupy, które administrujesz.
  • Odczytaj dziennik dostarczeń, aby zbadać ostatnie próby i ich wyniki.

8Dobre praktyki i częste błędy

Solidny odbiorca stosuje kilka reguł, które zapobiegają najczęstszym problemom.

  • Weryfikuj podpis na surowych bajtach treści — parsowanie do JSON i ponowna serializacja mogą zmienić bajty i zepsuć kontrolę.
  • Zwracaj 2xx szybko, a przetwarzaj później; powolny handler powoduje przekroczenia limitu czasu i zbędne ponowienia.
  • Uczyń obsługę idempotentną, aby ponownie dostarczone zdarzenie nie zliczyło się podwójnie.
  • Używaj HTTPS na publicznie osiągalnym adresie URL; Telm blokuje adresy wewnętrzne i prywatne oraz nie podąża za przekierowaniami.
  • Trzymaj sekret whsec_ z dala od dzienników i kodu klienta.
Webhooki przechwytują zdarzenia dla Twoich systemów, ale dziennik moderacji pozostaje wiarygodnym zapisem wewnątrz Telm.
Czy ten artykuł był pomocny?

Gotowy, aby chronić swoją grupę?

Dodaj Telm do swojej grupy na Telegramie i pozwól mu zająć się spamem.