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.

14.887 comments

  1. Jammie Hafferkamp

    Citizen has an extensive collection of watches, mostly concentrating on sports and also pilot watches. They are divided right into 5 categories (Diving, Pilot, Performance, Ladies, Executive) which we’ll take a better take a look at below. Among Citizen Nighthawk most recent designs is the Argonautic Bronze TT, which is limited to just 300 items. The creation of this watch complies with the success of the previous year’s Citizen Nighthawk bronze model, which sold out quickly.

  2. Dieta sokowa Chorzow

    I am not sure where you are getting your information, but good topic. I needs to spend some time learning more or understanding more. Thanks for excellent information I was looking for this info for my mission.

  3. slot games

    Thanks , I’ve recently been looking for information about this subject for a long time and yours
    is the greatest I’ve discovered so far. However, what concerning the conclusion? Are you positive
    concerning the supply?

  4. สล็อตแมชชีน

    Thank you for sharing your thoughts. I really appreciate your efforts and I will be waiting for your next post thanks once again.

  5. 188BET

    I was suggested this blog by way of my cousin. I’m now not certain whether or not this submit is written through him as
    nobody else understand such distinct about my trouble.
    You are wonderful! Thank you!

  6. 솔레어카지노

    Piece of writing writing is also a fun, if you be familiar
    with after that you can write or else it is difficult to
    write.

  7. ライブ カジノ ハウス 登録

    Thank you, I’ve recently been looking for information approximately this subject for ages and yours is
    the greatest I have found out till now. But, what about the
    bottom line? Are you certain about the source?

  8. Pure casino

    Great article, exactly what I needed.

  9. Titanium Trim

    Hurrah, that’s what I was seeking for, what a material! existing here at this website, thanks admin of this web site.

  10. game bingo

    Hi colleagues, how is the whole thing, and what you would like to say concerning this post, in my view its in fact remarkable in support of me.

  11. natural gas fuel

    It’s not my first time to visit this website, i am visiting this web
    page dailly and take nice data from here all the time.

  12. ジパングカジノ 評判

    No matter if some one searches for his vital
    thing, so he/she wants to be available that in detail, thus that thing is maintained over here.

  13. カジノシークレット

    Incredible! This blog looks just like my old one!
    It’s on a completely different subject but it has pretty much the
    same page layout and design. Great choice of colors!

  14. live casino

    I really like it when people come together and share thoughts.
    Great website, stick with it!

  15. ベラ ジョン カジノ 大 勝ち

    Hey There. I found your blog the use of msn. This is a very smartly written article.
    I will be sure to bookmark it and return to read more of your useful information. Thanks for the post.
    I will certainly comeback.

  16. 10bet カジノ

    No matter if some one searches for his necessary thing, thus he/she wishes to be
    available that in detail, so that thing is maintained over
    here.

  17. カジ旅 出金

    Today, I went to the beach front with my children. I found a sea shell
    and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her ear.
    She never wants to go back! LoL I know this is totally off topic but I had to tell someone!

  18. dafa99

    Great beat ! I would like to apprentice whilst you amend
    your web site, how could i subscribe for a weblog web
    site? The account aided me a applicable deal. I were
    tiny bit acquainted of this your broadcast offered vivid
    clear idea

  19. bathing ape hoodie

    Hello there! I could have sworn I’ve been to this blog before but
    after reading through some of the post I realized it’s new to me.
    Anyways, I’m definitely glad I found it
    and I’ll be bookmarking and checking back frequently!

  20. đánh cờ tướng

    Excellent post. I absolutely appreciate this website.
    Stick with it!

  21. sv388.com

    whoah this weblog is fantastic i love studying your posts.

    Keep up the great work! You know, lots of individuals are hunting around for this
    information, you could aid them greatly.

  22. Paddy Power

    Thanks a lot for sharing this with all of us you actually recognize what
    you are talking about! Bookmarked. Please additionally consult with my website =).
    We can have a link trade agreement among us

  23. click here

    Hello there! I could have sworn I’ve visited your blog before but after
    going through many of the articles I realized it’s new to me.
    Anyways, I’m definitely happy I found it and I’ll be bookmarking it and checking
    back frequently!

Tinggalkan Balasan

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