Recently, I was a coach at a hackathon. 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 a coach. They hopefully help you design your own great chatbot.
Hackathons are intense events that require sharp focus and quick decisions. They pack everything from finding the right idea (brainstorming) and defining a solution, its users, and its 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, and 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. When does a conversation help and where is “clicking around” the smarter approach? For example, it is faster to type “next train from here to home” than to click through a structured menu.
- Know your audience and use appropriate language: Who is the target audience of the envisioned solution? Do they speak English, Spanish, French, German, or another language? 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. Who is the audience and what language and 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. It's good to know that an intent is a goal or purpose, an entity represents a class of object or data type, and a dialog combines the intents, entities, and 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.
The next few topics discuss programming and deployment options:
- 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/messenger service: A chatbot could be an app of its own, but often, they are a non-human user in messenger and 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 here and on the IBM Watson Conversation page, and much 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 long-term? Does the chosen approach support use of a toolchain and source code control on GitHub?
Finally, know your resources and come prepared to a hackathon is my last piece of advice for today. Therefore, if you are not familiar with chatbots, I recommend reading this overview of the IBM Watson Conversation service as the first step. It introduces a general solution architecture, explains the concepts behind the service, and guides you to further resources. IBM Redbooks is currently preparing a series on building cognitive applications with IBM Watson Services and Volume 2 features the Watson Conversation service. The book is a great read over a weekend because it covers both the basics as well as next steps after the initial bot is up and running. If you have programming questions, I recommend checking out the Watson Conversation Q&A on Stack Overflow or the Slack of the Watson Developer Community.