Microsoft Bot Framework: using a LuisDialog for processing intents

In the previous post, I blogged about integrating a Holographic 2D app with Bot Framework and LUIS.

I also spent some time going through these great samples for some presentations and found a very nice implementation for handling the Bot messages when LUIS intents are recognised.

Instead of using the exposed LUIS endpoint and parsing the returned JSON, the framework already provides a specific LuisDialog<> type which can be used for handling the various intents, in order to make the code cleaner and more extensible.

I’ve then modified the HoloLensBotDemo sample and added a new RootLuisDialog:

[LuisModel("YourModelId", "YourSubscriptionKey")]
[Serializable]
public class RootLuisDialog : LuisDialog<object>
{
[LuisIntent("")]
[LuisIntent("None")]
public async Task None(IDialogContext context, LuisResult result)
{
var errorResult = "Try something else, please.";
await context.PostAsync(errorResult);
context.Wait(this.MessageReceived);
}
[LuisIntent("FavouriteTechnologiesIntent")]
public async Task FavouriteTechnologiesIntent(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
await context.PostAsync("My favourite technologies are Azure, Mixed Reality and Xamarin!");
context.Wait(this.MessageReceived);
}
[LuisIntent("FavouriteColorIntent")]
public async Task FavouriteColorIntent(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
await context.PostAsync("My favourite color is Blue!");
context.Wait(this.MessageReceived);
}
[LuisIntent("WhatsYourNameIntent")]
public async Task WhatsYourNameIntent(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
await context.PostAsync("My name is Davide, of course :)");
context.Wait(this.MessageReceived);
}
[LuisIntent("HelloIntent")]
public async Task HelloIntent(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
{
await context.PostAsync(@"Hi there! Davide here :) This is my personal Bot. Try asking 'What are your favourite technologies?'");
context.Wait(this.MessageReceived);
}
}

And this is all the code now needed for the Bot.

The updated source code is available on GitHub.

Happy coding!

Originally published at http://www.davidezordan.net/blog/?p=8163