Virtual Shop Assistant Chatbot with Amazing Image Recognition

There has been some significant progress in “deep learning”, AI, and image recognition over the past couple of years; Google, Microsoft, and Amazon each have their own service offering. But what is the service like? How useful is it?

Everyone’s having a go at making a chatbot this year (and if you’re not, perhaps you should contact me for consultancy or training!) – and although there are some great examples out there, I’ve not seen much in the e-commerce sector worth talking about.

In this article I’m going to show you a cool use case for an image recognition e-commerce chatbot via a couple of clever APIs wired together by botframework.

Continue reading

MVP led TechDays Online

MVP led TechDays Online

On February 20th to 22nd you’ll be able to join MVPs like me at the 3 day online conference UK Tech Days Online.

This is a chance for MVPs to talk about some of the cool new MS tech that’s out there, show you how to use it yourself, and give a few case studies. This year it’s all about AI, Bots, Data Science, and Azure OSS – awesome stuff!

Since I’m not able to attend this on the day of the event, my fellow Bot MVP, Gary Pretty, will be accompanied by the talented James Mann (no doubt a Bot MVP in the next round of awards!) for a couple of sessions on Day 1 all about BotFramework, LUIS, and the various features and tooling around that ecosystem.

So that you don’t miss out on my handsome visage (!), I’m pre-recording a short session at Microsoft over the next couple of weeks, which will hopefully be played here and there throughout the conference, where I give a very brief case study for the JustEat Help chatbot; it’ll be a tasty Bot infomercial snack – don’t miss out!

Full Schedule

20 February 2017

  • 10.00am: Data, data, data – How and where to store it on Azure?
  • 11.00pm: Conversational UI using the Microsoft BOT Framework
  • 12.00pm: Microsoft Bot Framework and Cognitive Services: Make your BOT smarter!
  • 1.00pm: The best kept secret, Document DB.
  • 2.00pm: Let’s discuss Server-less.
  • 3.00pm: Keynote: Dr Mike Rys What is an Azure Data Lake?

21 February 2017

  • 10.00am: Creating a PHP-MySQL web app in Azure App Service and deploying using FTP.
  • 11.00am: Gain profit from Azure app service tooling as an OSS developer.
  • 12.00pm: Dockerizing Your Cross-Plat .NET Development.
  • 1.00pm: Communication Driven Development.
  • 2.00pm: Monitoring Linux in Azure with Microsoft Operations Management Suite Log Analytics.
  • 3.00pm: The Open Source World of Xamarin.

22 February 2017

  • 10.00am: Bootstrapping blockchain.
  • 11.00am: How IOT and data is changing lives.
  • 12.00pm: An introduction to Quantum Computing.
  • 1.00pm: Social Scientist Professor Bradley Love from University College London and the Alan Turing Institute
  • 2.00pm: Microsoft Regional Directors panel.

If this whets your appetite for nerd knowledge, pre register now at https://aka.ms/uktechdays2017

Custom BotFramework Intent Service Implementation

Developing a chatbot with language understanding capabilities is a huge leap from basic pattern recognition on the input to match to specific commands.

If you have a botframework chatbot, you’re currently limited to using LUIS as your NLP (Natural Language Processing) provider via the various Luis classes: LuisDialog, LuisModelAttribute, and LuisService.

If you’re trying to compare alternative NLP services, such as kitt.ai or wit.ai or even Alexa, then implementing support for another NLP service in Botframework for this can be a bit tricky.

In this article I’ll show you one approach to decoupling your botframework bot from a specific NLP solution.

Continue reading

MVP Bling!

As I recently mentioned, I’m now a Microsoft MVP!

I thought you might like to see what bling you get when you’re awarded the MVP, so here it is:

MVP Bling

The box

It’s a pretty big box, and quite heavy too..

MVP Award 2017 box

Would you look at that picture though?! I mean, all those pens in the pots – these MVPs mean BUSINESS.

In grey.

Contents

There’s a bunch of goodies in there:
MVP Award 2017 contents

A nice certificate from The Gugges with my MVP area – Data Platform (although I actually focus on BotFramework) – a hefty glass wedge and a little puck with “2017” on it which slips on to the wedge, all ready to start building up my many years of MVP-age to come no doubt 😉

There’s also a little MVP pin and a conference/ID card thingy. Finally there’s a sheet of MVP stickers of various sizes; expect my laptops and phones to be totally covered in them the next time you see me!

So there you have it – the tangible side of an MVP award. Now I just need to find a space somewhere in my flat clear enough to put this stuff…

London Buses use TLS1.2!

My lovely little London Bus “app” (possibly the most basic web page you can imagine + connection to the Transport for London API) broke recently, and given the tube strike today I felt I the urge to fix it.

The error occurred when the web page called the proxy (to avoid Cross Origin Request errors there needs to be a server-side api proxy on the same domain as the html page) which calls the TFL API. The proxy is THE WORLD’S MOST BASIC PROXY

It’s just “File -> Add -> New Item -> Web Service (ASMX)”, with this single method:

[WebMethod]
public string getMeTheDataFrom(string here)
{
    using (var response = new System.Net.WebClient())
    {
        return response.DownloadString(here);
    }
}

Continue reading

Sending Proactive Botframework Messages

Having a botframework chatbot up and running and responding to user messages is one thing, but how can you send a new message to bring the user back into the conversation if they haven’t just sent a new message for you to reply to?

The botframework documentation and other tutorials will point you towards using Azure Functions and the new ActivityType.Trigger to handle this which, although being a great use case for Azure Functions, make the underlying implementation harder to understand. It also means you couldn’t easily implement this on AWS, for example.

In this article I’ll show you how to easily implement Proactive Botframework Messaging just using BotFramework fundamentals.

Continue reading

I’m a Microsoft MVP!

Microsoft MVP Logo

I’m extremely pleased to announce that I’ve just received the Microsoft Most Valuable Professional (MVP) Award!

Microsoft Most Valuable Professionals, or MVPs, are technology experts who passionately share their knowledge with the community.
They are always on the “bleeding edge” and have an unstoppable urge to get their hands on new, exciting technologies.
MVPs are driven by their passion, community spirit and their quest for knowledge. Above all and in addition to their amazing technical abilities, MVPs are always willing to help others – that’s what sets them apart.

During 2016 I discovered – and became quite obsessed with – the concept and development of chatbots; I’m am excited with the possibilities. Microsoft’s own product is the BotFramework and various Cognitive Services.

Continue reading

Connecting Alexa to a Botframework Chatbot

In the previous article we dissected an Alexa Skill down to the JSON request and Response, and pointed it to an HTTPS endpoint (your laptop) to get a basic end to end Skill working.

In this article I’ll show you how to link that skill into your botframework chatbot.

Creating a botframework reply

Let’s dip back into BotFramework in order to create something that can respond to the incoming request.

Calculating a Chinese Zodiac animal based on the year is really simple; just get the remainder from dividing by 12 and apply a switch:

Continue reading

Introduction to Alexa Skills: From Zero to Echo

The rise of the conversational interface shows no signs of slowing down; chatbots are the new apps, Siri is getting old already, and although it’s still awkward to say “Ok Google” at your watch or “hey cortana” to your phone, somehow we’re happy to ask “Alexa” for the news, weather, or to play something by Bruno Mars.

The Amazon Echo looks like the first generation of a socially acceptable, almost natural, voice controlled conversational interface.

It’s that first step towards the Star Trek computer; you can’t quite say “Alexa, locate Commander Data” (although you can ask her to beam you up, and for earl grey tea, hot) but you can get a decent answer to “Alexa, where is my phone?” (assuming you’ve installed the relevant app).

All of the tutorials out there for developing your own Alexa Skill require a lot of digging around on Amazon Web Services, learning some nodejs*, and getting knee deep in lambdas (Amazon’s Functions as a Service/Server less architecture solution).

In this article I’ll show you how to easily understand how to develop your own Alexa Skill with just your laptop and a json file

* Actually, AWS Lambdas now support C# too

Continue reading

Receiving files sent to your botframework chatbot

We’ve already looked at how a botframework bot receives messages, and even how to save those messages.

In this article I’ll show you how to handle files that are sent to your botframework chatbot.

When a user interacts with your bot, unless they’re responding to a prompt, they will cause the Message controller’s Post method to fire with an activity.

This will send a message through to your underlying IDialog or LuisDialog implementation.

MessageReceived

The method that receives the message will have the signature (though the parameter names and method name could be different):

Continue reading