Membuat Line Bot menggunakan Java (Spring Boot)

Axellageraldinc Adryamarthanino
8 min readApr 11, 2018

--

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 :

  1. Sudah menginstall JDK di laptop/komputer kamu → Download JDK
  2. Sudah menginstall IDE yang bisa untuk coding java (kalau aku pakai intelliJ IDEA) → Download intelliJ IDEA
  3. 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.

Klik pada Create New Project
Pilih Spring Initializr (pastikan kamu terkoneksi ke internet ya). Lalu next.
Isikan kurang lebih sama dengan di atas. Lalu next.
Centang Web. Lalu next.
Pilih project location (tempat menyimpan project). Aku sarankan pilih tempat menyimpan project yang directory-nya gak pakai spasi.
*Jika muncul dialog Import Module from Gradle, isikan seperti gambar di atas. NB : Centang juga bagian Use auto-import
Tambahkan 4 baris code di atas pada file build.gradle

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.

Masuk pada file MainApplication-nya dan pastikan code kalian di class tersebut sama seperti gambar di atas

Code lengkapnya kayak gini :

PASTIKAN CODE-MU UDAH SAMA KAYAK CODE DI ATAS BARU LANJUT KE GAMBAR DI BAWAH INI

Nah sekarang samakan code-mu menjadi seperti gambar di atas. Code lengkap ada di bawah.

Berikut code lengkapnya (jangan bingung, karena di bawah nanti akan dijelaskan sedikit demi sedikit mengenai detail code-nya) :

Penjelasan per bagian code

Bagian 1
  • 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”.
Bagian 2
  • 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 3
  • 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 :

  1. Konfigurasi Line Bot pada Line Developer Website
  2. Konfigurasi Line Bot pada project java kita
  3. 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

  • Klik tombol Plus (+) lalu tambahkan Provider baru, langkah2nya seperti ini
Isikan namamu di bagian Provider name
Klik tombol Create
Klik pada tombol Messaging API
Isi informasi-informasi yang dibutuhkan.
PENTING!!!! Pada bagian Plan wajib klik yang FREE. Untuk Category dan Subcategory bebas diisi apa tapi aku sarankan isi seperti di atas aja. Lalu isi email address yang aktif.
Centang keduanya dan klik Create. Jika ada error, periksa kembali inputan-inputan yang ada, bisa saja melebihi karakter, tidak memenuhi ketentuan, dsb.
  • 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

Buat file baru pada root directory project-mu
Beri nama Procfile (tanpa extension apapun)

Isikan file Procfile yang sudah dibuat barusan dengan code berikut :

Buat file baru pada folder resources
Beri nama file tersebut application.yml

Isi file application.yml dengan code berikut :

  • Ganti tulisan ‘channel token punyamu’ dengan channel token yang ada di dashboard Line Developer mu.
Yang aku coret-coret merah itu adalah channel-token
  • Ganti channel-secret dengan channel secret yang ada di dashboard website Line Developer.
Yang aku tutupi merah itu adalah channel-secret

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
Klik pada tombol Create New App
Isikan app-name nya sesuai yang kamu mau, jangan sama kayak di atas ya karena pasti ditolak oleh Heroku karena app-name itu udah aku pake
Klik pada tab Deploy

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

Klik tab Settings
  • Scroll ke bawah dan kamu akan menemukan ini
Fokus pada bagian Domain
  • 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
Hasilnya Success setelah klik Verify

9. SELESAI! Sekarang add BOT mu dan mainkan!

  • Buka website Line Developer dan scroll sampai mentok ke bawah maka akan ketemu bagian ini
Scan aja QR-CODE itu lewat Line smartphone dan add bot mu.
  • Sekarang BOT mu seharusnya sudah bisa dipakai. Enjoy!
Line BOT terjujur sepanjang masa. hehehe.

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
Klik Restart all dynos
  • 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

--

--

Responses (4)