• 2 min read

Bot Framework made better with Azure

Last week at //Build, Microsoft announced some exciting new technology called the Bot Framework. It allows developers to create intelligent bots to interact with users in a natural way.

Last week at //Build, Microsoft announced some exciting new technology called the Bot Framework. It allows developers to create intelligent bots to interact with users in a natural way. The possibilities of these new types of technologies get tremendously larger when coupled with Azure Services.

In just one weekend I was able to make a bot that leveraged workflows (Logic Apps), APIs (Web Apps), security (Azure AD), on-premise systems (Hybrid Connections), and Machine Learning (luis.ai) to create a bot that improved my work productivity. The power and variety of Azure offerings was the only reason I was able to build such a system in such a short amount of time.

The amount of cutting-edge technology that Azure puts at your fingertips is incredible. Tasks like building a web server or integration workflow that used to take weeks can now be accomplished in seconds. Bundling Azure services allows developers to create solutions that, even a few months ago, would have seemed out of reach given years. Here was the scenario I built a bot for over a weekend thanks to the power of Bot Framework and Azure:

I spend much of my day in Visual Studio Team Services. I'm often checking the status of bugs, managing the product backlog, or creating new items. I built a bot powered by Azure that allows me to do all of this through natural speech – like “Can you search bugs for serialization issues?” Whenever an action or query needs to be executed, I trigger a Logic App workflow to handle the logic and integrate through a custom API App to the Team Foundation Server. I wanted to make sure the solution was secure, so added Azure Active Directory authentication to the bot and apps. Azure Machine Learning powers the speech intelligence.

Bot Diagram

Not only does Azure make this scenario possible, I can now decouple this complex problem into individual pieces that are best at performing each action. If I notice my language detection is failing to detect certain intents, I can log into luis.ai to re-train the model without having to touch or redeploy any production code. If I decide later to increase the number of items returned by a workflow, or if my Team Foundation Server moves, I can simply open the Logic App and modify the parameters in my workflow. Not to mention, I can use the pieces I built in other scenarios (for example I have another Logic App that will file a bug when I place mail in a certain folder that can easily leverage pieces I built for this scenario).

Check out these instructions if you’re interested in building your own bot, creating a node.js or C# web app. Machine learning integration is built into the SDK. Once built, you can easily “one-click publish” the bot app into Azure so it can be connected to through a number of different clients (find details on getting started here). Finally, I prefer to use Logic Apps as a callable endpoint to decouple the workflow from the bot, and return any results I need from a number of different services and integrations like SQL, Blob, Twitter, and more. Finally, to secure your bot, you can require users first authenticate against Azure Active Directory. I've posted my completed solution to my GitHub.

After a weekend of hacking, I was able to create my own secure, scalable, intelligent bot.

Telegram

This is just a small example of how Azure brings new capabilities, rapid development, and empowerment into solving complex problems. Feel free to reach out in the comments section below if you have any questions.