Bots are in vogue like never before. They're the heart of every next-generation cognitive app for mobile, social, e-commerce, and seemingly every other solution domain.
But they're not a new phenomenon. Generally, the term refers to intelligent software agents with the ability to operate autonomously or under event-driven scenarios that can be interactively adjusted by the stakeholders whose interests they serve. A classic example of Internet bot is the web crawler, an enabling technology of search engines everywhere.
However, in the past few years, we've seen a broad shift in how the general public perceives the role of bots in the online economy. As popularized in the film "Her," Apple's Siri, and other consumer phenomena, the new-generation bots are self-learning agents whose behavior is driven by data, powered by artificial intelligence, and personalized through natural-language conversations with users.
The rise of the cognitive chatbot
In addition, these intelligent personal bots are becoming ubiquitous by being embedded in mobile devices, wearables, and internet of things endpoints, bestowing autonomous intelligence on more aspects of the material world. Perhaps the right label for this type of intelligent personal agent is "cognitive chatbot."
This new wave of intelligent personal agents is a spearhead in the spread of cloud-based cognitive computing environments, such as IBM's Watson, that give the Turing test a run for its money every day. Through their ability to use machine learning to drive natural-language conversations, cognitive chatbots can be distinguished from the long line of "chatterbots" that came before. And as natural-language conversational capabilities of applications like Siri and Amazon.com's Alexa take root in the consumer world, I consider these agents as the kernel of cognitive IoT chatbots.
As developers shift their focus to cognitive chatbots, they need to adopt fresh thinking, practices, and frameworks for building these capabilities as reusable services for deployment in cloud, mobile, IoT, and other environments.
At the very least, developers need to adopt cognitive chatbots into whatever environment they use to build cognitive microservices. In the new order of online services, cognitive chatbots will be embedded into products to guide users. I was convinced of that in a recent blog post by Yegor Bugayenko that declared that "a chatbot is better than a UI for a microservice." As I pondered his point, it occurred to me that the chatbot will in fact be a kernel that drives the UI for many microservices in the API economy.
In search of a framework for developing cognitive-chatbot microservices
When you look at other cognitive-chatbot development primitives -- beyond those associated with the UI -- it's hard to find one that's generalizable enough to serve a wide range of use cases. The bot design patterns outlined by Will Schenk in a recent blog post are promising. They focus on the node-centric messaging patterns for various bot-deployment models. The patterns hinge on the degree to which individual bots learn, persist, and act on content and state variables associated with specific users, channels, and conversations.
But if what you seek is a generalizable environment for developing cognitive-chatbot microservices, this framework has several limitations:
- It doesn't address key cognitive-chatbot platform services, such as authentication, interaction, personalization, encryption, privacy, and monitoring.
- It doesn't provide solution-level patterns (such as those associated with chatbot delivery of "next best action" user guidance in recommendation-engine scenarios).
- It doesn't address the node-level service model (such as the sensors, solvers, and actuators found in IoT endpoints) to be implemented in the chatbot.
- It fails to provide guidance for developers to choose the right types of cognitive capabilities (such as natural language processing, sentiment analysis, voice recognition, face recognition, gesture recognition, and streaming analytics) to use in various chatbot solution scenarios.
In my research, I came across this interesting chatbot functional taxonomy at GitHub by Tully Hansen that seems to address some of those requirements. However, it's specific to Twitter bots and doesn't directly address the need for a comprehensive microservices and cognitive analytics framework.
Of course, it may be a tall order to ask for a coherent development framework that can do justice to the wide range of cognitive-chatbot deployment modes. In that regard, I recently came across this alternately stimulating and amusing master list of ideas for analytics-intensive Twitter chatbot applications. Although it doesn't suggest a particular development framework to encompass these and kindred initiatives, it does point to the amazing creativity that's taken hold in the chatbot development community.
If nothing else, cognitive chatbot developers benefit from being pointed to useful guidance and online services to accelerate building and deployment of these capabilities. Here, for example, is a good discussion from Philipp Langhans on how to build these bots on Watson. And IBM has a new experimental service for building AI-powered Watson chatbots that can serve as virtual intelligent agents on several social platforms.
Innovations in cognitive chatbot technologies, algorithms, and applications are coming to market at an astonishing pace. As the space matures over the next several years and best practices crystallize, integrated development frameworks will almost certainly emerge.