Membuat Line Bot menggunakan Java (Spring Boot)
1. Greeting
Hai semuanya, salam kenal aku Axell mahasiswa IT UGM. Beberapa dari kalian mungkin sudah tahu ya ada LINE BOT yang namanya Asisten LJ. Untuk yang belum tahu, mending segara add aja BOT-nya, ID-nya : @doy7181p (pakai @). BOT-nya bisa diinvite di grup juga kok untuk main bareng temen-temen. Untuk lihat fitur2nya apa aja nanti chat aja /fitur trus Asisten LJ bakal ngasih tahu fitur2 apa aja yg bisa dipakai. DIJAMIN SERU!
Nah disini aku sebagai perwakilan dari developer Asisten LJ mau share caranya membuat Line Bot yang “serupa” dengan Asisten LJ, tepatnya di bagian fitur Apakah.
Sebelum kita mulai, siapkan dulu bantal, guling, selimut, kopi, cemilan, dan pikiran-pikiran positif yang ada karena tutorial ini akan sangat panjang karena aku berusaha kasih penjelasan yang sedetail mungkin supaya kalian yang baca bisa paham :)
Now, let’s begin!
2. Yang harus dimiliki
Untuk bisa membuat LINE BOT ini, kamu harus :
- Sudah menginstall JDK di laptop/komputer kamu → Download JDK
- Sudah menginstall IDE yang bisa untuk coding java (kalau aku pakai intelliJ IDEA) → Download intelliJ IDEA
- Sudah menginstall heroku CLI di laptop/komputer → Install heroku CLI
Kalau udah punya hal-hal di atas, langsung aja lanjut ke tahap selanjutnya!
3. Membuat Line Bot di Java (Spring Boot Framework)
Nah, untuk saat ini kita buat dulu ya project nya. Caranya ikuti gambar-gambar di bawah ini.
Code nya adalah ini :
4 baris code itu adalah dependency dari Line BOT. Jadi kalau kamu mau buat Line BOT di java, kamu harus nambahin 4 dependency itu untuk dapat menggunakan fungsi-fungsi untuk membuat Line BOT yang disediakan dari pihak Line Corporation.
Code lengkapnya kayak gini :
PASTIKAN CODE-MU UDAH SAMA KAYAK CODE DI ATAS BARU LANJUT KE GAMBAR DI BAWAH INI
Berikut code lengkapnya (jangan bingung, karena di bawah nanti akan dijelaskan sedikit demi sedikit mengenai detail code-nya) :
Penjelasan per bagian code
- Method di atas itu berfungsi untuk meng-handle chat yang masuk.
- Baris ke-3 itu berfungsi untuk mengambil seluruh chat yang diinputkan oleh user dan dijadikan lowercase. Misal chat yang masuk adalah “Apakah saya tampan?” maka akan menjadi → “apakah saya tampan?”
- Baris ke-4 itu berfungsi untuk memecah chat user menjadi per kata. Maka nanti akan menjadi seperti ini → [“apakah”, “saya”, “tampan”]
- Baris ke-5 berfungsi untuk melakukan pengecekan, apakah kata pertama dari chat user itu adalah kata “apakah”, jika ya, maka statement didalamnya akan dieksekusi
- Baris ke-6 memanggil fungsi getRandomJawaban() untuk memperoleh hasil/jawaban berupa “Ya” atau “Nggak” dari sistem random
- Baris ke-7 berfungsi untuk memperoleh reply token dari chat user. Jadi, supaya BOT kita dapat membalas chat user, BOT harus tahu reply token-nya dulu. Nah disinilah kita dapat reply token-nya.
- Baris ke-8 berfungsi untuk membalas chat user dengan jawaban “Ya” atau “Nggak”.
- Method di atas berfungsi untuk menghasilkan jawaban berupa “Ya” atau “Nggak”
- Baris ke-3 itu kita melakukan random integer.
- Baris-4 melakukan pemeriksaan apakah hasil dari random tadi itu berupa bilangan genap atau ganjil dengan cara diperiksa modulusnya.
- Apabila hasil random berupa bilangan genap, maka jawaban adalah “Ya”.
- Apabila hasil random berupa bilangan ganjil, maka jawaban adalah “Nggak”.
- Bagian di atas berfungsi untuk memerintah BOT kita untuk membalas chat user dengan jawaban “Ya” atau “Nggak” dari hasil random sebelumnya
- Baris ke-2 kita mendefinisikan sebuah variabel bertipe TextMessage, dimana TextMessage ini adalah pesan yang akan kita kirimkan nanti (dalam hal ini pesannya adalah “Ya” atau “Nggak”, didapatkan dari parameter method ini)
- Baris ke-4 sampai baris ke-6 adalah fungsi untuk melakukan replyMessage dengan reply token yang sudah kita dapatkan sebelumnya dan TextMessage yang sudah kita definisikan tadi.
4. Membuat Line Bot SELESAI!!!
Yeay!!! Line Bot kita sudah selesai dibuat!!! But, wait! Terus caranya supaya Line BOT kita bisa dipakai gimana? Nah untuk itu, kita harus lakukan :
- Konfigurasi Line Bot pada Line Developer Website
- Konfigurasi Line Bot pada project java kita
- Deploy Line Bot ke Heroku
Sip, mari kita lakukan step by step.
Sabar ya, memang ini semua tidak semudah yang dibayangkan :’)
6. Konfigurasi Line Bot pada Line Developer Website
- Lakukan login ke website Line Developer → https://developers.line.me/en/
- Jika sudah login, akan muncul page seperti di bawah ini
- Klik tombol Plus (+) lalu tambahkan Provider baru, langkah2nya seperti ini
- Jika sudah di-create. Maka akan muncul halaman seperti 2 gambar di bawah ini.
- Klik tombol “Issue” pada bagian yang dilingkari merah. Jika disuruh pilih angka, pilih saja 0. Setelah itu akan muncul tulisan pada bagian “Channel access token (long-lived) di sebelah kiri tombol itu.
- Selanjutnya, pada bagian Allow bot to join group chats, ganti menjadi Enabled
- Lalu, pada bagian Auto-reply Messages ganti menjadi Disabled. Kenapa? Ya karena kita kan maunya BOT kita me-reply user sesuai keinginan kita (dalam hal ini berupa “Ya” atau “Nggak”), bukan karena auto reply bawaan dari Line, makannya di-disable aja.
5. Konfigurasi Line Bot pada project java kita
Isikan file Procfile yang sudah dibuat barusan dengan code berikut :
Isi file application.yml dengan code berikut :
- Ganti tulisan ‘channel token punyamu’ dengan channel token yang ada di dashboard Line Developer mu.
- Ganti channel-secret dengan channel secret yang ada di dashboard website Line Developer.
7. Deploy Line Bot ke Heroku
- Pergi ke website Heroku
- Buat akun dulu disitu kalau belum punya akun, kalau udah punya akun, langsung login aja
- Kalau udah login, akan muncul halaman kayak gini
Scroll ke bawah dan kamu akan ketemu bagian ini
- Pada saat heroku login, kamu akan dimintai email address dan password. Isikan email address dan password sesuai dengan yang kamu pake untuk login ke website Heroku, lalu tekan enter
- Lalu setelah itu ketikkan command cd my-project/ → dimana ‘my-project’ disini adalah direktori dari project line bot mu tadi. Misal lokasi project line bot mu ada di direktori ‘/Users/kunyuk/bot’ maka command nya menjadi cd /Users/kunyuk/bot
- Ketika sudah di dalam direktori project line bot mu, ketikkan command git init, tunggu sampai proses selesai
- Lalu ketikkan heroku git:remote -a xxxxx → dimana xxxxx adalah sesuai dengan yang ditampilkan di dashboard heroku-mu. Punyaku aku sensor makannya aku ganti jadi xxxxx
- Ketik ‘git add .’ (tanpa petik) lalu enter
- Ketik git commit -am “first commit”
- Ketik git push heroku master, tunggu hingga proses selesai
- Kalau proses udah selesai. Lakukan tahap selanjutnya
8. Setting TERAKHIR
- Scroll ke bawah dan kamu akan menemukan ini
- Nah di bagian Domain kamu akan lihat sebuah URL. Nah copy URL itu (‘https://’ tidak usah ikut di-copy).
- Buka dashboard Line Developer mu lagi
- Scroll ke bawah maka akan ketemu bagian ini
- Pada bagian Use webhooks, ganti menjadi Enabled
- Pada bagian Webhook URL, paste-kan link yang kamu copy dari website Heroku tadi, lalu di belakangnya tambahin /callback.
- Setelah itu klik tombol Verify, dan pastikan hasilnya seperti ini
9. SELESAI! Sekarang add BOT mu dan mainkan!
- Buka website Line Developer dan scroll sampai mentok ke bawah maka akan ketemu bagian ini
- Sekarang BOT mu seharusnya sudah bisa dipakai. Enjoy!
10. PERINGATAN!!!
Oh ya, karena kita menggunakan Heroku versi Free. Maka ada beberapa kekurangan, salah satunya adalah server line bot akan mati jika line bot tidak digunakan selama 30 menit. Nah, jika hal ini terjadi, maka line bot kita tidak akan merespon apabila kita chat.
Lalu cara ngakalinnya gimana? Gini caranya ngakalin :
- Masuk ke dashboard Heroku
- Setelah itu klik View logs
- Ketika sudah ada tulisan State changed from starting to up. Itu tandanya Line BOT mu sudah “hidup kembali” dan bisa digunakan.
Lalu pertanyaan terbesarnya adalah :
TERUS GIMANA CARANYA SUPAYA LINE BOT KITA BISA HIDUP TERUS KAYAK ASISTEN LJ, GAK HARUS RESTART-RESTART SERVER KALAU UDAH 30 MENIT
Asisten LJ deploy-nya gak di Heroku, tapi di server pribadi. Lho kok bisa? Ya bisa dong, Asisten LJ kan disponsori oleh Daiserver.
Nah kalo kamu mau supaya Line BOT mu bisa UP 24/7, pakailah Server dari daiserver.
Sekian! Kalau ada pertanyaan, bisa email ke asistenlj@ljbrotherhood.com atau comment di bawah! :)
Download project Line Bot
https://www.dropbox.com/sh/gdanjfoth5a2oh9/AAAib20kDPjBk0I2rFF7A5g9a?dl=0