‘Bots are the new Apps’ – We all know that 2016 marked the rise of cognitive, and with that, it also brought conversational agents (or) chatbots to the forefront of enterprise innovation. They give you more scalability, reduce your costs and enhance user experiences – everybody loves them 🙂
Over the years Natural Language Processing engines have improved drastically which along with help from deep learning and neural networks are enabling developers to build engaging human-like interfaces. Whether you are looking to create a virtual contact center (or) a friendly website agent, bots can understand tone, sentiment and voice to enable these ideas.
Wikipedia compares chatbots with a game of tennis, but in reality, they have become so much more sophisticated than just that.
They provide a new channel, channels actually, for enterprises to interact with their users and provide engaging content. The whole magic lies in the fact that enterprises now don’t need a user to install an app (or) go to a website, the user interacts with the enterprise right from where they are – whether it is through Facebook Messenger (or) a Slack Channel.
Building a Chatbot
I am guessing we have established by now that Chat Bots are an essential thought for everybody in 2017 and beyond. So moving on to the next big question, how do we actually build a chatbot? They need a number of moving parts such as the NLP Engine, the Bot Logic, your backend systems, and the front-end interface.
There must be some best practices that can be followed when building your very own Enterprise Chatbot!
Bot Building Best Practices
While this will never be an exhaustive list, it will provide you a good set of best practices that we have been able to gather together from experiences building enterprise chatbots.
Separate Your Channels from Bot Logic
From both scalability and an extensibility perspective, it is very important that you separate your core bot logic from your channels. This allows you to scale each channel independently while allowing you to also add more channels in the future without having to change your bot logic.
For example, platforms such as Facebook and Slack use webhooks to define the callback on a message. Context is not maintained on the platform, so you need some sort of server-side persistence for the context.
In contrast, integrating your bot into a mobile app (or) website allows you to manage the state on the client and directly interact with your bot logic via APIs (or) Web Sockets.
By separating the interfaces that handle your channels and your bot logic, you will enable a much cleaner architecture that will allow you to add, remove and scale your channels independently.
Cool Note: In the future, if you wanted to expose your bot logic through another companion bot, this architectural style will give you the feasibility to do that.
Build for a multi-channel-context approach
Although the preference would be to separate the mechanisms (or) services that handle your individual chat channels, you should always try and unify them for an omni-channel experience.
While this might not be possible in all cases, effort must be made to enable it where feasible. Imagine a user being able to chat with your bot through Facebook Messenger at home, step out and continue the conversation via text and then keep chatting on your web application at the office.
Being able to provide such an experience that ties a user’s social handles, phone numbers and application credentials together will be a true game-changer. Bots might become mankind’s next best friend if your bot can do this!
Keep security in mind – Always!
Just like an application (or) a service, bots need to be protected – and just like any other software use case, security is the most neglected aspect. Conversational Agents might delight us, but their security is vital to ensure that your customers don’t have bad experiences.
Some of the important aspects of securing your bot can include,
- Authenticating Users who use your chatbot – make sure that you are not receiving traffic from unauthorized bots
- Prevent DDoS attacks by validating the speed of messages coming from your bots – It is fairly easy to compare a robot to a user’s typing patterns
- Always encrypt your data in transit and if logging it to a data store then encrypt at rest as well
- Make sure that your APIs and Bot Services use proper governance, authorization and rate limiting to prevent a system break
Reuse SOA and APIs
First of all, don’t even think of a bot that isn’t connected to your enterprise systems – the value that such a bot provides falls drastically.
While not all organizations call it the same, most enterprises have implemented some form of a service-based architecture. The best approach to building an enterprise-grade bot would be to ensure that you can reuse what you have built over the years.
Being able to expose existing functionality and data via REST interfaces will be the most important aspect of building your bot. Not only does it optimize resources and increase agility, but it also provides you a single point to govern security, usage analytics and organizational direction.
It allows your applications and bots to always be on the same page which will be crucial when providing your customers with the best-unified experience.
Learn Continuously and Analyze Conversations
While not all industries allow this, if possible try and log your conversations (or) at least the conversations where your bot is not able to respond to a user in a satisfactory manner. Logging tone and related entities and intents will also help you to identify patterns and improve the bot experience.
Through this data, you can make proactive decisions to help improve your bot. For example, for a pizza delivery bot, our data shows patterns that people are getting frustrated when asked about the toppings twice. You will be able to observe negative sentiment in relation to that intent and make changes to your bot.
Don’t Try Perfection – Learn Perfection
Bots are not humans – while humans are not perfect, the intent of bot builders is to make them as human like as possible. Lots of developers stall their bots because they feel the need to solve each and every possible question that users might post to their bot.
This tentative approach is likely to end up in your bot never meeting your users. While hastiness is not good, trying to be perfect and delaying your bot release is just as dangerous. The best way to improve the bot is by giving its friends to speak with and using that learning data to continuously improve. Bots are not humans, and they won’t become perfect overnight!
Add Analytics, Cognitive and IoT Services
One of the most important things to keep in mind while building your bot will be to add-on more features that improve user engagement. Being able to bring in the power of Image Recognition (or) connecting your thermostat to the bot logic really can make a difference.
Being able to use cognitive and analytics services such as Sentiment Analysis, Personality Insights, Tone Analysis, and Behavioral Patterns can help make your bot more intuitive and human-like.