Announcing the new Bot Builder Community Project

Update: This post has now been updated to reflect the new, expanded, structure of the Project, which now has repos for .NET, JavaScript and Python extensions, as well as bot development related tooling too.

Today, I am excited to announce a new community project, which I am leading with some good community friends of mine – the Microsoft Bot Builder Community Project.

First, a little background / history…

I, along with fellow community colleagues, have been creating open source extensions for the Microsoft Bot Builder SDK since it was in its initial early preview a couple of years ago.  Since then, I created some pretty well used extensions, such as the Best Match Dialog and the QnA Maker Dialog. Then, more recently with the advent of the v4 Bot Builder SDK preview, I started creating more extensions in the form of various bits of open source middleware and recognizers.

Last week I got talking with fellow MVP James Mann, who produces some fantastic videos about Bot development, Arafat Tehsin and another MVP, Michael Szul, who have both been producing some similarly awesome material on the subject.  We have all been building open source projects for the Microsoft Bot Builder SDK and it occurred to me that we should join forces and start some sort of community project for this stuff.

So, this brings us to now….

Today, we are delighted to announce the opening of the Bot Builder Community Project, an open source repo containing extensions in the form of things like middleware, recognizers and dialogs to make building bots easier.  The idea here is that this can be a central place where the community can contribute and we can build a broad collection of extensions for the SDK.

Right now the project has repos for .NET, JavaScript and Python extensions, as well as a tools repo for assisting with bot development.

We really hope this is the start of something great and that the project helps those developers who are building bots to build even better solutions.

Check out the project now on GitHub and find links to the NuGet / NPM packages there too.

Right now the project contains the following extensions for the Bot Builder .NET SDK, which I am focused on, and all of them are available via NuGet right now.

Dialogs

  • Bot Builder v4 Location Dialog – An implemention for v4 of the Bot Build .NET SDK of the Microsoft.Bot.Builder.Location dialog project built for Bot Builder v3. An open-source location picker control for Microsoft Bot Framework powered by Azure or Bing Maps REST services. This control will allow a user to search for a location, with the ability to specify required fields and also store locations as favorites for the user.

Middleware

  • Handle Activity Type Middleware – Middleware component which allows you to respond to different types of incoming activities, e.g. send a greeting, or even filter out activities you do not care about altogether.
  • Best Match Middleware – A middleware implementation of the popular open source BestMatchDialog for v3 of the SDK. This piece of middleware will allow you to match a message receieved from a bot user against a list of strings and then carry out an appropriate action. Matching does not have to be exact and you can set the threshold as to how closely the message should match with an item in the list.
  • Azure Active Directory Authentication Middleware – This middleware will allow your bot to authenticate with Azure AD. It was created to support integration with Microsoft Graph but it will work with any application that uses the OAuth 2.0 authorization code flow.
  • Sentiment Analysis Middleware –  This middleware uses Cognitive Services Sentiment Analysis to identify the sentiment of each inbound message and make it available for your bot or other middleware component.
  • Spell Check Middleware – This middleware uses Cognitive Services Check to automatically correct inbound message text.
  • Typing Middleware – This middleware will show a ‘typing’ event whenever a long running operation is occurring in your bot or other middeware components in the pipeline, providing a visual cue to the user that your bot is doing something.

Recognizers

  • Fuzzy Match Recognizer – A recognizer that allows you to use fuzzy matching to compare strings. Useful in situations such as when a user make a spelling mistake etc. When the recognizer is used a list of matches, along with confidence scores, are returned.