Build 2016

When Satya Nadella kicked off the Microsoft Build Conference in March 2016 with a brave statement “Bots are the new apps”; setting out his vision for an exciting future filled with Chatbots, Machine Learning (ML) & Artificial Intelligence (AI), it started me on new personal journey.

Admittedly at that time, it was difficult to envisage just how it would come together.  Or if I was being impolite, unclear how Microsoft would be relevant in that brave new world.  As the Microsoft empire in those days still looked a hoi polloi of disparate applications & platforms that barely played nice with each other, let alone the broader ecosystem around it.

If anything, I wondered how they would pull it off.  As Microsoft also seemed to be simultaneously tied up trying to be the new Apple with their diversification into hardware with the Surface lineup; as well as the new Google with Hololens.

Windows 10 had hardly been out more than 7 months and had yet to make a real impact.  Other than being in the Cloud; if you’d installed Office 97 instead of Office 2016 for them, many users would barely have noticed.   Companies were ditching Skype for Slack en masse; and Dynamics CRM & ERP platforms though branded under one family, still obviously carried their separate origins, and had been on a painfully slow convergence path for the past 8 years with limited progress.  AWS was still ahead for most Cloud projects simply because it won on the key factor of pricing.  Most of the noise about AI was coming from the IBM Watson press office.  And their best attempt at an intelligent agent was Clippy.

Bringing You Up To Speed

MS AI Portfolio

A lot has changed in the last 18 months, with the latest round of announcements from Ignite 2017.

Which is why I feel now is a good a time as any to comment on what is going on with their AI Portfolio; in particular, the area around Dynamics 365, AI &Chatbots which is where I am expecting the focus of my work to be over the coming months.

For me, it all centres around Microsoft’s new mission to “empower every person and every organization on the planet to achieve more”.  Hats off to Nadella, as delivery of this mission runs crystal clear through every thread of their product strategy.  And the key to this comes from their most recent initiatives to unify their legacy platforms and bring them altogether in ways that facilitate easier application of AI.

When combined, this tech finally allows bots to be built that are useful enough to achieve Nadella’s vision:

  • Bot Framework
  • Cognitive Services (such as LUIS, Knowledge API, Bing API, Custom Decision Service)
  • Azure Machine Learning
  • Microsoft Graph
  • Dynamics365

I discuss each of these in more detail in turn.  And direct links to these services are provided at the end so you can read about them elsewhere for yourself.  If you require assistance in implementing these technologies cloudThing are here to help.

Bot Framework

If you looked at this instance in your search engine you will find at least a dozen articles teaching you how to build a bot in a day, the ambitious ones might even suggest you can do it in an hour.  But as someone who’s done their fair share of work with bot technologies I can let you into a secret: yes, you could build a bot in a day but no one’s going to keep using that bot because it won’t do anything vaguely useful.  And unless you’ve got some idea of what makes a good conversational experience, it’s likely that users will have a horrible time using it.  Much of conversation experience design is understanding the limitations of the technology and working around it to avoid causing obvious friction.

For most ideas you have for building a bot, irrespective of which bot stack you have chosen, the major limitation you find yourself hitting is that your bot doesn’t have access to enough information to be truly useful.  Either because that data isn’t stored in the right place, it’s not in a useable format, or simply that data is never collected so it doesn’t exist digitally. For example, it’s quite trivial to write a Cortana skill that gives you a random recipe from a database, but far less trivial to write one that knows what might be suitable taking into account how much time you have to cooking that night; your exercise regime that week; what’s arriving from the supermarket; what you currently have in the fridge about to go off; whether your parents are coming round & what their dietary requirements are.

And that’s why the most effective bots today are the ones designed with a tight focus and a narrow set of skills. But for Enterprise bots at least, the game is beginning to shift.

It’s worth explaining Bot Framework further so you understand where it sits in the grand scheme of things. 
Bot Framework is a number of things:-

  1. An SDK programming model for developing a bot based around a conversational UI with node.js or C#
  2. A Bot Connector service with connections to 14 message-based platforms – mostly non-Microsoft ones
  3. A hosting platform that lives in Azure

Your takeaway should be that Bot Framework gives tools & plumbing for building and hosting a bot, but for your bot to be effective it needs help from services & data from other places.

Cognitive Services

There are certain things that define us as human and these are the things that set us apart from computers. For example, the ability to see, hear, recognise meaning in words, what objects are in images, emotions in faces.  These are the sorts of abilities that Cognitive Services can give to your bot.

MS Cogntive Services

Most pertinent to building bots from this broad umbrella of services is LUIS (Language Understanding Intelligent Service), which I would most precisely define as your own teachable NLP-engine in the cloud.  With the benefit that Microsoft have already given it an understanding of many of common domains to save you time.  Another benefit over using LUIS for your bot other than a homebrew NLP engine is that the Bot Framework SDK provides syntactical sugar to integrate with it to help keep your code looking beautiful.  The Recogniser in LUIS is actually open source, so you can look at the code and fork it if you want to make a flavour that meets your custom requirements better.

Another service to point out is the Text Analytics API, which can extract key phrases out of user responses and detect sentiment.  This tells you how positive the statement is, in effect giving you some insight into their state of mind and whether they are getting frustrated with your bot.

Beyond those are newer services designed to give your bot the ability to work better with text in your domain. Such as Entity Linking service and Custom Decision service.

If your bot is having difficulty with the language in your application, Entity Linking lets you train up better text understanding to disambiguate words that may mean different things in different contexts (e.g. Mars can be the god for war, a planet, or a chocolate bar).

Custom Decision service is a quick way to get an element of personalisation into your bot through Machine Learning.  When you feed it a list of options (an action set) & tell it what decision a user makes (e.g. which link they clicked on), over time, Custom Decision service learns what decision you user is mostly likely to make next time and ranks them in order of likeliness.  This predictive power lets your bot morph its UI to fit your user, for example presenting the buttons they are most likely to be interested in first and hiding options that don’t make the top 5 behind a drilldown would be helpful for a user using a bot if they are using a mobile and therefore limited screen space.

Azure Machine Learning

MS AI portfolio

Microsoft now have a very comprehensive AI offering.

If the pre-trained services don’t meet a particular requirement for you, there is a clear route to step over into Azure Machine Learning (ML).  The benefit of going the Microsoft route with this is that there is a very simple way to spin up of your service in Azure as a PaaS, and you get access to tools like Azure ML Studio that simplify the process or building, training & testing your models with a drag-and-drop style of working.  It’s been 3 years since ML arrived in Azure with ML Studio streamlining the 90% of the project time spent cleansing the data, training the model & testing which algorithms produce the best match.

And that brought down the barrier of entry to Machine Learning so that a developer without a PhD in Data Science had a chance of being able to harness the technology.

But the exciting thing to see is how they have kicked-on with new announcements at Ignite:  ML Workbench to allow even more streamlined workflow from your desktop, the ability to deploy models beyond the cloud: to a data engine like SQL 2017 or even to an edge node like an IoT device so that ML can be applied as close to the data source as possible through container technology.  And the ability to work with all the most interesting non-Microsoft ML frameworks such as TensorFlow.  This is a great example of the new collaborate-spirit of Microsoft at work.  Finally the recent announcement of Gluon, a developer-friendly ML model builder that Amazon have partnered over.

True, some of these services are still in preview, so expect limited documentation and the odd teething issue, so I will reserve judgement on their execution.  But their vision in this area is very impressive.  Whilst IBM have a long held the market lead in this area, and they are still much better at marketing AI to Enterprises, I will be brave and go out on a limb and suggest Microsoft are giving troops on the ground more of what we need to get AI onto the streets.  Which taken with this week’s news of IBM’s 2017 Q3 figures showing their heavy reliance on growing their revenues through their cloud platform gaining market share, it does lead to a slightly disorientating state-of-affairs.

The takeaway point is that you are now able to use whatever framework you like, deploy where you like, at whatever scale you like, all within the Azure toolchain. And it’s much easier than it’s ever been to get your project off the ground.

I would never describe ML as trivial, but it does mean if there is an aspect of your bot that could benefit from a custom ML model or a neural net, it is now far more likely to fit into your budget.

Microsoft Graph

MS Graph

Microsoft Graph was launched in 2015, initially just covering Office, but the scope of it has dramatically increased since then.    It now brings together data from Office, Azure AD, Exchange, Outlook, Sharepoint, Teams, OneDrive, OneNote.  It also has capability of adding webhooks and schema extensions if you want to add your custom applications on the edge.

With this scope comes more power. Through Graph, you can now interrogate any covered applications for data and insights relating to your user in these applications in a performant manner.  It can also circulate events occurring in these systems.  For backoffice Enterprise bots, with these capabilities your bot can become far more intelligent in the way it interacts with your user.

For example, it will know if a user is away so it won’t suggest that you speak to them till they’re back. And in their absence who the best person might be to speak to based on the organisation hierarchy; who is assigned to the same projects in Teams; or simply by who they’ve been talking to the most.  If no one can help, permissions permitting, it also have capability of getting the content of a user’s work and sending it over.  It knows your diary so if it’s setting up a meeting, it knows when the best time to meet is.


It’s likely that you’re reading this because you’re using Dynamics, but I have to include this section for completeness.


Last and most certainly by no means least. The link to Dynamics 365 is a crucial one for many reasons.  If there is one overriding message from above, it is that for your bot to be truly useful, it needs access your data.  And much of this sits in your ERP, CRM or HR databases.

Unveiled as a product around this time last year, Dynamics365 is the wrapper around all of Microsoft’s Enterprise SaaS offerings.  As well as marketing wrapping, Dynamics 365 is a cloud-only product that is unified under a Common Data Model which puts one standard underneath the Business Objects in your enterprise to allow compatibility and easy data-sharing between all the modules of Dynamics365.

In many enterprises, an obvious place to start with bots is in customer service: triaging support requests, helping with simple queries.  And if your bot works in customer service, it needs access to customer and retail data.  Especially as it should be storing past conversations as context for future ones, these need to be stored as activity records.  If it needs to update someone on sales pipeline it needs to be able to see your Sales figures, if it needs to tell someone where their order it is it needs access to your Finance & Operations.  If you want it to manage field engineers, it needs access to your Field Service data.

All of these things can be covered by Dynamics365.  And if your organisation is thinking about data security & policy compliance, having it all in one database is very handy indeed for audit purposes.

That’s certainly not to say that if all this data is elsewhere, your bot can’t reach it.  A good architect would find a solution, but having it all located in different data centres possibly thousands of miles away from your bot makes it much effort if you want to achieve great performance.  And much more effort to integrate as you are unable to rely on Microsoft’s standards-driven approach.  All of this effort comes at a price that will make your bot project much more expensive to realise the benefits from.

These capabilities open up valuable scenarios in Business Intelligence to shave more time off your day: imagine not having to spend that time every morning reading all the reports in your inbox because your Personal Assistant bot has curated all the relevant content and alerted you to any anomalies during the day.  It reports against your expected baseline, and projects out your figures automatically without requiring an analyst to create a specialised report.  It recommends some corrective action, you authorise it, and it then initiates actions for you.   Finally, it ranks your leads by predicted outcomes and lists the top 10 to follow for that day, you say yes and it distributes those leads in Teams to your sales staff based on their performance on similar leads over this month.

What Next

That’s all for now.

In the next articles in this series I will be discussing each product in more depth.  In the next one to come we will be talking about the roadmap for the Bot Framework.

If you need help implementing any of these technologies into your organisation, cloudThing come and have a chat to us about your project.

About Author:

Ed is a bot/AI evangelist working within the Solution Architecture team at cloudThing.  In his 15 years of Enterprise Systems development, he has never been as excited as he is about the potential of AI to create smarter UX and revolutionising back office processes within our workplaces.

Further Reading