While bots have been around since the early days of computing, they are experiencing a recent surge in interest and infusion into mainstream applications. A key factor driving this surge is the evolution of certain technologies that now makes it easier to develop interesting and effective bots. These technologies include natural language and syntax parsing, machine learning, as well as, easy integration with cloud-based applications and search engines via published APIs.
Put it all together, and one can imagine lots of interesting implementations of bots when integrated with enterprise applications.
Recently, I have been researching bots as an approach for implementing ad-hoc interactions with cloud-based applications. We are used to performing these interactions commonly with search engines and voice-assistants. We are also now able to do the same for tasks such as ordering pizza or making dinner reservations.
However, it's the ad-hoc interactions with enterprise applications that have raised my interest in bots. Within the context of business applications, most of us are still resorting to directly interacting with applications to perform actions, whether they are queries for information or specific actions to create or update entities or objects (Account, Case, Contact, Invoice, Contract, etc.). Bots can potentially offer a casual, conversational, and ad-hoc approach to achieve the same, reducing the need for time consuming interactions with complex systems, and as a consequence, improving productivity of business users.
Imagine, for example, if you just need to know the deals closed in the previous quarter, status of the most recent reported cases from a customer, features in the next sprint, or the payment status of the last invoice to a customer. More than likely, there are multiple applications involved in accessing this ad-hoc bit of information. And you have to log into each one to access it.
What if this could be achieved via a quick conversation with a bot?
There are similar scenarios being pursued in the context of customer self-service. The bots can guide customers thru a variety of ‘how do I …’ type questions, as well as, escalate the conversation to an agent, if needed.
My investigation so far has focused on surveying the technology landscape, as well as, identifying some of the key components and resources needed for quickly creating useful ‘enterprise bots’ as the first step towards the development of a proof-of-concept. These fall into the following major categories:
Host Channel A host channel provides a platform for hosting the conversation with a user. With appropriate API support for bots, a channel can be an ideal host for publishing custom bots. Some of the more popular chat applications, such as Slack, HipChat, and Skype have begun to provide support for bots. For those desiring to design their own platform for hosting bots, there is Mattermost-an open source Slack alternative that is also gaining momentum.
For our POC efforts, we have chosen Slack since it is what we use at zAgile for our internal team communication and collaboration and Slack has a rapidly growing ecosystem of bots and external integrations.
Language Processing and Learning Since bots engage in a free-form conversation with a user, they must be able to understand both the user’s language, as well as context. The former involves a text and linguistic analysis. It typically involves language detection, part-of-speech tagging, phrase analysis, etc. The latter involves modeling the entities (the subject of the conversation), intents (user’s intention in the conversation), and actions (if any, to perform based on an intent). There is also the training of the model that relies on the initial seeding of utterances (examples of an intent) as well as the ongoing incremental and dynamic learning that allows the model to become richer in its ability to interpret conversations from the users.
A number of leading providers of these technologies offer support for the development of custom bots that can leverage these services. Examples range from IBM’s Watson, Amazon’s Alexa, and Microsoft’s Cortana.
Dialog Development Since the objective of the exercise is to develop a bot that can converse with users, a bot also needs to provide natural language responses to the users based upon their inputs. Dialog development services may includes capturing user profile, maintaining conversation context, as well as providing a UI for developing user interaction based on their inputs.
Framework for Bot Development To facilitate rapid development of bots, there are also evolving frameworks which provide toolkits supporting a variety of languages for bot development, emulators for testing bots, portals for quick assembly and deployment, as well as even a directory for listing bots. Anthony Chu has published a series of blogs that provide some hands-on examples of writing bots using the Microsoft Bot Framework. Similarly, Vadim Berman's blog provides a comparison of a few of the available bot frameworks with an emphasis on their own (Aspect CXP and Aspect NLU) for the “design, implementation and deployment of multi-channel customer service applications”.
Depending on the complexity of the use case, a conversation may also need to support topic categories, taxonomies, as well as a thesaurus (minimally to identify narrow/broad/similar terms). Not all frameworks currently support these capabilities, which can limit their usability in complex interactions.
For those desiring to learn more about bot development, Microsoft and IBM offer playground environments with bundled technologies and services for you to try out your own ideas. You can sign up for an account with either Microsoft Bot Framework Developer Portal or IBM’s BlueMix Portal to start experimenting with bot development.
As the next step to developing our POC, we intend to try both and share our experiences and assessment.
There are many other considerations influenced by the specific requirements for a bot, for example, speech recognition, visual recognition, support for different natural languages, support for multiple devices, and language translations. For now, these are out of scope for our assessment and the POC.
Future blogs will provide a deeper dive into each one of the core areas mentioned above, in the context of specific use cases that we will be implementing in the bot.
This article is published as part of the IDG Contributor Network. Want to Join?