Membuat Telegram Bot menggunakan PHP : Webhook dan Localhost via Ngrok

Pada postingan ini kita akan membuat Telegram bot menggunakan PHP, metode webhook, dan ngrok. Untuk membuat bot menggunakan metode webhook, kita perlu memahami konsep dasar metode webhook dan long polling. Saya telah menjelaskannya pada postingan ini : Membuat Telegram Bot Menggunakan PHP : Long Polling.

Pada tutorial ini, anda akan membuat webhook pada server localhost menggunakan metode webhook, dan tidak perlu memiliki server yang dihosting di internet.

Aplikasi yang Dibutuhkan

Untuk membuat Telegram bot menggunakan metode webhook dan PHP, kita memerlukan :

  1. Aplikasi Telegram. Download link : telegram.org.
  2. Ngrok. Download link : ngrok.com/download.
  3. PHP server (disarankan menggunakan XAMPP). Cek postingan saya tentang ini : #1 Tutorial Pemrograman Web – Menginstall XAMPP Server.

Menggunakan metode webhook, kita biasanya diharuskan untuk memiliki server atau website yang dihosting di internet, dan dapat diakses lewat internet kapanpun dan dimanapun.

Namun pada tutorial ini, kita tidak perlu hosting, karena terkadang biayanya cukup mahal. Hosting tersebut dapat digantikan dengan ngrok, sehingga kita tetap bisa menggunakan localhost. Saya akan jelaskan lebih lanjut pada bagian berikutnya.

Membuat Bot lewat Botfather

  1. Buka aplikasi Telegram, cari user @BotFather.
  2. Klik /start pada bagian bawah chat.
  3. Klik /newbot untuk membuat bot baru. BotFather akan menanyakan nama bot dan username.
  4. Setelah mengetikkan nama bot dan username, anda akan menerima chat yang berisi token bot.
    Creating Telegram Bot
  5. Selamat, anda baru saja membuat sebuah bot. Namun tentu saja bot tersebut tidak akan berfungsi apa apa karena belum diisi dengan program.

Membuat Program PHP untuk Telegram Bot

  1. Start apache web server pada localhost anda. Jika anda tidak tahu bagaimana melakukan ini, silahkan baca postingan ini : #1 Tutorial Pemrograman Web – Menginstall XAMPP Server.
  2. Untuk membuat bot tersebut hidup, kita perlu membuat sebuah project baru pada folder htdocs. Buatlah sebuah folder bernama webhook, lalu di dalam folder tersebut, lalu kita buat sebuah file baru bernama index.php.
  3. Copy dan paste script php ini ke dalam file index.php tersebut.
    <?php
    $content = file_get_contents("php://input");
    if($content){
        $token = '<YOUR BOT TOKEN>';
        
        $apiLink = "https://api.telegram.org/bot$token/";
        
        echo '<pre>content = '; print_r($content); echo '</pre>';
        $update = json_decode($content, true);
        if(!@$update["message"]) $val = $update['callback_query'];
        else $val = $update;
        
        $chat_id = $val['message']['chat']['id'];
        $text = $val['message']['text'];
        $update_id = $val['update_id'];
        $sender = $val['message']['from'];
        ?>
        <b>There is a message :</b>
        <br /><br />
        <b>Username : </b> <?php echo $sender['username']; ?> <br />
        <b>Sender's Name : </b> <?php echo $sender['first_name'].' '.$sender['last_name']; ?> <br />
        <b>Text Message : </b> <?php echo $text; ?> <br /><br />
        <?php 
        
        file_get_contents($apiLink . "sendmessage?chat_id=$chat_id&text=You just sent ".$text);
        echo 'Response sent.<br /><br />';
    } else echo 'Only telegram can access this url.';
    
    ?>

    Ganti <YOUR BOT TOKEN> pada baris ke 4 dengan token yang dikirim oleh BotFather sebelumnya.

  4. Sekarang mari kita jalankan script tersebut. Buka browser anda, lalu ketik localhost/webhook. Anda akan melihat hasil seperti ini :
    testing webhook telegram bot 1

Setting ngrok

Konsep dasar dari ngrok adalah sangat sederhana. Dengan ngrok, anda bisa mengakses localhost anda dari internet, seolah – olah server anda dihosting di suatu tempat.

  1. Pertama – tama, kita download ngrok di sini.
  2. Extract file hasil download di komputer anda.
  3. Buka Windows Command Prompt (cmd), lalu masuk ke folder tempat anda extract file hasil download tersebut melalui cmd. Cek capture pada poin no. 4.
  4. Di dalam folder, ketik : ngrok.exe http 80
    set up ngrok
  5. Jika berhasil, anda akan melihat hasil seperti ini :
    ngrok started
  6. Periksa bagian ‘Forwarding’. Sekarang mari kita periksa hasilnya di browser. Pada contoh yang saya gunakan, saya perlu mengakses : https://d36fa284.ngrok.io/webhook.
  7. Yess, cukup mudah bukan untuk membuat localhost kita bisa diakses lewat internet. Anda tentu saja bisa mengaksesnya lewat perangkat manapun selama terhubung ke internet. Pada dasarnya, ngrok telah mengubah localhost anda menjadi d36fa284.ngrok.io yang dapat diakses lewat internet. Anda juga bisa cek project lain yang ada di folder htdocs anda dengan mengakses https://d36fa284.ngrok.io/<project apapun di dalam htdocs>.
  8. Sekarang, saya perlu memberi tahu Telegram, bahwa saya memiliki server yang berjalan pada https://d36fa284.ngrok.io. Buka browser anda, lalu ketik :

    https://api.telegram.org/bot<YOUR BOT TOKEN>/setwebhook?url=https://d36fa284.ngrok.io/webhook/

    Ganti <YOUR BOT TOKEN> dengan token bot anda. Jangan lupa tanda slash di akhir.

    Ganti juga d36fa284.ngrok.io sesuai dengan bagian ‘Forwarding’ pada ngrok anda.

  9. Selesai sudah kita melakukan setting ngrok dan webhook. Jika semuanya benar, anda seharusnya melihat hasil seperti ini :
    set webhook telegram bot
  10. Sekarang mari kita lihat log yang disediakan oleh ngrok. Buka localhost:4040 pada browser anda.
    ngrok log url
  11. Sekarang, setiap kali ada seseorang yang mengirimkan chat ke bot yang baru saja anda buat, bot tersebut akan memberikan balasan. Mari kita cek ke aplikasi Telegram.
    test bot webhook

Begitulah cara untuk membuat bot Telegram menggunakan metode webhook, namun tidak perlu memiliki website publik untuk menentukan url webhook. Anda bisa mengedit script php jika ingin bot memberikan respon yang berbeda sesuai kebutuhan. Jika anda memiliki pertanyaan atau kendala, silahkan tanyakan pada kolom komentar.

15.976 comments

  1. SHORTURL

    I blog frequently and I really thank you for your content.
    Your article has truly peaked my interest. I’m going
    to book mark your website and keep checking for new information about once
    a week. I opted in for your RSS feed as well.

  2. Hans

    Hi there, i read your blog occasionally andd i own a similar one andd i was
    just wondering if you get a lot of spam responses?
    If so how do you protect againdt it, any plugin or anything you
    can recommend? I get so much lately it’sdriving me mad so any assistance is very
    much appreciated.

    Take a look at my blog post: takeaways in gloucester (Hans)

  3. wordpress hosting

    Pretty section of content. I just stumbled upon your web site and in accession capital to assert that I acquire in fact
    enjoyed account your blog posts. Any way I will be subscribing to your augment and even I achievement you access
    consistently rapidly.

  4. situs judi pulsa

    I know this іf off topic but I’m looking іnto ѕtaгting my own blog and was curious whаt all is rеquired to get setup?
    I’m ɑssuming having a blog like yours would cost a pretty penny?
    I’m not veгy web savvy so I’m not 100% sure. Any suggestions or advіce would be greatly apprecіated.

    Ꭺppreciate it

    Αlso visit my page: situs judi pulsa

  5. Sphynx Kittens for sale

    Quality articles or reviews is the main to be a focus for the people to pay a quick visit the website, that’s what this web site is providing.

  6. Miakam

    [url=https://silagrabuy.online/]buy silagra online in india[/url] [url=https://amviagra.online/]buy sildenafil from canada[/url] [url=https://elitadalafil.online/]buy tadalafil 5mg tablet[/url] [url=https://flomaxpill.online/]flomax without prescription[/url] [url=https://kamagrazp.com/]kamagra oral jelly perth[/url]

  7. 출장안마

    This is a topic which is near to my heart… Many thanks! Exactly where are your contact details though?

  8. Stock Analyzer

    I read your post in its entirety and I really like it. Thanks for having shared.

  9. site

    Outstanding post but I was wanting to know if you could write a litte more
    on this subject? I’d bee very gratefful if you
    could elaborate a little bit further. Cheers!
    site

  10. Markkam

    [url=https://silagrabuy.online/]silagra 50 mg india[/url] [url=https://cialispil.com/]online cialis sales[/url] [url=https://viagrampt.online/]buy cheapest generic viagra online[/url] [url=https://mdviagra.com/]canadian viagra prescription[/url] [url=https://cialisbio.com/]buy cialis no prescription canada[/url]

  11. บาคาร่า

    My family members every time say that I am wasting my
    time here at net, however I know I am getting know-how daily by reading thes good posts.

  12. best scooter

    I think that is among the most important info for me. And i am glad reading your article.

    But wanna remark on some common issues, The site taste is perfect, the articles is really excellent :
    D. Just right job, cheers

  13. hot sex movies

    This piece of writing presents clear idea for the new people
    of blogging, that in fact how to do running a blog.

  14. ผลบอลสด

    I every time emailed this blog post page to all my associates, because if like to read it then my links will too.

  15. chatabte

    Post what you want because at the end of the day the guy that tells you it’s slutty
    is following 100 half naked girls

  16. ایران لوستر

    This is very interesting, You are a very skilled blogger.
    I’ve joined your feed and look forward to seeking more of your
    great post. Also, I’ve shared your web site in my social networks!

  17. sbobet

    Pretty! This was a really wonderful post. Thanks for providing this info.

  18. 서울출장안마

    After checking out a handful of the articles on your website, I honestly like your technique of writing a blog. I bookmarked it to my bookmark site list and will be checking back soon. Please check out my web site too and tell me what you think.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *