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

25 October 2017
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 GPT-4: Model Bahasa Alami Terbaru dari OpenAI

10 Cara Mudah Meningkatkan Kapasitas RAM pada Android

Tencent Bersiap Membuat Chatbot AI Sebagai Saingan ChatGPT

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

Trentech.id

Trentech.id

Tren Teknologi Indonesia

Related Posts

gpt-4

Mengenal GPT-4: Model Bahasa Alami Terbaru dari OpenAI

14 March 2023
1.4k

OpenAI adalah salah satu perusahaan teknologi terkemuka yang fokus pada pengembangan kecerdasan buatan (AI). Salah satu produk utama OpenAI adalah...

tambah kapasistas ram

10 Cara Mudah Meningkatkan Kapasitas RAM pada Android

13 March 2023
1.4k

Android telah menjadi platform paling populer untuk perangkat seluler. Terdapat berbagai macam merek dan tipe smartphone Android di pasaran saat...

tencent buat saingan chatgpt

Tencent Bersiap Membuat Chatbot AI Sebagai Saingan ChatGPT

6 March 2023
1.4k

Teknologi kecerdasan buatan (AI) kini semakin populer dan banyak digunakan di berbagai sektor, termasuk di industri chatbot. Berbagai perusahaan berlomba-lomba...

Login
Please login to comment
0 Comments
Inline Feedbacks
View all comments

Terpopuler

  • contoh pitch deck

    8 Contoh Pitch Deck Startup yang Bisa Kamu Pelajari

    1011 shares
    Share 404 Tweet 253
  • Kumpulan Materi Kuliah Jurusan Teknik Informatika dan Ilmu Komputer

    354 shares
    Share 142 Tweet 89
  • Mengenal Lean Product Development dan Berbagai Keunggulannya

    139 shares
    Share 56 Tweet 35
  • Yuk Ketahui Sejarah Perkembangan Aplikasi Chat di Seluruh Dunia

    153 shares
    Share 61 Tweet 38
  • Ternyata Beginilah Cara Kerja Powerbank

    172 shares
    Share 68 Tweet 43
  • Inilah 15 Skin Paling Keren di Mobile Legends

    171 shares
    Share 68 Tweet 43
  • Google Buat Email Lebih Dinamis Dengan AMP Untuk Email

    138 shares
    Share 55 Tweet 35
  • EV Hive dan Pemprov DKI Jakarta Luncurkan Co-Working Space JSCHive

    111 shares
    Share 44 Tweet 28
  • 4 Tip Agar Rapat Tim Kerja Memberi Hasil Luar Biasa

    118 shares
    Share 47 Tweet 30
  • Bekerja di Bidang Otomotif, Menjanjikan Penghasilan Besar! Berminat?

    139 shares
    Share 56 Tweet 35

About . Contact . Partnership

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

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
wpDiscuz