Membuat Bot Telegram dengan Botman di Laravel 10

Hallo guys, kali ini saya akan membahas bagaimana caranya membuat chatbot dengan botman di Laravel 10. Pada tutorial ini kita akan mencoba belajar membuat bot telegram dengan perintah sederhana terlebih dahulu. 

Jika tampilan amburadul silahkan refresh halaman

Disini kita akan membuat bot telegram untuk mencari Hadits berdasarkan kitab yang dipilih dan nomor hadits yang ingin dicari. Sebelum melangkah lebih jauh, kita kenalan dulu sama Botman. Apa sih Botman itu?

Jadi Botman itu adalah sebuah framework yang digunakan untuk membuat chatbot dengan menggunakan bahasa pemrograman PHP. Botman support beberapa saluran perpesanan yang berbeda, seperti Amazon Alexa, Facebook, Telegram, Slack, dll. Untuk mengetahui seluk beluk dan dokumentasi botman, silahkan kunjungi website officialnya.

Bagaimana cara membuat bot telegram dengan botman di laravel ?

Berikut beberapa step yang kita akan lakukan di tutorial ini.

 

Install Laravel 10

Pada langkah pertama ini kita akan menginstall laravel 8 terlebih dahulu. Disini saya berikan contoh nama projectnya yaitu laravelhadits-bot.

composer create-project --prefer-dist laravel/laravel laravelhadits-bot

Ubah .env file

Setelah itu, buka file .env dan ubah nama database, username, dan password di file .env tersebut. Serta tambahkan juga baris baruTELEGRAM_TOKEN

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Nama_database
DB_USERNAME=Username_database
DB_PASSWORD=Password_database

TELEGRAM_TOKEN=Token_telegram_kamu

Install Botman dan Botman Driver

Pada langkah ini kita akan menginstall Botman Driver, jalankan 3 perintah dibawah ini.

composer require botman/botman
composer require botman/driver-web
composer require botman/driver-telegram

Penjelasan:

Pada line pertama kita membutuhkan driver utama botman, setelah itu line kedua kita membutuhkan driver-web untuk testing bot kita secara local, pada line terakhir kita membutuhkan driver-telegram agar bisa berkomunikasi dengan telegram bot.

Buat Konfigurasi File

Langkah ini kita akan memberikan konfigurasi pada folder config.

buat folder dengan nama botman, lalu buat 2 file yaitu config.php dan web.php

File config.php yang memiliki fungsi untuk cache conversation, jadi bisa diubah berapa detik cache akan bertahan. Tambahkan kode berikut dalam file config/botman/config.php

File web.php yang memiliki fungsi untuk matchingData dari driver. Tambahkan kode berikut dalam file config/botman/web.php

Setelah itu jalan migrate

php artisan migrate

Tambahkan Route

Buka file yang berletak di routes/web.php dan tambahkan kode berikut:

 

Buat Controller dengan artisan command

Setelah itu kita akan membuat controller yang bernama BotManController , jalankan perintah dibawah untuk membuat controller

php artisan make:controller BotManController

perintah diatas maka otomatis akan membuat controller. Selanjutnya kita buka file controller tadi yang terletak di app/http/controller/BotManController.php. Tambahkan kode dibawah ini;

ubah TOKEN_TELEGRAM_KAMU menjadi token telegram yang kamu miliki. 

Buat Conversations

Buat folder baru didalam folder app berikan nama foldernya yaitu Conversations. Setelah itu Buat file baru bernama ExampleConversation.php.

Ubah file app/Conversations/ExampleConversation.php sesuaikan dengan kode dibawah ini.

Buat File Blade

Setelah itu kita buat blade file untuk kita uji coba bot kita secara local / web. Kita berikan nama file bladenya yaitu welcome.blade.php. Tambahkan kode dibawah ini.

Jalankan servers

Kita uji coba melalui local / web terlebih dahulu, jalan php artisan serve.

Lalu kita akan mencoba chat melalui widget di pojok kanan bawah, hasilnya akan seperti ini.

Buat Telegram Bot

Setelah kita berhasil menjalankan pada local server, kita ingin dong bot kita bisa dipakai melalui telegram. Maka dari itu kita akan membuat Telegram Bot terlebih dahulu dengan BotFather.

Buka telegram, lalu cari di pencarian Botfather, ketikkan /newbot, masukkan nama dan username bot kamu, setelah itu akan di berikan token dari BotFather.

ubah pada file .envtadi bagian TELEGRAM_TOKEN ubah Token_telegram_kamu dengan token yang BotFather kirimkan tadi.

TELEGRAM_TOKEN=Token_telegram_kamu

Jalankan melalui Ngrok Server

Karena Telegram memerlukan URL yang valid dan aman untuk menyiapkan webhook dan menerima pesan dari pengguna bot kamu, disini saya akan menggunakan ngrok atau kamu dapat menerapkan aplikasimu di server dan menyiapkan sertifikat SSL, tetapi untuk demo saya akan tetap menggunakan ngrok. Buka Halaman Unduh  dan klik tombol unduh yang sesuai dengan sistem operasi kamu.

Jangan lupa jalankan server laravel php artisan serve terlebih dahulu.

Setelah itu jalankan ngrok dengan perintah ./ngrok http . Ubah sesuai port yang kamu gunakan di laravel.

Hubungkan bot ke telegram

Langkah terakhir adalah menautkan aplikasi kita ke Telegram Bot yang kita buat sebelumnya dan untuk melakukan itu kita akan membuat permintaan POST ke URL ini dan meneruskan URL yang dihasilkan ngrok untuk kita:

https://api.telegram.org/bot{TOKEN}/setWebhook

Kamu bisa melakukan ini melalui Postman atau CURL dengan menjalankan perintah ini:

curl -X POST -F 'url=https://{YOU_URL}/botman' https://api.telegram.org/bot{TOKEN}/setWebhook

Jika kalian melakukannya dengan benar, kalian akan menerima respon JSON yang tepat ini:

{
    "ok": true,
    "result": true,
    "description": "Webhook was set"
}

Ubah file VerifyCsrfToken

Setelah berhasil memberikan menghubungkan bot dengan telegram, kita HARUS menambahkan /botman pada file app/Http/Middleware/VerifyCsrfToken.php.

Karena jika tidak diubah maka system akan merespond 419 unknown status.

Berikut cuplikan file VerifyCsrfToken 

Test di Telegram

Berikut adalah hasil akhir dari tutorial ini

 

Link Demo

Live Demo : http://t.me/hadits_id_bot

Yap, kita sampai sini kita sudah berhasil bagaimana caranya membuat bot telegram menggunakan botman pada laravel 8.

Cukup sekian ya teman-teman, semoga artikelnya membantu.

Apabila artikel ini membantu kamu, dan jika kamu memiliki sedikit rezeki, mohon dukungannya dalam bentuk segelas kopi melalui URL dibawah ini:

Last Updated: Minggu, 21 Mei 2023 11:07 GMT+7

Comments