How-tos

Build a voice-enabled Chatbot in minutes using Watson Java and Android SDKs

ChatBot is an Android native app powered by IBM Watson Conversation and Text-to-Speech services on IBM Bluemix (our cloud platform for building, running, and managing apps and services using open standards).

watbot mobile application image

Import the code in Android Studio

Android Studio is the Official IDE for Android. It provides the fastest tools for building apps for every type of Android device.

Clone the GitHub repository and import the code in Android Studio:

git clone https://github.com/IBM-Bluemix/chatbot-watson-android.git
  • Start Android Studio and close any open Android Studio projects.
  • From the Android Studio menu, click File > New > Import Project.
  • Alternatively, from the Welcome screen, click Open an existing Android Studio Project.

  • Navigate to the folder where the code (chatbot-watson-android) is downloaded and click OK.

Once the gradle build is successful, Click Project on the left pane and navigate to Gradle Scripts -> build.gradle(Module: app) to check and add the dependencies.

Creation of Conversation Service

Watson Conversation combines a number of cognitive techniques to help you build and train a bot — defining intents and entities and crafting dialog to simulate conversation.

Getting started

Before you can start using the Conversation service, log in to IBM® Bluemix® and create a service instance.

  1. Log in to Bluemix and navigate to the Conversation service:
    • Don’t have Bluemix account? Sign up to create a free trial account.
    • Have a Bluemix account? Use this link.
  2. In the Service name field, type a unique name for your new instance of the Conversation service. Check the “Pricing Plans” for data limits for the Conversation service.
  3. Click Create. You’ll see details about your new instance in the “Service Details” page.

Creating a Workspace

Use the Conversation tool to create workspaces by either making a new workspace from scratch or by importing a workspace from a JSON file. You can also duplicate an existing workspace within the same service instance.

  1. If the Service Details page is not already open, click your Conversation service instance on the Bluemix console. (When you create a service instance, the Service Details page displays.)
  2. On the “Service Details” page, scroll down to Conversation tooling and click Launch tool.
  3. Click Create to create a new workspace.
  4. Specify the details for the new workspace:
    • Name: A name no more than 64 characters in length. This value is required.
    • Description: A description no more than 128 characters in length.
    • Language: The language of the user input the workspace will be trained to understand. The service supports Brazilian Portuguese, English, French, Italian, and Spanish.
  5. Click Create. The new workspace is created and now appears as a tile on the Workspaces page.

Creating an intent

Use the Conversation tool to create intents. The number of intents and examples you can create in a single service instance depends on your Conversation service plan.

Create some intents.

  1. In the Conversation tool, open your workspace and click the Intents tab.
  2. Click Create new.
  3. In the Intent name field, type a descriptive name for the intent. The intent name can contain letters (in Unicode), numbers, underscores, hyphens, and dots. Intent names cannot contain spaces and must not exceed 128 characters. The following are examples of intent names:
    • #weather_conditions
    • #pay_bill
    • #escalate_to_agent

    Tip: Don’t include the character # in the intent names when you create them in the Conversation tool.

  4. In the User example field, type the text of a user example for the intent. An example can be any string up to 1024 characters in length. The following might be examples for the #pay_bill intent:
    • I need to pay my bill.
    • Pay my account balance.
    • Make a payment.

    Important: Intent names and example text can be exposed in URLs when an application interacts with the service. Do not include sensitive or personal information in these artifacts.

    Press Enter or click + to save the example.

  5. Repeat the same process to add more examples. Provide at least five examples for each intent. The more examples you provide, the more accurate your application can be.

    Screen

  6. When you have finished adding examples, click Create to finish creating the intent.

Results

The intent you created is added to the Intents tab, and the system begins to train itself on the new data.

You can click any intent in the list to open it for editing. You can make the following changes:

  • Rename the intent.
  • Delete the intent.
  • Add, edit, or delete examples.
  • Move an example to a different intent.

To move an example, select the example by clicking the check box and then click Move to.

“Screen

Testing your intents

After you have finished creating new intents, you can test the system to see if it recognizes your intents as you expect.

  1. In the Conversation tool, click the icon
    “Ask.
  2. In the Try it out panel, enter a question or other text string and press Enter to see which intent is recognized. If the wrong intent is recognized, you can improve your model by adding this text as an example to the correct intent.Tip: If you have recently made changes in your workspace, you might see a message indicating that the system is still retraining. If you see this message, wait until training completes before testing:

    Screen

    The response indicates which intent was recognized from your input.

    Screen

  3. If the system did not recognize the correct intent, you can correct it. To correct the recognized intent, click the displayed intent and then select the correct intent from the list. After your correction is submitted, the system automatically retrains itself to incorporate the new data.

    Screen

    If your intents are not being correctly recognized, consider making the following kinds of changes:

    • Add the unrecognized text as an example to the correct intent.
    • Move existing examples from one intent to another.
    • Consider whether your intents are too similar, and redefine them as appropriate.

Creating an entity

Use the Conversation tool to create entities. The number of entities, entity values, and synonyms you can create a single service instance depends on your Conversation service plan.

  1. In the Conversation tool, open your workspace and then click the Entities tab.
  2. Click Create new.
  3. In the Add the entity name field, type a descriptive name for the entity.The entity name can contain letters (in Unicode), numbers, underscores, and hyphens. For example:
    • @location
    • @menu_item
    • @product

    Tips:

    • Don’t include the character@ in the entity names when you create them in the Conversation tool.
    • Entity names can’t contain spaces or be longer than 64 characters. And entity names can’t begin with the string sys- which is reserved for system entities.
  4. In the Value field, type the text of a possible value for the intent. An entity value can be any string up to 64 characters in length. Important: Don’t include sensitive or personal information in entity names or values. The names and values can be exposed in URLs in an app.
  5. In the Synonyms field, type any synonyms for the entity value. A synonym can be any string up to 64 characters in length. Press Enter to save each synonym.Screen
  6. Click + and repeat the process to add more entity values.
  7. When you are finished adding values and synonyms, click Create.

Building a Dialog

The dialog component of the Conversation service uses the intents and entities that are identified in the user’s input to gather required information and provide a useful response. Your dialog is represented graphically as a tree; create a branch to process each intent that you define.

Post branching Intents and entities, this is what my Conversation Dialog on Bluemix looks like:

Additionally to Enable Text to Speech

  • Create a Watson Text to Speech(TTS) service on Bluemix.
  • Navigate to Service Credentials tab and click on “View Credentials.”
  • On Line 68 of MainActivity.java, replace the username and password placeholders with the TTS service credentials.
service.setUsernameAndPassword("Your Text-to-Speech service username," "Your Text-to-Speech password");
  • Build and Run your app.
  • Now when you TAP on any message, the text will be heard via a Voice (Voice.EN_LISA). You can change the voice formats in the code (Lines 82-84 0f MainActivity.java)

Note: The required Gradle entries for TTS is already included in the build.gradle file

compile 'com.ibm.watson.developer_cloud:text-to-speech:3.5.3'
compile 'com.ibm.watson.developer_cloud:android-sdk:0.2.1'

To learn more about Conversation and Other Watson Cognitive Services, click here.

Don’t stop here! Keep coding and using Bluemix.

Share this post:


idris

I have downloaded your project from github,
i did all of the steps specified in readme.md,
but still what i get is a gradle sync error.

Help me out!
How to resolve it?

This is how it looks like:

Error:Unable to start the daemon process: could not reserve enough space for object heap.
Please assign more memory to Gradle in the project’s gradle.properties file.
For example, the following line, in the gradle.properties file, sets the maximum Java heap size to 1,024 MB:
org.gradle.jvmargs=-Xmx1024m
Read Gradle’s configuration guideRead about Java’s heap size


    Vidyasagar

    Hi Idris,

    As suggested, the issue should have resolved after increasing the heap size as suggested in the error.

Comments are closed.

More How-tos Stories

Hack your Data Warehouse by Using Notebooks

Notebooks are great for doing exploratory analytics iteratively over large and complex data sets. The emphasis here is on iterative exploration -- letting you construct and run queries interactively over and over, building on previous queries and their results, until the exploration yields the insights you are after. Good news for dashDB users is that you too can now easily leverage the power of IPython or Jupyter notebooks to hack data in your warehouse interactively.

Continue reading

Bluemix Continuous Delivery is now live

IBM Bluemix Continuous Delivery has graduated from a beta to a live service! Your teams can now use end-to-end solutions to deliver innovative new services to users.

Continue reading

How to Deploy IBM Support Assistant 5 to Store and Analyze Diagnostic Data

When you have a problem with an app you’ve deployed in IBM Bluemix, you want it as easy as possible to diagnose and resolve the problem. Ideally, you’d automatically capture the failure data, and analyze it in Bluemix, without having to download it. One way to do this is to deploy IBM Support Assistant Team Server as a Bluemix application.

Continue reading