Home

Awesome

Build Status Bot Builder Community NuGet

Latest release: v4.13.0 (05/11/2021) - Release Notes

Bot Framework Community - .NET Components & Extensions

This repository is part of the Bot Builder Community Project and contains Bot Framework Components and other extensions for use with Bot Framework Composer and the Bot Framework .NET SDK, including adapters, middleware, dialogs, helpers and more. Other repos within the Bot Builder Community Project exist for extensions for JavaScript, Python and tools - you can find our other repos under our GitHub organisation for the project.

You can also read about how to contribute and report issues.

Use the links below to jump to a section to see a list of current components and other projects / packages available for use with Composer and the Bot Builder .NET SDK.

This repository contains

Bot Framework Components

Components are part of the component model for building bots with re-usable building blocks. You can learn more about components and the component model here. You'll primarily use components through Bot Framework Composer - a visual bot authoring canvas for developers. From Composer you can add and remove packages from your bot.

Custom Actions

NameDescriptionSample?NuGet
Call DialogsActions for calling dialogs in parallel. Normally composer dialogs are executed in series one after the other, but using the AddDialogCall action you can build up a list of dialogs to call in parallel using the CallDialogs action.SampleNuGet version
Storage ActionsActions (read / write / delete) for reading and writing items to the bots configured storage provider.SampleNuGet version
Input PromptsPrompt actions for accepting input from users. Contains actions for accepting email, phone number and social media mentions / hashtags.NuGet version

Composer Connections / Adapters

NameDescriptionSample?NuGet
Amazon AlexaAdd a bot to Amazon Alexa devices, via Alexa Skills. Includes broad support for Alexa Skills capabilities, including devices with displays (Show / Spot), Alexa Cards, access to user profile data and the ability to send Progressive Responses.NuGet version
Google Actions SDK (latest)Add a bot to Google Assistant devices using Google Actions and the latest Actions SDK. Includes broad support for Google Actions capabilities, including Cards and suggestion chipsNuGet version
Azure Communication Services SMSAllows a bot to communicate via Azure Communication Services SMS, to send / reveive SMS messages, including receiving delivery reports.NuGet version
ZoomEnable a bot to communicate via Zoom. Specifically developed to handle Zoom chatbot app requests and allow for the sending of messages using Zoom Message Templates. The adapter will also receieve any event subscribed to via Zoom, even those not chatbot related.NuGet version

Live Agent Handoff

NameDescriptionSample?NuGet
LivePersonEnables handing off a bot conversation to the LivePerson platform, to either a LivePerson virtual agent or a human agent.NuGet version
ServiceNowEnables handing off a bot conversation to the ServiceNow platform, allowing the ServiceNow virtual assistant to handle the conversation.NuGet version

Pre-built Adaptive Dialogs

NameDescriptionSample?NuGet
Get WeatherDeclarative assets supporting scenarios for "getWeather" utterances.NuGet version

Other Components

NameDescriptionSample?NuGet
Token Exchange Skill HandlerA CloudSkillHandler component for enabling Single Sign On Token Exchange between a root bot and skill bot.NuGet version

Other .Net SDK Packages (non-component)

The projects and packages contained within this section are available as traditional NuGet packages. i.e. they are not Bot Framework Components and can therefore not be used with Bot Framework Composer's Package Manager.

Over time we plan to make Components for each of these projects available and we will link to those components from each project as they become available.

Adapters

The following adapters can be used to expose your bot on additional channels not supported by the Azure Bot Service, such as Alexa.

NameDescriptionSample?NuGet
Azure Communication Services SMS AdapterAn adapter to integrate with Azure Communication Services to send / reveive SMS messages, including receiving delivery reports.SampleNuGet version
Alexa AdapterAn adapter to allow for Alexa Skills to be built using the Bot Builder SDK. Includes broad support for Alexa Skills capabilities, including devices with displays (Show / Spot), Alexa Cards, access to user profile data and the ability to send Progressive Responses.SampleNuGet version
Facebook AdapterAn adapter that communicates directly with the Facebook API, and translates messages to and from a standard format used by a bot. Includes support for Facebook Handover Protocol.SampleNuGet version
Google Actions SDK (latest) AdapterAn adapter to allow for Google Actions to be built using the Bot Builder SDK via the latest Actions SDK (note: DialogFlow and legacy Actions SDK projects should use this alternate adapter. Includes broad support for Google Actions capabilities, including Cards and suggestion chipsSampleNuGet version
Google DialogFlow and legacy Actions SDK AdapterThis adapter supports integration with DialogFlow and legacy Actions SDK projects with the Bot Builder SDK. Includes broad support for Google Actions capabilities, including Cards and suggestion chipsSampleNuGet version
Slack AdapterAn adapter that communicates directly with the Slack API, and translates messages to and from a standard format used by your bot.SampleNuGet version
Twilio AdapterAn adapter that communicates directly with the Twilio API, and translates messages to and from a standard format used by your bot.SampleNuGet version
Twitter AdapterAn adapter that integrates Twitter Direct Messages with the Bot Builder. The adapter sets up the required webhooks and responds to CRC requests. The webhooks code is based on the work by Tweety with modifications to support the Premium tier of the Account Activity API.SampleNuGet version
Webex AdapterAn adapter that communicates directly with the Webex Teams API, and translates messages to and from a standard format used by your bot.SampleNuGet version
RingCentral AdapterAn adapter that integrates the RingCentral Platform API with the Bot Builder. The adapter sets up the required webhooks and endpoints to RingCentral requests. Supporting features such as human handoff, activity publishing and WhatsApp support.SampleNuGet version
Zoom AdapterAn adapter that accepts and handles Zoom app requests. Specifically developed to handle Zoom chatbot app requests and allow for the sending of messages using Zoom Message Templates. The adapter will also receieve any event subscribed to via Zoom, even those not chatbot related.SampleNuGet version
Infobip WhatsApp AdapterAn adapter that accepts and hanldes WhatsApp app requests via Infobip, including support for various messages and template types.NuGet version
Infobip SMS AdapterAn adapter that accepts and hanldes SMS requests via Infobip, including support for various messages.NuGet version
Infobip Viber AdapterAn adapter that accepts and hanldes Viber requests via Infobip, including support for various messages.NuGet version
MessageBird WhatsApp AdapterAn adapter that accepts and handles WhatsApp app requests via MessageBird, including support for various message types.SampleNuGet version

Dialogs and Prompts

The following dialogs are currently available;

NameDescriptionSampleNuGet
Bot Builder v4 Location DialogAn 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.SampleNuGet version
Bot Builder ChoiceFlowThis dialog allows you to provide the user with a series of guides choice prompts in turn (defined in a JSON file or as a collection of ChoiceFlowItem objects), similar to when calling a telephone line with a series of automated options. The dialog returns the user's last choice as a result from the dialog and optionally provide the user with a simple text response depending on which choice they land on.SampleNuGet version
Bot Builder v4 FormFlowAn implemention for v4 of the Bot Build .NET SDK of the Microsoft.Bot.Builder.FormFlow dialog project built for Bot Builder v3. FormFlow automatically generates the dialogs that are necessary to manage a guided conversation, based upon guidelines you specify.SampleNuGet version
Bot Builder v4 PromptsA collection of Prompts for use with Bot Builder v4, providing the ability to prompt using Adaptive Cards and for recognizing currencies, age, distances and temperature.NuGet version
Bot Builder v4 Luis DialogAn implementation for v4 of the Bot Builder .NET SDK of the Microsoft.Bot.Builder.Dialogs.LuisDialog built for Bot Builder V3 A dialog specialized to handle intents and entities from LUIS.SampleNuGet version
Adaptive Dialogs - RESTAdaptive package containing additional actions to make calling REST endpoints easier when using Adaptive dialogsNuGet version

Cards

Packages that assist in building bots using Adaptive Cards and Bot Framework Cards;

NameDescriptionSample?NuGet
Cards LibraryThe cards library currently has two main features - Both Adaptive Cards and Bot Framework cards can be disabled and Adaptive Cards can be translatedNuGet version
Adaptive Card PromptThis prompt is available as part of the Bot.Builder.Community.Prompts package. It includes validation for specified required input fields, displays a custom message if user replies via text and not card input and ensures input is only valid if it comes from the appropriate card (not one shown previous to prompt).NuGet version

Middleware

The following pieces of middleware are currently available;

NameDescriptionSample?NuGet
Handle Activity Type MiddlewareMiddleware 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.NuGet version
BestMatch MiddlewareA middleware implementation of the popular open source BestMatchDialog for v3 of the SDK. This piece of middleware will allow you to match a message received 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.SampleNuGet version
Azure Active Directory Authentication MiddlewareThis 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.NuGet version
Sentiment Analysis MiddlewareThis 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.SampleNuGet version
Spell Check MiddlewareThis middleware uses Cognitive Services Check to automatically correct inbound message textNuGet version

Recognizers

The following recognizers are currently available;

NameDescriptionNuGet
Fuzzy Matching RecognizerA 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.NuGet version

Storage

The following Storage implementations are currently available;

NameDescriptionNuGet
Elasticsearch storageElasticsearch based storage for bots created using Microsoft Bot Builder SDK.NuGet version
EntityFramework storageEntityFramework based storage and transcript store for bots created using Microsoft Bot Builder SDK.NuGet version

Contributing and Reporting Issues

We welcome and encourage contributions to this project, in the form of bug fixes, enhancements or new extensions. Please fork the repo and raise a PR if you have something you would like us to review for inclusion. If you want to discuss an idea first then the best way to do this right now is to raise a GitHub issue or reach out to one of us on Twitter.