Langkau ke kandungan utama

Webhook — peristiwa moderasi masa nyata dalam sistem anda

Langgan webhook Telm untuk pengesanan spam, pengharaman, tendang, bisu dan peristiwa sertai atau tinggalkan pada URL anda sendiri. Ditandatangani dengan HMAC-SHA256 dan dicuba semula. Pro+.

8 minit bacaan
Ringkasnya

Webhook menolak peristiwa moderasi ke URL anda pada saat ia berlaku — pengesanan spam, pengharaman, tendang, bisu, dan ahli sertai atau tinggalkan. Setiap penghantaran ditandatangani dengan HMAC-SHA256 (disahkan terhadap rahsia whsec_), membawa id penghantaran stabil untuk penyahduplikatan, dan dicuba semula mengikut jadual jika pelayan anda tidak dapat dihubungi. Webhook adalah sebahagian daripada pelan Pro dan ke atas.

Cipta kunci API dan webhook di halaman Developer.

1Apa yang dilakukan oleh webhook

Daripada meninjau API, anda mendaftar URL dan Telm menghantar HTTP POST yang ditandatangani kepadanya setiap kali sesuatu berlaku dalam kumpulan anda. Beginilah anda mendapat peristiwa moderasi ke dalam sistem anda sendiri — papan pemuka, gudang data, saluran amaran — secara masa nyata.

Anda menguruskan titik akhir webhook melalui API: daftar URL, pilih peristiwa mana yang hendak dilanggan, secara pilihan hadkan ia kepada kumpulan tertentu, hantar ping ujian, dan baca log penghantaran terkini.

Webhook memerlukan pelan Pro atau lebih tinggi (gerbang yang sama seperti REST API penuh). Pada Free dan Basic anda masih boleh mencuba titik akhir semakan spam, tetapi tidak boleh mendaftar webhook.

2Mengapa menolak mengalahkan tinjauan

Anda boleh memanggil titik akhir jurnal mengikut pemasa untuk mencari peristiwa baharu, tetapi itu menambah kependaman, membelanjakan kuota, dan boleh terlepas saat tepat sesuatu berlaku. Webhook membalikkan model: Telm memberitahu anda sebaik sahaja peristiwa dicetuskan, jadi sistem anda bertindak balas dalam beberapa saat.

Penggunaan biasa termasuk mencerminkan pengharaman ke dalam alat pentadbir anda sendiri, memberi amaran kepada saluran pasukan apabila serbuan dikesan, menstrimkan pengesanan ke dalam analitik, atau mencetuskan aliran kerja apabila ahli menyertai atau meninggalkan.

  • Masa nyata: anda mengetahui tentang peristiwa apabila ia berlaku, bukan pada tinjauan seterusnya.
  • Cekap: tiada bacaan berulang yang menghakis kuota harian anda.
  • Lengkap: penghantaran dicuba semula, jadi gangguan singkat di pihak anda tidak kehilangan peristiwa.

3Peristiwa yang boleh anda langgan

Terdapat tujuh jenis peristiwa yang boleh dilanggan, meliputi keputusan spam, hukuman dan perubahan keahlian. Satu mesej yang dimoderasi boleh menghasilkan lebih daripada satu peristiwa — mesej spam yang berakhir dengan pengharaman memancarkan kedua-dua spam.detected dan user.banned.

  • spam.detected — enjin menandai mesej sebagai spam.
  • message.suspicious — pengesanan bayangan (mod pemantauan) dengan skor.
  • user.banned — ahli diharamkan.
  • user.kicked — ahli dibuang.
  • user.muted — ahli dibisukan.
  • user.joined — ahli menyertai kumpulan.
  • user.left — ahli meninggalkan kumpulan.
Terdapat juga peristiwa ping yang digunakan hanya oleh panggilan ujian, jadi anda boleh mengesahkan titik akhir anda menerima dan mengesahkan penghantaran sebelum peristiwa sebenar mula mengalir. Muatan penuh didokumentasikan dalam Rujukan peristiwa webhook.

4Sampul muatan

Setiap penghantaran ialah sampul JSON dengan satu set medan peringkat atas yang kecil dan stabil serta objek data khusus peristiwa di dalamnya. Anda boleh menghala berdasarkan jenis dan masa tanpa menghuraikan butiran sehingga anda memerlukannya.

  • id — id penghantaran yang unik; penghantaran semula peristiwa yang sama menggunakan semula id yang sama, iaitu cara anda menyahduplikat.
  • type — jenis peristiwa, satu daripada tujuh di atas.
  • created_at — bila peristiwa dicetuskan, dalam RFC3339 UTC.
  • group_id — kumpulan yang peristiwa itu tergolong (apabila berkenaan).
  • data — objek khusus peristiwa: butiran mesej dan keputusan untuk peristiwa spam, butiran ahli untuk peristiwa keahlian.

5Mengesahkan penghantaran benar-benar daripada Telm

Setiap penghantaran ditandatangani supaya pelayan anda boleh mengesahkan permintaan itu benar-benar datang daripada Telm dan tidak diusik semasa transit. Sahkan tandatangan sebelum anda mempercayai muatan, dan tolak apa-apa yang tidak sepadan.

Tandatangan ialah HMAC-SHA256 bagi cap masa dan badan permintaan mentah, dikunci dengan rahsia penandatanganan titik akhir anda. Untuk mengesahkan, kira semula HMAC bagi pengepala cap masa dan bait tepat yang anda terima, dan bandingkannya dengan pengepala tandatangan.

  • X-Telm-Signature — tandatangan, diformat sebagai v1 diikuti oleh hex HMAC-SHA256 bagi cap masa yang disambung kepada badan.
  • X-Telm-Timestamp — cap masa unix-saat yang ditandatangani, jadi anda boleh menolak penghantaran yang basi atau dimainkan semula.
  • X-Telm-Event — jenis peristiwa, dan X-Telm-Delivery — id penghantaran untuk penyahduplikatan.
  • Rahsia penandatanganan ditunjukkan sekali sahaja apabila anda mencipta titik akhir dan bermula dengan whsec_. Simpannya dengan selamat; ia satu-satunya perkara yang membuktikan penghantaran itu tulen.
Jangan sekali-kali melangkau pengesahan tandatangan. Tanpanya, sesiapa yang meneka URL anda boleh menyiarkan peristiwa palsu. Resipi pengesahan langkah demi langkah ada dalam Rujukan peristiwa webhook.

6Penghantaran yang boleh dipercayai dan dinyahduplikat

Penghantaran adalah sekurang-kurangnya sekali: Telm memastikan peristiwa sampai kepada anda, yang bermakna peristiwa yang sama kadangkala boleh tiba dua kali. Kerana setiap penghantaran semula menggunakan semula id penghantaran yang sama, anda menyahduplikat dengan menyimpan id yang telah anda proses dan melangkau pengulangan.

Jika titik akhir anda tidak dapat dihubungi atau memulangkan ralat, penghantaran dicuba semula mengikut jadual tetap — kira-kira selepas satu minit, lima minit, tiga puluh minit, dua jam dan enam jam, sehingga enam percubaan dalam kira-kira lapan setengah jam. Titik akhir yang terus gagal dilumpuhkan secara automatik untuk melindungi kedua-dua pihak, dan pemilik diberitahu.

  • Balas dengan pantas dengan status 2xx; lakukan kerja berat secara tak segerak selepas mengakui.
  • Nyahduplikat berdasarkan id penghantaran — jangan sekali-kali berdasarkan kandungan muatan.
  • Titik akhir yang gagal kira-kira dua puluh kali berturut-turut tanpa kejayaan dalam tetingkap 72 jam dilumpuhkan secara automatik; dayakan semula setelah pelayan anda sihat.

7Menguruskan titik akhir dan membaca log

Anda mendaftar, menyunting dan mengeluarkan titik akhir webhook melalui API. Apabila anda mencipta satu, anda menerima rahsia penandatanganan sekali sahaja, memilih peristiwa untuk dilanggan, dan secara pilihan menskopkannya kepada kumpulan tertentu. Panggilan ujian menghantar ping yang ditandatangani supaya anda boleh mengesahkan pengesahan anda berfungsi sebelum trafik sebenar bermula.

Setiap titik akhir menyimpan log penghantaran yang boleh anda baca semula untuk melihat apa yang dihantar, bila, dan sama ada ia berjaya — berguna untuk menyahpepijat penerima tanpa menunggu peristiwa langsung seterusnya.

  • Cipta titik akhir dan salin rahsia whsec_ serta-merta.
  • Hantar ping ujian untuk mengesahkan semakan tandatangan anda dari hujung ke hujung.
  • Skopkan titik akhir kepada satu kumpulan atau biarkan ia terbuka kepada semua kumpulan yang anda tadbir.
  • Baca log penghantaran untuk memeriksa percubaan terkini dan hasilnya.

8Amalan terbaik dan kesilapan biasa

Penerima yang teguh mengikuti beberapa peraturan yang menghalang masalah paling biasa.

  • Sahkan tandatangan berdasarkan bait badan mentah — menghuraikannya kepada JSON dahulu kemudian menyusunnya semula boleh menukar bait tersebut dan merosakkan semakan.
  • Pulangkan 2xx dengan pantas dan proses kemudian; pengendali yang perlahan menyebabkan tamat masa dan cubaan semula yang tidak perlu.
  • Jadikan pengendalian idempoten supaya peristiwa yang dihantar semula tidak dikira dua kali.
  • Gunakan HTTPS pada URL yang boleh dihubungi secara awam; Telm menyekat alamat dalaman dan peribadi serta tidak mengikuti pengalihan.
  • Simpan rahsia whsec_ jauh daripada log dan kod klien.
Webhook menangkap peristiwa untuk sistem anda, tetapi jurnal moderasi kekal sebagai rekod yang sah di dalam Telm.
Adakah artikel ini membantu?

Bersedia untuk melindungi kumpulan anda?

Tambah Telm ke kumpulan Telegram anda dan biarkan ia menangani spam.