Skip to main content

How to generate smart reply using Firebase ML Kit Android Studio 2020 (Complete Guide) With Source Code

In this post, we're going to generate a reply on analyzing previous messages in android studio using the ml kit of the firebase.


This is the output after you are done with all step:


So, now make it happen :)

Step 1: Add Firebase to your android project:
I recommend you to see how to add firebase to the android project in 5minutes to know how to add it or if you already add it then you can move on to 2nd Step.

Step 2: Add this dependency for the ml kit android libraries to your app-level build.gradle file:
  implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
  implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7'


as shown below and then click on Sync Now:


Step 3: Design the layout of the activity:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">
    <EditText        android:id="@+id/remote_message"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_above="@+id/button"        android:layout_centerInParent="true"        android:layout_margin="30dp"        android:padding="10dp"        android:text="Hi there" />
    <Button        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="Make Reply" />
    <TextView        android:id="@+id/reply_message"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/button"        android:layout_centerInParent="true"        android:layout_margin="30dp"        android:textColor="@android:color/black"        android:textSize="15sp" />

</RelativeLayout>

as shown below:



Step 4: Generate Reply:

For every remote message by a remote user( user on the other side), we're going to generate three most appropriate reply and the local user can select one of them

Declare all variable and call generateReply() method on button click:


To generate smart replies, pass the ml kit a chronologically ordered List of FirebaseTextMessage objects, with the earliest timestamp first. When the user sends a message, add the message and its timestamp to the conversation history.

As a demo purpose, we generate a smart reply from only one message but in real application add every message of conversation to the list and not just the last one.

 So now to generate smart replies,
1. Pass ML kit a chronologically ordered list of FirebaseTextMessage objects, with the earliest timestamp first (the first message first add) 
2. Get an instance of FirebaseSmartReply and pass the conversation history to its suggestReplies() method
as shown below-

 private void generateReply() {
// when the user sends a message(local user) add the sender message and its timestamp to the list//conversation.add(FirebaseTextMessage.createForLocalUser("heading out now", System.currentTimeMillis()));
// when user receives a message(remote user) add the message, its timestamp,// and the sender's user ID to the list        conversation.add(FirebaseTextMessage.createForRemoteUser(receiverMessage.getText().toString(),                System.currentTimeMillis(), "user0"));

//To generate smart replies to a message, get an instance of FirebaseSmartReply and// pass the conversation history to its suggestReplies() method:        FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
        smartReply.suggestReplies(conversation)
                .addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
                    @SuppressLint("SetTextI18n")
                    @Override                    public void onSuccess(SmartReplySuggestionResult result) {
                        if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                            replyText.setText("Language not supported");                        } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
//If the operation succeeds, a SmartReplySuggestionResult object is passed to the success handler.// This object contains a list of up to 3 suggested replies, which you can present to your user 
replyText.setText("Suggestions: " + "\n\n"); for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyMessage = suggestion.getText(); replyText.append("*" + replyMessage + ",\n\n"); } } } }); }

 Note that ML Kit might not return results if
1. The model isn't confident in the relevance of the suggested replies,
2. The input conversation isn't in English,
3. The model detects sensitive subject matter

Now, run the app :)

If everything is done correctly then you see the excepted output.

You can see the full source code at GitHub.

If you face any problem or have any suggestion please comment it down we love to answer it.

Comment down what next topic you need a guide on? or Drop a message on our social media handle

 Happy coding and designing : )



Comments

Popular posts from this blog

Make Barcode Scanner App Using Firebase ML Kit In Android Studio 2020(Complete Guide) With Source Code | Step By Step Tutorial

In this post, we're going to develop an android app that scans the barcode from the image and produce the required output. This is the output after doing all the steps: You can create your own QR Code from a  barcode generator  with custom data like putting a URL or a mail message etc. The above one is a simple text QR Code. The highlighted text in the above screenshot is the same output you get if you scan the above QR Code with Google Lens. As I show it below: So, Now let's make it. Step 1: Add Firebase to your android project: I recommend you to see  how to add firebase to the android project in 5minutes  to know how to add it or if you already add it then you can move on to 2nd Step.    Step 2: Add this dependency for the ml kit android libraries to your app-level build.gradle file: implementation 'com.google.firebase:firebase-ml-vision:24.0.1' implementation 'com.google.firebase:firebase-ml-vision-barcode-model:16.0.2' ...

How To Implement AutoML Vision Edge Of Firebase ML Kit In Android Studio 2020 | 5 Simple Step | Step By Step Tutorial

Today, In this post we're going to implement the AutoML vision edge of firebase ml kit in a very 5 simple steps in Android Studio. This is how the app work after doing all the steps:                               Step 1: Add Firebase to Android Project : If you have not added firebase to your android project then do it so I recommend you to go through the post how to add firebase within 5 min 2020 to the android project . Step 2: Download Flower - Image Dataset: We're using the flower-image dataset from TensorFlow  to create the image classification or labeling model and after training this model you can use it for an on-device image labeling in your app. In our case, we are using the 5 labels or type daisy, dandelion, roses, sunflowers, and tulips of flower and the model identifies one of the labels for an image. Download the flower-image dataset. Step 3: Upload and Train Dataset: ...

Select (or Capture) and Crop Image In Android Studio 2020 (Complete Guide) | Step By Step Guide

In, this post we're going to make an app that captures or selects an image and then displays in an image view using a third party library - android image cropper by ArthurHub at Github. Step 1: Add Dependency : Open android studio and paste this dependency in app-level build.gradle file as shown below: implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.+' and then click on Sync Now. Step 2: Design the main activity layout : Add a Button and an ImageView to select and display image respectively as shown below: Step 3: Modify AndroidMainfest.xml by adding the CropImageActivity : <activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity" android:screenOrientation="portrait" android:theme="@style/Base.Theme.AppCompat"/>  as shown below- Step 4: Open CropImageActivity on Click of a button : Step 5: Lastly, override the On Activity Result and update ImageView : ...



DMCA.com Protection Status

Copywrite © 2021 The MindfulCode