Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Microsoft Chatbot Framework: Up and Running

DZone's Guide to

Microsoft Chatbot Framework: Up and Running

Let's take a quick look at the Microsoft chatbot framework and explore, in Azure, how to set up a Web-App bot.

· AI Zone ·
Free Resource

Did you know that 50- 80% of your enterprise business processes can be automated with AssistEdge?  Identify processes, deploy bots and scale effortlessly with AssistEdge.

Some time ago (think early to mid-nineties), I used to run a BBS. One Christmas, I logged onto another BBS based in Manchester, and they had a "Santa Chat."  I tried it for a while and was so impressed by it that I decided to write my own; it was basically the gift that kept giving. You put this thing on your BBS (basically an Eliza clone) and it records the responses of the unsuspecting users to a text file (or log).

These days there are laws against recording such things, but those were simpler times, and once they realized the joke, everyone was happy, and life went on (albeit at 14.4k bps).

A few years ago, I decided to relive my youth and wrote an app for the Windows Store — this one didn't keep logs, although I imagine, had I added a "Post Log to Facebook" button, it probably would have got some use. It has since removed by MS in their wisdom. There was very little difference between it and Eliza.

Now, Microsoft seems to have jumped on this bandwagon, and they have released a framework for developing such apps. Clearly, their efforts were just a copy of mine... well, anyway, this is a quick foray into the world of a chatbot.

Your first step in Azure is to set-up a Web-App bot:

This will actually create a fully working bot in two or three clicks; select "Test in Web Chat" if you don't believe me:

Okay, it doesn't do much, but what it does do is fully work! You can download the code for this if you like:

The code doesn't look too daunting when you download it:

In fact, looking inside MessagesController, it appears to be a simple API controller. In fact, the controller selects a dialog to use, and the dialog is the magic class that essentially controls all the... err... dialog. The default is called "EchoDialog."

For the purposes of this demo, we can change the part we want using the web browser; select Online Code Editor:

The bit we're interested in for the purpose of this is the EchoDialog. Let's try changing the text that gets sent back a little; replace the test in MessageReceivedAsync with this:

public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
    var message = await argument;

    if (message.Text == "reset")
    {
        PromptDialog.Confirm(
            context,
            AfterResetAsync,
            "Are you sure you want to reset the count?",
            "Didn't get that!",
            promptStyle: PromptStyle.Auto);
    }
    else
    {
        if (message == "test")
        {
            await context.PostAsync("Testing 1, 2, 3...");
        }
        else
        {
            await context.PostAsync($"{this.count++}: You said {message.Text}");
        }
        context.Wait(MessageReceivedAsync);
    }
}

So, we are checking the input, and where it's "test," we'll return a slightly different response. You'll need to build this, select the "Open Console" button down the left-hand side of the screen, and type "build":

When it's done, open up your test again and see what happens:

Remember that the bot itself is exposed as an API, so you can put this directly into your own code.

https://blogs.msdn.microsoft.com/uk_faculty_connection/2017/09/08/how-to-build-a-chat-bot-using-azure-bot-service-and-train-it-with-luis/   

Consuming AI in byte sized applications is the best way to transform digitally. #BuiltOnAI, EdgeVerve’s business application, provides you with everything you need to plug & play AI into your enterprise.  Learn more.

Topics:
ai ,chatbot ,microsoft chatbot framework ,api ,tutorial

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}