Bot Telegram sederhana untuk menerjemahkan permintaan POST
dengan muatan JSON menjadi pesan push Telegram. Mirip Gotify dan ntfy.sh, kecuali tanpa aplikasi tambahan. Berguna untuk pemantauan server, peringatan, dan lainnya.
Buka Telegram, mulai obrolan dengan TelepushBot (atau bot Anda sendiri) dan ketik /start
untuk mendapatkan token penerima.
Pesan dikirim melalui POST
ke https://telepush.dev/api/[[inlets/<inlet_name>]|messages]/<recipient>
.
RECIPIENT_TONEN=... # Token yang Anda terima menggunakan /start.curl -XPOST -H 'Jenis Konten: aplikasi/json' -d '{ "text": "*Halo Dunia!* (ya, ini Penurunan Harga)" }' "https://telepush.dev/api/messages/${RECIPIENT_TONEN}"
Saat menghosting instance Anda sendiri, ganti URL-nya masing-masing.
Kunci | Jenis | Keterangan |
---|---|---|
text * | rangkaian | Pesan aktual dalam format teks biasa atau penurunan harga |
origin | rangkaian | Apa yang akan ditampilkan sebagai pengirim pesan Anda |
type | [ TEXT , FILE ] | Jenis pesan, yaitu untuk mengirim teks atau file (default: TEXT ) |
file ** | base64 | Konten file yang dikodekan Base64 |
filename ** | rangkaian | Nama file yang akan dikirim |
options | obyek | Opsi tambahan untuk dilewati |
options.disable_link_previews | bodoh | Apakah akan menampilkan pratinjau tautan dalam obrolan |
*
= diperlukan untuk type: TEXT
, **
= diperlukan untuk type: FILE
Detail lebih lanjut dapat ditemukan di sini.
Cukup gunakan instance resmi yang dihosting. Tarif dibatasi hingga 240 permintaan per penerima per hari.
Saat menghosting instance Telepush Anda sendiri, Anda perlu membuat bot baru dengan @Botfather terlebih dahulu. Hasilnya, Anda akan mendapatkan token yang kemudian Anda teruskan ke Telepush saat memulai server (lihat di bawah).
$ volume buruh pelabuhan membuat telepush_data $ buruh pelabuhan menjalankan -d -hal 8080:8080 -v telepush_data:/srv/data --nama telepush ghcr.io/muety/telepush -mode webhook -token <YOUR_BOTFATHER_TOKEN>
Lihat di sini.
# Instal$ go install github.com/muety/telepush@latest# Jalankan (mode webhook)$ ./telepush -token <YOUR_BOTFATHER_TOKEN> -mode webhook
Anda dapat menjalankan bot dalam mode long-polling atau webhook ( -mode [webhook|poll]
). Untuk penggunaan produksi, opsi terakhir direkomendasikan karena berbagai alasan. Namun, Anda memerlukan server dengan IP statis dan sertifikat TLS.
Detail selengkapnya tentang penyiapan webhook dapat ditemukan di Panduan Luar Biasa Marvin untuk Segala Hal Webhook .
Dalam mode webhook, Telegram memerlukan titik akhir pembaruan Anda untuk menggunakan HTTPS. Untuk mengaktifkannya, jalankan Telepush di belakang proxy terbalik (seperti Caddy), yang menghentikan TLS.
Atau, biarkan Telepush sendiri yang menangani TLS. Anda memerlukan sertifikat untuk ini, jadi dapatkan sertifikat dari Let's Encrypt atau buat sertifikat yang ditandatangani sendiri, lalu gunakan -useHttps
dalam kombinasi dengan -certPath
dan -keyPath
yang menunjuk ke file sertifikat dan kunci pribadi Anda masing-masing.
Untuk sertifikat yang ditandatangani sendiri, Anda juga harus meneruskan kunci publik Anda ke metode setWebhook
Telegram, lihat petunjuk ini.
-address
( string
) – Alamat jaringan (IPv4) untuk diikat. Defaultnya adalah 127.0.0.1
.
-address6
( string
) – Alamat jaringan (IPv6) untuk diikat. Defaultnya adalah ::1
.
-disableIPv6
( bool
) – Apakah akan menonaktifkan mendengarkan pada antarmuka IPv4 dan IPv6. Defaultnya adalah false
.
-port
( int
) – Port TCP untuk mendengarkan. Defaultnya adalah 8080
.
-proxy
( string
) – String koneksi proxy yang akan digunakan untuk mode polling panjang. Defaultnya tidak ada.
-urlSecret
( string
) – Akhiran acak untuk ditambahkan ke rute pembaruan Anda yang dipanggil oleh server Telegram untuk mencegah spam. Defaultnya tidak ada.
-useHttps
( bool
) – Apakah akan menggunakan HTTPS. Defaultnya adalah false
.
-certPath
( string
) – Jalur sertifikat SSL Anda saat menggunakan mode webhook dengan useHttp
. Standarnya tidak ada.
-keyPath
( string
) – Jalur kunci SSL pribadi Anda saat menggunakan mode webhook dengan useHttp
. Standarnya tidak ada.
-dataDir
( string
) – Lokasi sistem file tempat menyimpan data persisten. Defaultnya adalah .
.
-inlets
( string
) – Jalur ke folder yang berisi definisi inlet berbasis konfigurasi dalam format YAML. Defaultnya adalah ./inlets.d
.
-blacklist
( string
) – Jalur ke file daftar hitam yang dipisahkan baris yang berisi ID pengguna (kirim /help
untuk mendapatkan id Anda). Defaultnya adalah blacklist.txt
.
-whitelist
( string
) – Jalur ke file daftar putih yang dipisahkan baris yang berisi ID pengguna (kirim /help
untuk mendapatkan id Anda). Defaultnya adalah whitelist.txt
.
-rateLimit
( int
) – Jumlah maksimum pesan yang akan dikirimkan ke setiap penerima per jam. Defaultnya adalah 100
.
-truncateMsgs
( bool
) – Memotong pesan yang terlalu panjang menjadi 4096 karakter alih-alih menolaknya. Defaultnya adalah false
.
-metrics
( bool
) – Apakah akan mengekspos metrik Prometheus di bawah /metrics
. Defaultnya adalah false
.
Saat menggunakan image Docker, Anda juga dapat mengatur sebagian besar opsi konfigurasi di atas melalui variabel lingkungan (diteruskan ke docker run
menggunakan -e
), misalnya APP_USE_HTTPS=true
, APP_CERT_PATH=/etc/telepush.crt
, dll. Untuk detailnya, lihat entrypoint.sh
.
(alias. daftar yang diizinkan vs. daftar blokir)
Inlet menyediakan mekanisme untuk melakukan pra-proses data masuk yang datang dalam format berbeda dari yang biasanya diharapkan oleh bot.
Hal ini sangat berguna jika data dikirim oleh aplikasi pihak ketiga eksternal yang tidak dapat Anda ubah.
Misalnya, Anda mungkin ingin mengirimkan peringatan dari Alertmanager Prometheus sebagai notifikasi Telegram. Namun, permintaan webhook Alertmanager terlihat jauh berbeda dari format input default Telepush. Agar tetap cocok, Anda dapat menulis Inlet untuk memijat data yang sesuai.
Untuk langsung mengatasi saluran masuk, minta https://telepush.dev/api/inlets/<inlet_name>
. Perhatikan bahwa /api/inlets/default
setara dengan /api/messages
.
Saluran masuk berikut saat ini tersedia:
Nama | Keterangan | Status |
---|---|---|
default | Cukup teruskan permintaan tanpa perubahan apa pun | ✅ |
alertmanager | Menggunakan permintaan webhook Alertmanager | ✅ |
grafana | Menggunakan permintaan webhook Grafana | ✅ |
webmentionio | Menerima permintaan webhook Webmention.io untuk memberi tahu tentang Webmention baru dari salah satu artikel Anda | ✅ |
stripe | Menerima webhook Stripe untuk memberi tahu tentang perubahan status langganan | ✅ |
bitbucket | Menerima permintaan webhook Bitbucket untuk memberi tahu tentang perubahan status saluran | ⏳ |
Anda juga dapat menentukan saluran masuk khusus Anda sendiri di YAML. Dokumentasi lebih lanjut mengenai hal ini dan tentang masing-masing saluran masuk yang sudah ada sebelumnya tersedia di sini.
Untuk semua saluran masuk, opsi berikut tersedia untuk diteruskan sebagai parameter kueri:
Parameter | Keterangan |
---|---|
disable_link_previews | Nonaktifkan versi pratinjau tautan web yang terdeteksi dalam pesan. Bawaan: false . |
disable_markdown | Nonaktifkan pesan yang sedang dicoba diuraikan sebagai Penurunan Harga. Bawaan: false . |
Contoh: POST https://telepush.dev/api/inlets/default?disable_markdown=true&disable_link_previews=true
.
Metrik dasar Prometheus diekspos di bawah /metrics
, jika tanda -metrics
diteruskan. Ini termasuk:
telepush_messages_total{origin="string", type="string"}
telepush_requests_total{success="string"}
panic: template: pattern matches no files: *.tpl.html
Saat menjalankan Telepush sebagai executable tunggal, Anda tidak boleh menggunakan mode dev kecuali kode sumber Telepush terletak di dalam direktori yang sama. Pastikan untuk tidak meneruskan -env dev
dalam kasus ini.
MIT @ Ferdinand Mütsch