Trentech.id
No Result
View All Result
  • Login
  • Register
  • Terbaru
  • Berita
  • Startup
  • Bisnis
  • Learn
  • Games
  • Blockchain
  • Gadget
  • Terbaru
  • Berita
  • Startup
  • Bisnis
  • Learn
  • Games
  • Blockchain
  • Gadget
Trentech.id
No Result
View All Result
  • Terbaru
  • Berita
  • Startup
  • Bisnis
  • Learn
  • Games
  • Blockchain
  • Gadget

Cara Mudah Membangun Android Realtime Chatbot dengan Dialogflow, RxJava2 dan Kotlin

19 February 2018
in Learn
Cara Mudah Membangun Android Realtime Chatbot dengan Dialogflow, RxJava2 dan Kotlin
1.5k
VIEWS
Berikan rating

Kebutuhan sebuah sistem yang sifatnya otomatis sangatlah diperlukan untuk saat ini. Banyak banget sistem yang awalnya konvensional sekarang sudah dirubah menjadi terkomputerisasi dan otomatis. Hal ini menyebabkan kebutuhan akan orang — orang IT yang berkualitas sangatlah banyak.

Contoh dasar yang sangat berperan adalah chatbot. kenapa sih milih chatbot? alasannya adalah kemampuan Customer service menjawab pertanyaan user di sesi chat itu memerlukan waktu yang cukup ada jeda, kemudian ditambah lagi dengan frekuensi jumlah pertanyaan user yang sama itu membuat CS pastinya merasa bosen untuk menjawab hal yang sama dengan pertanyaan yg sifatnya mirip.

Baca lagi

Mengenal Konsep Active Learning, Masa Depan Generatif AI

Mengenal GPT-4: Model Bahasa Alami Terbaru dari OpenAI

10 Cara Mudah Meningkatkan Kapasitas RAM pada Android

Solusi dari masalah diatas adalah kita membuat sebuah chatbot, dimana user mengajukan pertanyaan kepada bot yang telah dibuat dan bot akan memberikan jawabannya secepat mungkin. trus itu mungkin ada pertanyaan dari kalian gimana cara bikin botnya ? kan harus ada pengetahuan machine learning ? jawabannya adalah “Google”. yap google, google punya service untuk NLP (Neuro Linguistic Programming) namanya Dialogflow yang sebelumnya bernama API.AI. jadi ini membuat gua ( Mobile Developer ) menjadi lebih instant membuat sebuah chatbot dibanding harus membuatnya from scratch untuk machine learningnya.

Chatbot app flow on device

Sebelum masuk ke dalam getting startednya, gua mau jelasin dulu ke kalian gimana sih alurnya ?, Diagram flow diatas itu alur chatbot yang akan kita buat secara simple. jadi pertama kali user akan mengirimkan sebuah pesan dari devicenya ke firebase yang kemudian diteruskan ke dialogflow. kenapa harus di simpan ke firebase db ? jawabannya supaya kita ada historynya user nanya apa dan botnya nnti jawab apa.

Setelah itu device user akan mendapatkan response dari dialogflow terkait dari pertanyaan yang dibuat oleh user. saat itu juga device melakukan state penyimpanan response dari dialogflow ke dalam firebase database. jadi sebenarnya device ini hanya berpacu kepada data yang disimpan di dalam firebase database (hasil sebelum dan sesudah olahan dari dialog flow).

oke kalau teman-teman sudah kebayang dari gambaran sistem chatbot yang kita mau coba buat. ada beberapa requirement yang harus teman- teman penuhi biar lancar urusan membuat chatbotnya nih. diantaranya :

  1. Buatlah akun console firebase dulu serta buat projectnya https://console.firebase.google.com
  2. Buatlah project di dialogflow dan arahkan ke project firebase yang kita punya sebelumnya https://dialogflow.com/
  3. Create agent di dialogflow
  4. Masukkan data — data yang diperlukan ke dalam dialogflow ( Data training )
  5. Buat project android dan saatnya kita mulai.

Awal memulai project android studionya sangatlah mudah. tambahkan library dialogflow ke dalam project android kalian. jangan lupa menambahkannya di dalam app module ya gradlenya.

//Dialog Flow
implementation 'ai.api:libai:1.4.8'
implementation 'ai.api:sdk:2.0.7@aar'

Setelah kalian menambahkan libnya dialogflow ke dalam project kalian maka saat kalian coba sync akan ada error.

Error:Execution failed for task ‘:app:javaPreCompileDebug’.
> Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration.
 — log4j-core-2.2.jar (org.apache.logging.log4j:log4j-core:2.2)
 Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior. Note that this option is deprecated and will be removed in the future.
 See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.

Setelah ditelusuri kita harus menambahkan annotationProcessor pada library “implementation ‘ai.api:libai:1.4.8’” agar tidak terdeteksi error saat melakukan proses build. tambahkan seperti line code di bawah ini

implementation 'ai.api:libai:1.4.8'
annotationProcessor 'ai.api:libai:1.4.8'
implementation 'ai.api:sdk:2.0.7@aar'

Setelah kita menambahkan annotationProcessor masalah tersolved, namun masih ada 1 masalah lagi ini gua ngetesnya pake emulator android O sih belum coba versi dibawahnya jadi saat gua juga coba build and run appnya dia kena error kaya gini

java.lang.NoClassDefFoundError: org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup

untuk solve masalah ini kita harus menambahkan exclude module dari log4j di library “ai.api:libai:1.4.8”. jadi hasilnya akan seperti line code dibawah ini

//Dialog Flow
implementation('ai.api:libai:1.4.8'){
    exclude module: 'log4j-core'
}
annotationProcessor 'ai.api:libai:1.4.8'
implementation 'ai.api:sdk:2.0.7@aar'

Setelah library dialog flownya selesai kita setup. nah full setupnya dan tech yang dipake untuk project ini ada di gits ini ya

 

Sebelum masuk ke functionnya kita harus buat layoutnya dulu. ada beberapa layout yang kita butuhkan diantaranya :

  1. layout untuk item chat
  2. layout untuk main activitynya

A. Design App

Design UI

untuk membuat tampilan UI item chatnya seperti line code dibawah ini

 

untuk membuat tampilan main activitynya. kalian bisa contoh seperti line code dibawah ini

 

B. Core Function App

Secara logic untuk menampilkan sebuah list di android biasanya kita menggunakan RecyclerView dan RecyclerViewAdapter untuk handling setiap item dari chatnya. di app ini sedikit berbeda karena kita menggunakan Firebase Database untuk realtime chatnya jadi kita menggunakan FirebaseRecyclerAdapter yang akan dijadikan sebagai adapter.

setelah itu kita membuat adapternya terlebih dahulu dengan nama ChatAdapter.java. Hasilnya akan terlihat akan seperti dibawah ini

 

Setelah itu di dalam sebuah adapter terdapat viewholder untuk handling setiap yang tercreate didalam recyclerview. jadi kita buat lagi 1 file untuk chat view holdernya. hasilnya akan terlihat seperti line code dibawah ini

 

setelah ChatVH dan adapternya kita buat sekarang kita setup adapternya di activity yang sudah ada. kita configurasi dialog flownya terlebih dahulu.

//DialogFlow Setup
val mAiConfig = AIConfiguration(ACCESS_CLIENT_ID_DIALOG_FLOW,
        ai.api.AIConfiguration.SupportedLanguages.English,
        AIConfiguration.RecognitionEngine.System)
mAiService = AIDataService(mAiConfig)

maksud dari line code diatas adalah kita membuat sebuah AIConfiguration dimana kita masukkan ACCESS_CLIENT_ID, bahasa yang dibuat , dan AIConfigurationnya. setelah itu kita set di class AIDataService config yang kita buat tadi.

 

Potongan kode diatas adalah kita menset adapter dan new instance dari class chatadapter yang telah kita buat. jadi kalau di app ini gua memisahkan setiap chat user dengan bot menggunakan id dari user itu sendiri, sehingga kita membutuhkan sebuah query ke firebase db untuk menselect semua chat kita dengan bot yang idnya sama dengan id user.

Jika kalian bertanya dimana sih proses sending message dari device ke dialogflownya, contohnya seperti dibawah ini. saya buat menggunakan rxjava2.

Flowable.fromCallable {
    mAiRequest = AIRequest()
    mAiRequest.setQuery(message)
    mAiService.request(mAiRequest)
}  .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({data ->
            val result = data.getResult()
            val reply = result.getFulfillment().getSpeech()
            val chatMessageBot = ChatMessage()
            chatMessageBot.msgText  = reply
            chatMessageBot.msgUser = "bot"
            chatMessageBot.userId = mLoginSession.userID
            chatMessageBot.msgSubmittedAt = System.currentTimeMillis()
            mFirebaseDB.addChatMessage(chatMessageBot)
        },{ error ->
            Log.e(javaClass.name, error.message)
        })

jadi kita membuat ai request baru kemudian message yang kita buat akan masuk ke dalam query dari request tersebut. dari request tersebut akan dilanjutkan oleh aiservice yang telah kita konfigurasi sebelumnya. setelah itu seperti halnya kita hit sebuah REST API kita akan mendapatkan response dari dialogflow yang kita parsing ke dalam class yang kita butuhkan.

untuk menampilkan resultnya di chat. maka kita perlu mengirimkan repsonse dari chatbot tersebut ke firebase. hal ini dibuat seperti ini karena device kita untuk data chatnya melisten ke firebase. sehingga apabila terjadi perubahan di database maka firebasekan akan trigger chat kita dan device akan melakukan query kembali ke firebase db hingga hasilnya ditampilkan ke chat list.

Jika teman — teman merasa artikel ini bermanfaat jangan lupa untuk share dan tap clapnya ya :D. kalau ada pertanyaan silahkan komen aja. [md/ap]

Tags: androidbotchatbotdialogflowkotlinrealtime chatbotrxjava2
Previous Post

Kiat Sukses Membangun Startup untuk Founder Perempuan

Next Post

Ini Dia Beberapa Faktor yang Membuat Game Horor Menyeramkan

Related Posts

Curhatan Perempuan IT Satu-Satunya, Pasti Mengalami Derita Ini

Curhatan Perempuan IT Satu-Satunya, Pasti Mengalami Derita Ini

11 September 2023
1.6k

Kamu perempuan dan anak IT pasti sudah tidak asing hidup dengan dikelilingi banyak laki-laki baik itu di dunia pekerjaan, perkuliahan...

Ini Dia Tips Memulai Pemrograman dengan Python

Ini Dia Tips Memulai Pemrograman dengan Python

29 August 2023
1.4k

Python merupakan salah satu bahasa pemrograman yang populer di dunia kerja Indonesia. Selain itu di ranah akademik pun banyak akademisi...

Manfaat Belajar Bahasa Pemrograman untuk Kehidupan

7 Keterampilan Yang Harus Dimiliki Programmer Untuk 5-10 Tahun Ke Depan

29 August 2023
1.8k

Waktu terus berjalan, begitulah kehidupan. Kita sebagai programmer selalu dituntut untuk mengembangkan keterampilan di saat perkembangan industri TI terus berkembang...

Terpopuler

  • fitur flipper zero

    Apa Saja Fitur Flipper Zero?

    347 shares
    Share 139 Tweet 87
  • 8 Contoh Pitch Deck Startup yang Bisa Kamu Pelajari

    1349 shares
    Share 539 Tweet 337
  • Saham Kapal Induk: Apa Itu dan Apa Keuntungannya?

    321 shares
    Share 128 Tweet 80
  • Kumpulan Materi Kuliah Jurusan Teknik Informatika dan Ilmu Komputer

    464 shares
    Share 186 Tweet 116
  • Qlapa Gulung Tikar

    198 shares
    Share 79 Tweet 50
  • Cara Membeli Flipper Zero Indonesia

    114 shares
    Share 46 Tweet 29
  • Pengertian Valuasi Startup dan Cara Hitungnya pada Tahap Awal Bisnis

    177 shares
    Share 71 Tweet 44
  • Sarjana Komputer Tidak Bisa Coding? Apa Kata Dunia?

    209 shares
    Share 84 Tweet 52
  • Cara Remote Flipper Zero: Mengendalikan Perangkat dengan Mudah

    122 shares
    Share 49 Tweet 31
  • 5 Pokemon Terkuat dan Terfavorit

    195 shares
    Share 78 Tweet 49

About . Contact . Partnership . Google News

Trentech.id adalah situs yang menyajikan konten tentang startup, bisnis, game, event, hingga informasi pekerjaan. Trentech berusaha memberikan konten yang berkualitas untuk para pembacanya agar dapat menjadi rujukan utama mengenai dunia teknologi pada khususnya. Tim trentech terdiri dari orang – orang yang berkompeten dibidangnya, dan akan selalu mendukung karya – karya terbaik anak bangsa dengan memberikan kesempatan seluas-luasnya untuk para startup agar dapat publish karyanya di trentech.

Trentech ID

  • About
  • Contact
  • Partnership
  • Panduan Penulis
  • Privacy Policy
  • Sitemap

Tools

  • Harga Crypto Terbaru
  • Cek Ongkir
  • Cek Resi
  • Cek Domain
  • Login
  • Sign Up
About . Contact . Partnership . Google News

Welcome Back!

Sign In with Facebook
Sign In with Google
OR

Login to your account below

Forgotten Password? Sign Up

Create New Account!

Sign Up with Facebook
Sign Up with Google
OR

Fill the forms below to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In