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.
Table of Content
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.

Comments