Unpacking the magic behind Azure Bot Service

The secrets behind building Azure Bot Service from scratch and discovering the services powering it

Published Jul 1, 2017 in microsoft, azure, guides

Azure Bot Service is an intelligent , serverless bot service that scales on demand. It is an integrated environment that is purpose-built for bot development, enabling developers to build, connect, test, deploy, and manage bots, all from one place. Powered by Microsoft Bot Framework and Azure Functions, which means that your bot will run in a serverless environment on Azure that will scale based upon demand.

Azure Bot Service is an integrated environment that utilizes the following services:

  1. Azure App Service
  2. Azure Functions
  3. Azure Storage - Primarily Queue Storage for Queue Function Trigger
  4. Azure Application Insights
  5. Microsoft Bot Framework

Here are the steps to create a Bot Service. Bot Service is currently in Preview.

Microsoft Azure - Bot Service

Microsoft Azure - Bot Service

Create a Bot Service

Microsoft Azure - Bot Service

Microsoft Azure - Bot Service

Create a Bot Service

Once your Bot Service has been deployed, you can create a new bot. This process essentially is to authenticate your bot with the Bot Framework using Microsoft App ID and Password. This step is now integrated into Bot Service, hence, reducing the time to configure from various endpoints.

Microsoft Azure - Bot Service

Microsoft Azure - Bot Service

Configure Bot Service

Inside Azure Bot Service App, we can observe that besides the “Develop” tab which allow developers to quickly develop and test their bot right off from Azure Portal, the other tabs are basically integrated from Bot Framework. Developers can also set up continous integration seamlessly with different deployment options.

Microsoft Azure - Bot Service

Microsoft Azure - Bot Service

Bot Service Integrated Environment

What’s important here is the services that were created automatically after creating and deploying the Bot Service.

  1. App Service
  2. Functions
  3. Application Insights - This is the only service residing in South Central US
  4. Storage account
Microsoft Azure - Bot Service

Microsoft Azure - Bot Service

Bot Service Resource Group

The above steps to create Azure Bot Service spins of a couple of services automatically. As we mentioned in previous article that you could easily spin up Azure services via Azure Resource Manager (ARM) scripts. Similarly, Azure Bot Service probably has a customized ARM script to collectively spin off multiple resources and services in the region specified automatically.

However, the only difference in writing your own ARM script to spin off these services vs Azure Bot Service is with the integrated environment that Azure Bot Service provides. It provides development of your bot codes with a provided template and an editor; it also comes together with Bot Framework’s functionalities.

One thing to note is, Bot Framework is still residing in the US region, hence, for all other regions, your message would be delivered to the US and back to your region. Expect slight delay and latency.

*Bot Framework will soon be made available in other regions

Why would you want to create these services manually from scratch?

The answer is pretty simple.

  • I want to have control over my services.
  • I want to have control over my architecture.

So last Friday, my intern and I took the entire day to reverse engineer the Bot Service’s deployment. We started by understanding what services were deployed, then how were the services connected, how can we replicate that, and eventually executing that ourselves. One point to note is, Azure Bot Service is in and of itself a powerful platform. We were recreating the process to understand what goes behind it and should we would like to take control over the services then how would the services communicate with one another. Hence, achieving the same result without any dependencies. In the next article, I’ll share more on how we did it and the secrets behind Azure Bot Service!


Azure Traffic Manager vs Azure Load Balancer

Creating high availability architectures in Windows Azure

Published Jun 30, 2017 in microsoft, azure, guides