Bots provide an experience that feels less like using a computer and more like dealing with a person - or at least an intelligent robot. They can be used to shift simple, repetitive tasks, such as taking a dinner reservation, or they can leverage AI services to provide a more natural experience, the so called intelligent agents.
In this blog post, you will see how a bot may impact your data architecture, with focus on Microsoft Azure and Azure Bots Framework. You will also see how Azure Cosmos DB supports this kind of cloud native applications providing global distribution, massive throughput, and multi model data storage.
What is Microsoft Azure Bots Framework?
Chatbots, or conversational bots, are web applications with specific internal dialog-oriented architectures. That means that this type of applications code is organized into modules:
Conversation state management (stateful conversations in stateless applications)
Return to the user, when AI can be used again, text-to-speech is an example
At the end of the day, it is a web application that may connect users to multiple channels (like Facebook, Teams, Slack, Skype) and AI Services (like LUIS for language Understanding, Q&A Maker for knowledge base, Azure Cognitive Search for web-like search experience with embedded Knowledge Mining) to do whatever you need for your business scenario.
Microsoft Bots Framework provide tools to build, test, deploy, and manage intelligent bots, all in one place. Through the use of modular and extensible framework provided by the SDK, tools, templates, and AI services developers can create bots that use speech, understand natural language, handle questions and answers, and more.
The framework includes Azure Bot Service, a web services hosted on Azure optimized for Bots that include specific pricing and tools like Channels connection wizard and a Web Testing Tool within the Azure Portal.
Figure 1: Traditional Application x Bot
But what if you want a code-less experience? As there is no official product for this, you will need to turn to Microsoft partners.
General Bots is one example that provisions all code base, resources and deployment to the cloud, and gives you templates you can choose from when you create a bot. Much more like SharePoint, General Bots provides levels of customization, using Office tools like Excel, editing .json files and uses Visual Studio Code to provision code on Azure. Is there a SaaS option? Yes, just found that General Bots is also available in this mode.
Do you know any other Azure Bots accelerator? Let me know!
Impact on Data Architectures
Information delivery services are usually grouped on the right side of data architecture diagrams, apparently playing a secondary role in the solution. But things can be different and listed below are 3 reasons for that:
As a distributed processing hub, connecting multiple services that consume and return data, a bot may have a central position, and role, in your data architecture.
Most of the AI services used by an Intelligent Bot will ingest and return JSON or Blob data. That means that the bot needs to read and write from services like Blob storage or CosmosDB. And the Bot doesn’t need to delegate this tasks to other services, those activities can be executed by the bot itself, asynchronously.
Mentioned below, the state conversation state must be managed. A bot cannot forget everything that has already been talked to the user, at the risk of offering a bad experience every time the service, which is stateless, has some kind of problem. The SDK offers 3 storage options by default: Memory and again Blob storage or CosmosDB. So, one more time, the bot may need to read and write data to this data storage options.
Figure 2 Bots in the Center of the Architecture
Modern Data Architectures may have a Bot as a central service that orchestrates multiple data integrations. It may include read and write of JSON or BLOB data into Azure NoSQL data stores, like Cosmos DB. If transactions are been processed too, like a bot that does flight reservations, a relational database like Azure SQL DB may be used too.