Recently, I was a coach at a hackathon in Germany. Students were tasked to build solutions for a given topic and the solution had to include a chatbot based on the IBM Watson Conversation service. It was impressive how broad the solutions were, what other services were integrated with a chatbot and how easy it was to build a solution using IBM Bluemix. The following “lessons learned” and tips are from my work as coach. They hopefully help you design your own great chatbot.
|Chatbots with IBM Watson|
Lessons LearnedHackathons are intense events and require sharp focus and quick decisions. They pack everything from finding the right idea (brainstorming), defining a solution, its users and development phases (using Design Thinking) to building a prototype / minimal viable product (MVP) and pitching it. The first lessons learned and tips deal with the conversation, the dialog, the language itself:
- “Language as an aid“: When designing a chatbot-based solution, using written / typed language as the user interface should bring a value and simplify interaction, not complicate it. So consider when does a conversation help and where is “clicking around” the smarter approach? As an example: It is faster to type “next train from here to home” than to click through a structured menu.
- “Appropriate Language” and “Know your audience“: WHO is the target audience of the envisioned solution? Do they speak English, Spanish,French, German or other languages? Check the supported languages for IBM Watson Conversation and choose the language for your audience. At my recent hackathon chats in German (as local language) instead of English impressed the jury.
- “Appropriate Language” and “Know your audience“, again: Who is the audience and what language, which wording are they using? Is the bot facing users with a special vocabulary? Design the dialogs accordingly. Sometimes humor and tongue-in-cheek may add to a solution.
- “Know the concepts“: Almost all chatbot or conversation services use the concepts of intent, entity and dialog. So it is good to know that an intent is a goal or purpose, an entity represents a class of object or data type, and that a dialog combines the intents, entities and the context from the user input for the conversation.
- “Design the dialog“: The dialog is a very important part of the chatbot-based solution. Thus, it needs consideration and hence some design work. Think about the flow of conversation. How do you carry context through phases of the dialog? When and how do you want to end the chat? Providing just the timetable with the next trains might be good enough. But offering help to buy a ticket including guidance through tariffs might be the real value of a chatbot.
- “Local Data Center“: Choose a Bluemix Region local to your audience for better bandwidth and performance. For the hackathon in Germany, the new Bluemix Public offering in Frankfurt was a good choice.
- “User Interface” or “Messenger Service“: A chatbot could be an app of its own, but often they are a non-human user in messenger or communication systems like Facebook Messenger, Slack, Telegram, Twitter, and many others. How do you reach your audience? You probably need to look at factors such as higher value and quicker implementation.
- “Coding Framework“: How do you want to code the chatbot? There are many options, such as the botkit-middleware for Watson Conversation, nodes and flows for the Node-RED flow-based programming environment, samples in different programming languages on https://ibm-bluemix.github.io/ and the IBM Watson Conversation page, and many more. The selection may depend on what other services, data sources, etc. you want to integrate. Some services might only provide SDKs for certain languages. Is the goal a quick prototype for the hackathon or are you planning longterm? Does the chosen approach support use of a toolchain and source code control on GitHub?
“Watson, what’s up for the weekend?”
Note: This blog entry also appeared on https://www.ibm.com/blogs/bluemix/2017/05/lessons-tips-chatbot-hackathon/