Conversational UI Revisited

Last August I created a bot that used natural language to simplify some tasks in my wife’s business. At the time, I excited to make my bot respond to arbitrary commands and this worked really well when the bot was simple and had only one or two functions.

Over time I wanted the bot to do more and found not only did this increase complexity of the bot, it increased the complexity for the user!

How was I supposed to remember all those commands for the new features I wanted to add?

John Smith paid cash for classes
Enroll Jane Doe in Adult classes
Switch plan for Slim Jim to unlimited
etc…

At first, while I was caught up in the magic of natural language, I took what seemed the simplest path and dropped these commands into a text file. An innocent stopgap measure while I trained my brain to remember the commands that it had come up with in the first place.

Turned out this was difficult and if I’m honest, annoying!

Feeling a little downtrodden, I looked to others and discovered something interesting – Perhaps the future of bots is…buttons?

So with this in mind I rewrote my original bot to favour buttons and menu items over natural language and I found this allowed me to create something much more scalable and just as satisfying to use.

Here’s what the main menu looks like:

It supports nested navigation:

It also supports free text input that’s backed by Azure Search:

So while natural language is super cool and I still use it on a different bot I’ll write about soon, sometimes buttons are just simpler, faster and easier for users to work with.

Speaking of which, I’ve been working on a toolkit for C# that makes it a little easier to create menu driven bots, you can check it out over here: https://github.com/craigomatic/BotToolkit