"Loading..."

Chatbots to be built using Google Dialogflow or IBM Watson

C

hatbots are becoming pervasive, from the online banking transactions that use a chatbot to answer the frequently asked questions, to Facebook messenger bot that can be used to order a pizza. So what exactly is a Chatbot? Is it going to replace the human interface that brands have with their customers? Chatbots are context-aware data-driven conversational interfaces that can respond to user queries in natural language in real-time. On the question of whether chatbots are going to replace human interfaces? In the foreseeable future we don’t see that happening, what chatbots are going to do is bring to the table an ability for corporations to interact with users in a seamless manner without endless wait time and seamless first call resolution.

Some other questions that we have are- why do we need Chatbots? How to create one? We will take up all these questions one by one in this article. For an always-on enterprise, chatbots are one of the most cost efficient and easiest ways of communication with users.

For businesses, keeping in touch with customers and being responsive is extremely important and Chatbots can handle multiple users at a time, scale up the business, optimize the internal support, be an always available friend and many more; all of it in a human-like persona, language, and expression. Sounds Interesting? Great, but how to create one?

There are a number of competent AI software platforms like Amazon Lex, IBM Watson Assistant, ManyChat, Google’s Dialogflow, Microsoft Bot Framework and many more out there each having their own way of driving value. In this article, we will primarily focus on IBM’s Watson Assistant and Google’s Dialogflow, two very promising frameworks from renowned organizations. We will create a bot named Elina, which shall act as a digital concierge and help us in booking a room. For the concepts involved to create the sample bot, we will use both Watson and DialogFlow and simultaneously talk about the similarities and differences.



Identifying user messages

Every bot has to be trained with some predefined ways in which a user can ask a question to make it understand the user queries and intents. A bot recognizes input type based on the training phrases provided.

IBM Watson Assistant - Intents are the objects shown in the customer’s input. To create a new intent, go to the intents section click on “create new” and specify the intent name, description and examples of how a user can ask a question.

Google Dialogflow - Click on “add intent” button and specify the user says section. Each row resembles possible ways of asking a question.

The possible ways of asking to book a room may be like:

  • “I would like to book a suite for two from 25-2-19 to 30-2-19”
  • “I would like to book 3 suits for 4 people from 23-2-19”
  • “Book a room for me for 3 days”

Making the bot understand synonyms

An entity is a collection of synonyms of a word which helps the bot to find the meaning and context of the customer’s input. Training phrases of the intents should be mapped with entities to make the bot realize the intent it has to trigger.

Along with the functionality to create custom entities, Dialogflow and Watson assistant have their own pre-built system entities like location, number, date, etc. to help users train the bot.

IBM Watson has six categories of system entities which in total have 26 attributes. One great feature in Watson is that it also recommends the synonyms for the user-defined entity words.

Dialogflow is rich in pre-built system entities which helps to handle most of the common concepts. There are 2 categories, in total consisting of 10 entities. For enterprise edition, there are 10 categories which consist of more than 40 entities.

In the above example, in room-booking intent, the entities (“book”, “room”) are used to represent the intent and user name, dates ( and ) and numbers ( and ) are used to extract information.


Slot filling

If the entities used to extract information from customers don’t get the value in input then a conversation flow can be created within the intent/ node using slot filling. They have prompts defined to collect information from the customers so that bot can respond accurately.

IBM Watson Assistant - To create a slot click on “Customise” in the right corner and check ‘Slots’ option which provides a section to add entities and prompts for that intent.

Google Dialogflow - Dialogflow have slots for intents to have better interaction with the user, check the ‘Required’ option in the parameters section for all four parameters. This will reveal a prompt table and a link. Click on this link to set the prompts used to collect the required information from the user.

If the user has not specified the number of rooms he wants, then a prompt question should be sent asking “How many rooms do you want?”. The answer given will be the value of the parameter. This creates the conversational flow.


Responses

Responses are the replies sent to the customers when the intent is triggered by matching the entities. Responses can differ based on the parameters and a dynamic response can be generated from the webhook by making use of the extracted parameters.

IBM Watson Assistant - The types of responses (Image, option, pause, and text) are different from Dialogflow, however, the platforms are not limited for displaying these responses.

Google Dialogflow - There are 5 types of responses (text, card, image, quick replies, and custom payloads) which are limited to specific platforms.

In this example, Elina will respond with a predefined static response using the parameters. E.g. “We have booked you $ rooms for $ people from $ to $ in the name of $.”

We saw how to create a basic room booking agent in both Dialogflow and IBM Watson Assistant. Let's see more differences between the two platforms in the table below.


Topic Dialogflow IBM Watson Assistant
Pricing for API calls
Standard Essentials
Unlimited*/Free Unlimited*/ $0.002 per request
Plus Unlimited*/ $0.004 per request
Lite Standard
10,000 messages/ month Unlimited/ $0.0025 per message
Plus Price as per the request
Pre-built agents More than 30 pre-built agents. Responses of these agents are predefined and are customizable. There are 8 pre-built agents(called as content catalogues). Responses need to be added after integrating.
Training There is a separate section for training where history is maintained and you can correct if queries are mismatched with the intents. There is no implicit training section but the Improve section can be used after deployment and integration with the assistant is done.
API Each agent will be having their own pair of access tokens found in the “API Keys” section. GCP credentials file is also required for V2 APIs. Service endpoints are based on the location. The authentication token is the IAM authentication on IBM Cloud.
Webhook Webhook will be enabled for each intent. Intents having the same action will call the same service. Webhooks will be for each node (consists of multiple intents). The queries that match an intent inside a node will call the same service.


Conclusion

Dialogflow and IBM Watson Assistant both are having their own advantages and disadvantages like, Dialogflow is having an amazing ML technique which compensates the disadvantage of not having a Conversation flow (tree/directory structure of the conversation), whereas IBM conversations offer a high level of conversation flow options. That is, on the user query we can decide what to do based on the intent, context, and entities. On the other hand, IBM Watson Assistant lacks in Small talk but the process to build one is not a tough job.