Getting started with Microsoft Bot Framework

In this article I am going to discuss what bots are and what bots aren’t to help set the stage for all of the technical content that I am going to get in to in later articles. Let’s begin with what bots are not. I think the biggest misconception people have about bots is that they are necessarily have to be artificial intelligence. Bots don’t necessarily have to be artificial intelligence. They can be very simple automation utilities like resetting a password. So you might have an IT help desk bot that you send a message on Skype to say hey, I want to reset my password. And that bot can run through some series of predefined tasks and do that. And in this case that bot isn’t learning based on the conversation, it is not intelligent. But it is very simple and useful because it is communicating on a channel where you would not otherwise have been able to follow this task. So again it does not have to be artificial intelligence. It really can just be a way of interacting with the user. Rather than necessarily having them. To install an app on a phone, they can just talk to the bot instead and perform whatever those tasks are.

Bots are also not necessarily just text interfaces. You can use images, buttons, carousels, audios and lot of rich controllers to increase the user friendliness of your bot. In “Puwath Bot” when you type help, you will get a carousel with images and buttons. So you can interact with buttons.

Bots also aren’t necessarily just natural language processing. But if you are going to use text you don’t necessarily have to be doing some parsing where you are finding entities and intents. And you can build some very powerful bots around natural language processing. But bots can also just use things like regular expressions. So here I have got an example. Using “Weather Bot” you can get latest weather reports and forecasts by entering your nearest city or zip code. I am just communicating with this bot with regular expressions. So it’s really more of a command line application, there’s no necessary natural language processing here. There are plenty of applications where you would not require Language processing.

Let’s talk focus on what bots are. Simply bots are just apps with a new interface. So things you can do in a regular application. You can do in a bot too. You also can have a back end which will keep the business logic that follows some series of steps. But really the difference here is the user interface. You might be communicating over text, Skype, Slack, Facebook or other channels. And behind the scene you have really just got an app. So if bots are just apps, Why we are using bots instead of apps? There are few reasons for that. One of them is definitely you have faster access. You are already talking on these channels all the time. Instead of having to download an application to get something done, You can get it done being inside Skype, Facebook or any other channels. Take “Puwath Bot”, Without downloading a separate application, You can read latest news being inside Facebook, Skype or any other channel. One of the other reason is that it is available across more platforms. Again, these bots are sitting on channels that you always have access to. Same experience on Android, iOS, Windows operating systems. User experience does not depend on the platform.

Let’s say that I own a textile shop. I put together my Facebook page, and somebody then discovers it. That visitor might be a potential customer. It would be nice to be able to allow them to take the next step, actually allowing them to  buy something. They see my Facebook page, they can click on message. They can say, I need to buy a trouser. Then bot will show suggestions and customer can proceed with the checkout. I am not sending them out of Facebook or to a different web page and I am allowing them to do that right where they happen to be.

Bots also have less friction to build and deploy. The developer does not have to code an iOS application or an Android application, or worry about how applications are going to look on different platforms. Instead of that he can build and deploy the bot. Then using bot connector, he can connect the bot with different channels without having to worry about any customization across those channels. It is definitely a lot less friction and the cost is also less when comparing with a regular application. If you have an application where your functionality more relates to a natural interaction and to a conversation, then a bot is suitable than an app.

When designing an UI of a regular application, You really need to understand it is that your users are most likely going to use. Then you will put those foremost in front of the user. And then anything else that’s secondary. Actually this totally depends on the user. Most of your users might feel comfortable by arranging the UI like that. But what about others? By having a bot you allow them to type what they want and get straight to that particular feature without having to open several pages like in a regular application.

You can use cloud services to power up your bots. With Azure we have got services like Machine Learning and Azure search. These things are not built into the bot framework but you can use them in your bots to build an incredible bot experience. [To be continued]