Cara Mengatasi Wrong Response from Webhook Telegram

webhoook vs api

RYANID.MY.ID - Bagi para developer bot telegram pasti pernah mengalami kasus yang serupa. Ketika kita sedang asik menjalankan bot, tiba-tiba bot tidak merespon. Para developer mulai mencari penyebab masalah, tapi sayang sekali cukup memakan waktu untuk memeriksanya.

Kita akan sulit mengetahui error yang terjadi, kalau mau mendebug script dari sistem kerja awal pasti bakalan memakan waktu donk. Nah kasus seperti ini sering saya alami, bot tiba-tiba berhenti bekerja.

Usut punya usus ternyata disebabkan oleh server web yang kelebihan beban. Penggunaan sumber daya yang berlebihan, seperti yang kita ketahui, lalu lintas webhook dari server telegram ke server web cukup banyak.

Kalau seandainya server tiba-tiba berhenti alias downtime, biasanya menanpilkan teks pesan Resource Limit Reached (Penggunaan sumber daya sudah melebihi batas). Maka pekerjaan yang dikirim telegram akan menumpuk.

Laporan error bisa dilihat menggunakan URL Webhook dibawah ini. Biar nggak mumet saya sertakan reason respon nya dalam bentuk json. Jika kamu mengunjungi halaman getWebhookInfo maka kamu akan mendapatkan data detail mengnai status webhook yang terhenti.
https://api.telegram.org/botTOKEN/getWebhookInfo
Response :
{"ok":true,"result":{"url":"https://ta-skb.my.id/shedule_notif.php","has_custom_certificate":false,"pending_update_count":0,"last_error_date":1639472965,"last_error_message":"Wrong response from the webhook: 503 Service Unavailable","max_connections":40,"ip_address":"103.247.9.131"}}

Biasanya response server untuk webhook telegram dalam bentuk HTTP JSOS yang callback hasil permintaan server telegram. Namun karena server kelebihan beban, file tidak ditemukan, atau adanya Error pada Syntax Script, responya berupa error. Telegram akan menampiloan deskripsi error pada webhook nya, contoh deskripsi yang menandakan kalau situs sedanh Offline "Error, Service unavailable 503".

Dari mana respon tersebut berasal? Respon tersebut dari server bot kamu. Error dari server bot kamu di terima oleh server telegram. Misalnya, telegram minta data callback dalam bentuk JSON. Namun karena ada Error script di server kamu, justru mengembalikan hasil berupa HTML dengan header kode error. Tentu saja server telegram tidak bisa memahami nya, akibatnya muncul webhoook error.

Webhook telegram menggunakan waktu jedah beberapa saat untuk mengirim permintaan ulang. Biasanya berselang antara 59 detik dan berlaku keliptan, semakin lama server terus serror percobaan yang dilakukan telegram ke server web kamu pending nya akan semakin lama. Jika bot kamu punya banyak user, permintaan yang gagal di kirim akam tersimpan di server telegeram. Kamu bisa melihat pending_request pada laman getWebhookInfo.

Segera hapus URL webhook bila tidk ingin terjadi lebih parah. User biasanya akan mengirim pesan lebih dari sekali ketika bot mengalami delay / no response. Jika server web sudah tidak kuat, masala tidak akan pernah selesai. Dan telegram akan menghitung waktu mundur buat melakukan permintaan baru.

Kita tidak akan melihat kapan webserver down, karena down pada website terjadi hanya sementara. Tepatnya ketika server menerima pekerjaan yang lebih banyak (runtime lebih dari 1x dalam satu waktu). Jika kamu chat dengan costumer hosting, maka cs akan menyebut kalau server baik-baik saja karena mereka tidak melihat terjadi nya downtime yang berlangsung singkat.



Cara mengatasi Wrong response from webhook

Jika dibiarkan proses ini akan selalu mengganggu waktu kerja, terus apa donk yang bisa di kakukan? Begini, kamu seharusnya mempunyai server cadangan. Sehingga ketika terjadi error kamu bisa memindahkan alur webhook pada server yang lain.

Bot telegram memang membutuhkan resource yang besar, lebih bagus lagi kalau menggunakan server sendiri. Kamu bisa menggunakan VPS untuk performa yang lebih kencang.

Jika tidak punya cukup uang untuk sewa server, solusi alternative nya adalah mengurangi fitur. Jika bot kamu digunakan oleh beberapa user dan sebuah fitur yang mengonsumsi CPU & RAM yang besar ada baiknya memberlakukan parallel process.

Hindari menggunakan multiple cron job, karena ia akan menghabiskan resource hosting. Pada beberapa web hosting biasanya menerapkan batasan-batasan tertentu pada jumlah request (permintaan) perbulan.

Limit ini tidak cocok untuk membangun bot telegram yang setiap hari nya ada puluhan request di buat. Webhook akan bekerja setiap ada aksi dari telegram ke bot. Misalnya user mengirim pesan ke grup chat, webhook akan berjalan, bot mempunyai user aktif yang rame webhook akan jalan.

Bagaimana cara melihat Riwayat Request?
Jika kamu menggunakan apache/PHP sebagai program utama bot bisa melihat metrik di menu Cpanel dan pada bagian Visitor. Di sana akan tercatat 1000 log terakhir selama 24 jam. Khusus web server lain silakan di sesuaikan saja pada panel web yang di gunakan.

Tanpa diperbaiki Wrong Response 503 akan pulih dengan sendiri nya. Masalah terpenting adalah client kita tetap aman 😅, disini pengalaman yang pernah saya temui masalah tidak selesai lebih dari 12 jam.

Setelah diperbaiki, kamu bisa Reset webhook dengan cara menghapusnya. Kemudian menambahkan nya kembali. Dengan begitu maka server telegram akan memulai permintaan baru ke server web dan mengabaikan pending timer karena error downtime.

Cara mengatasi Service Unavailable Telegram api

Webhook service unavailable tidak termasuk dan tidak sama seperti wronk response from webhook. Service unavailable biasanya disebabkan oleh SSL yang tidak ter-install dengan baik. Bisa juga karena sertifikat SSL sudah tidak valid, telegram webhook membutuhkan ssl agar bisa bekerja saling bertukar data menggunakan Rest API.

SSL tidak dibutuhkan jika kamu menggunakan library asyncronous, ssl (https) adalah keamanan enkripsi data dari server ke peramban web pada website secara umum. Kamu bisa memeriksa apakah ssl valid atau tidak menggunakan tools pihak ketiga https://www.sslshopper.com/ssl-checker.html#hostname=ryanid.my.id.

SSL sangat krusial, tanpa ssl data bisa saja di modifikasi oleh pihak ketiga. Sebagai contohnya iklan provider indosat, indihome sering kali disisipan oleh ISP ke website yang tidak menggunakan SSL, pihak ketiga juga bisa membaca data yang kamu kirimkan. Pada browser Google, pengguna akan mendapatkan nontifikasi sebagai tidak aman.

Solusi terbaik adalah memastikan SSL tetap aktif, tanggal masa berlakunya juga harus di perbaruhi. Memperbaruhi SSL sama seperti menggenerate sertifikat baru. Jika SSL sudah aman silakan tunggu beberapa waktu, bot akan kembali online.



Error invalid Response internal server error, kode 500 Webhook

Error 500 mengindikasikan bahawa seb server kamu mengembalikan Error saat di akses. Penyebab utama error adalah ketika lalu lintas tinggi, dan beban hosting yang kamu gunakan sudah tidak sanggup lagi menangani banyak nya proses perdetik. Ini berlaku bagi bot telegram yang di buat menggunakan API bukan asyncronous.

Penyebab lain, ketika script yang kamu pasang mengalami error atau dikenal juga dengan istilah kesalahan penulisan syntax. Kalau menggunana PHP sebagai prosesor nya, kesalahan penulisan syntax akan memunculkan notif error saat web di buka. Apabila notif ini dimatikan, maka yang kamu lihat adalah halaman kosong. Web hanya mengembalikan kode error 500, internal server Error.

Cara mengatasinya adalah dengan melakukan debungging pada script yang kamu kerjakan. Bisa gunakan tools dari reqbin reqbin.com/req/v0crmky0/rest-api-post-example. Lihat hasilnya apakah sudah benar atau belum, jangan menggunakan bot langsung untuk menguji coba.

Kalau pakai bot lansung, bila terjadi lagi maka telegram akan menuda waktu pengiriman data ke webhook. Dan tentu saja kamu tidak akan bisa memperbaikinya, karena pesan masuk ke bot tidak langsung di kirim ke web server mu. Tapi masuk ke dalam daftar pending request.

Bagi yang tidak memahami lebih dalam mengenai telegram API pasti akan sangat kesulitan mengatasinya. Mereka pasti berfikir kalau script masih error, padahal webhook nya yang kena pending oleh telegram setelah perbaikan. Makanya saya lebih menyarankan gunakan tools pihak ketiga buat melakukan akses debug.



Mungkin sampai disini masih ada pertanyaan? Mari berdisuksi lewat kolom komentar disqus di bawah ini. Tuliskan masalahmu yang pernah kamu alami ketika membuat bot telegram, solusi akan di perbaruhi secara berkala. 🤗🤗

RyanID
RyanID Saya aslinya tertarik pada teknologi elekronika, tapi karena kurang di dukung ortu, akhirnya pindah ke coding. Saat ini bekerja sebagai fullstack dev di Netzku.com