Releases: microsoft/botbuilder-dotnet
Bot Framework DotNet SDK 4.16.0
Welcome to the April 2021 release of the Bot Framework SDK. This release has been focused on performance, bug fixes and general improvements.
Cloud Adapter
Introducing support for Direct Line App Service Extension with Cloud Adapter and Microsoft.Bot.Connector.Streaming.
Search
Introducing SDK support for the Federated Search Platform. This includes Activity Handler support for Typeahead search in Adaptive Cards.
What's Changed
- Update BotState SaveChanges to implement CancellationToken by @nimercer in #5921
- Update README by @mrivera-ms in #5919
- Fix comparison policy of string in adaptive expressions by @Danieladu in #5925
- MSAL: Update to Microsoft.Identity.Client v4.37 to allow sendX5C configuration in bot startups by @carlosscastro in #5927
- Add / accept header to ConnectorClient httpclient by @EricDahlvang in #5926
- Update Microsoft.AspNetCore.Http to 2.1.22 by @msomanathan in #5936
- E2E tests for new streaming library by @msomanathan in #5932
- add control property by @johnataylor in #5943
- Facebook functional test fixes by @BruceHaley in #5931
- flip enableFromFile to false by default and fix unit tests by @johnataylor in #5953
- Revert: Register missingProperties custom function to get all variables by @EricDahlvang in #5962
- Add functional test pipeline for Facebook secondary test bot by @BruceHaley in #5949
- Updates code owners by @gabog in #5971
- Add v5 branch to js-parity workflow by @BruceHaley in #5989
- Add default (C) in editorconfig by @gabog in #5998
- Adds missing obsolete attributes to member that depend on obsolete types by @gabog in #5997
- Deletes old team projects by @gabog in #6005
- Microsoft.Bot.Schema Cleanup (Part 2) by @Zerryth in #5605
- Fix test SendDirectLineMessage() by @BruceHaley in #6014
- Foreach: refactor from recursive to iterative implementation to keep stack depth constant by @carlosscastro in #6038
- Add support for referral property in Facebook messaging_referrals event by @podgito in #5948
- Add TelemetryLoggerConstants for adaptive. by @EricDahlvang in #6029
- Ensure services are copied to new child context in ForEachElement by @EricDahlvang in #6045
- Update macOS .yaml to vmImage: 'macOS-latest' by @EricDahlvang in #6059
- [#6018] Move Dotnet generators from Samples to "generators" - dotnet-templates - Echo Bot by @ceciliaavila in #6049
- [#6018] Move Dotnet generators from Samples to "generators" - dotnet-templates - Empty Bot by @ceciliaavila in #6050
- [#6018] Move Dotnet generators from Samples to "generators" - dotnet-templates - Core Bot by @ceciliaavila in #6051
- LG Performance & Scalability: Speed up loading, fix concurrency and memory problems by @carlosscastro in #6061
- Cache items in ForEachElement by @EricDahlvang in #6057
- [#6018] Move Dotnet generators from Samples to "generators" - VSIX - Echo Bot by @ceciliaavila in #6052
- [#6018] Move Dotnet generators from Samples to "generators" - VSIX - Empty Bot by @ceciliaavila in #6053
- [#6018] Move Dotnet generators from Samples to "generators" - VSIX - Core Bot by @ceciliaavila in #6054
- [#6018] Move Dotnet generators from Samples to "generators" - VSIX - Core Bot with Tests by @ceciliaavila in #6055
- Add Software Bill of Materials task for C# by @BruceHaley in #6047
- Suppress CredScan errors for fake keys by @mrivera-ms in #6069
- Update connector client code to return and log the right assembly version. by @gabog in #6073
- Disabled parallel tests for Microsoft.Bot.ApplicationInsights.Core.Tests by @EricDahlvang in #6080
- Teams now supports <= 50 Card Actions by @EricDahlvang in #6085
- Add obsolete attribute to BotFrameworkHttpAdapter and related classes. by @msomanathan in #6096
- Fix null ref exception in ForEachElement by @EricDahlvang in #6092
- Removes URL from OnComputId method by @gabog in #6110
- Set up DotNet pipelines for SDK_Dotnet_V4_org feed. by @BruceHaley in #6118
- Setup DotNet v4 Mac pipeline for new feed by @mrivera-ms in #6122
- Obsolete sidecar debugging classes by @EricDahlvang in #6132
- Add Obsolete attribute to IExtendedUserTokenProvider and IUserTokenProvider by @EricDahlvang in #6131
- Log BadRequest in adapter by @EricDahlvang in #6135
- Fix broken VSIX build by @BruceHaley in #6124
- [#6019] Remove redundant project dependencies from AI Recognizers by @sw-joelmut in #6067
- Set TeamsNotifyUser Alert to opposite of AlertInMeeting by @EricDahlvang in #6136
- [#5713] Dialogs.Declarative.Tests hang and give no message. by @sw-joelmut in #5993
- Create pipelines to unlist deprecated packages on 4 feeds by @BruceHaley in #5827
- Add 'Component Detection' task to DotNet signing build. by @BruceHaley in #6093
- Add top level lazy load on LanguageGeneratorManager by @Danieladu in #6123
- Fix for when Actions are updated in ForEachElement by @EricDahlvang in #6143
- Add ActivityTypeProperty to TelemetryLoggerMiddleware by @EricDahlvang in #6028
- Add verify-pr-labels GitHub workflow by @BruceHaley in #6146
- Fix labels casing in parity check action by @BruceHaley in #6158
- Add Obsolete attribute to custom adapters. by @mrivera-ms in #6137
- Add Component Governance to build by @mrivera-ms in #6088
- Upgrade named pipes to use new streaming library. by @msomanathan in #6147
- Ensure EndDialog action within a ForEachElement will end the dialog by @EricDahlvang in #6160
- DotNet pipeline tweaks by @BruceHaley in #6166
- Add continueOnError: true for publish by @BruceHaley in #6155
- [#6023] Test explorer should not start Azure emulator when loading tests by @sw-joelmut in #6078
- Update create-botbuilder-js-parity-issue.yml for new parity labels by @BruceHaley in #6170
- Update generators to 4.15.2 by @mrivera-ms in #6178
- Add Obsolete attribute to DialogManager by @mrivera-ms in #6177
- fix UtcNow related expression test cases occasionally failed by @cosmicshuai in #5601
- fix: Normalized number in number list by @Danieladu in #5933
- [#5924] Fix Adaptive Dialogs ISO Date String parsing to a JTokenType.Date Object by @sw-joelmut in #6037
- Fix incorrect type in test State_RememberIStoreItemUserState by @z0h3 in https://gi...
Bot Framework DotNet SDK 4.15.2
This is a January 2022 patch release containing bug fixes and performance improvements.
4.15.2 SDK Change Logs
- Add top level lazy load on LanguageGeneratorManager by @gabog and @Danieladu in #6123
- Fix null ref exception and outlying issues in ForEachElement by @carlosscastro @gabog @lauren-mills @EricDahlvang in #6092 and #6143
- Removes URL from OnComputId method by @gabog #6110
Breaking changes in this release:
This release introduces some minor breaking changes in the Adaptive libraries that greatly improve the bot's cold start times. These changes should not impact composer bots that haven't been customized. Customized bots will be impacted only if they extended the following classes:
TemplateEngineLanguageGenerator
- We removed the
loadOnConstructor
optional parameter from the class constructor. Templates are now only loaded as needed and not at bot startup. This parameter is no longer necessary and should be removed.
LanguageGeneratorManager
- We removed the
loadOnConstructor
optional parameter from the class constructor. Most templates are now processed as needed and not at bot startup. This parameter is no longer necessary and should be removed.
Templates that use the lg@exports
feature are still loaded on startup, a bot with a large number of templates that use the@exports
directive will experience longer startup times.
LanguageGeneratorManager
- The
LanguageGenerators
property type has changed fromConcurrentDictionary<string, LanguageGenerator>
toConcurrentDictionary<string, Lazy<LanguageGenerator>>
to allow on demand initialization and the property is now read only.
MultiLanguageGenerator
- The
LanguageGenerators
property type has changed fromConcurrentDictionary<string, LanguageGenerator>
toConcurrentDictionary<string, Lazy<LanguageGenerator>>
to allow on demand initialization and the property is now read only.
MultiLanguageGeneratorBase
- The
TryGetGenerator(DialogContext dialogContext, string locale, out LanguageGenerator generator)
method signature has changed toMultiLanguageGeneratorBase.TryGetGenerator(DialogContext dialogContext, string locale, out Lazy<LanguageGenerator> generator)
and the classes that derive from it have been updated accordingly.
Developers that need to access thelanguageGenerator
instance right away after callingTryGetGenerator()
can force the initialization by accessing theValue
property of the returnedLazy<LanguageGenerator>
.
Bot Framework DotNet SDK 4.15.0
Welcome to the November 2021 release of the Bot Framework SDK. This release has been focused on bug fixes and general improvements.
SDK [release notes]
December 2021 (version 4.15.1)
- Improvements to the Language Understanding library's loading and performance.
- Adaptive ForEach Action has been refactored to ForEachElement with improved stack processing and performance.
User-Assigned Managed Identity
Azure Bot's identity management has been updated to include support for 1) User-Assigned Managed Identity, and 2) Azure AD Single Tenant app. This is in addition to the currently supported Azure AD Multi-Tenant app identity. For more details on how to create and deploy an Azure Bot using these new identity mechanisms, please refer to the following docs:
Create an Azure Bot resource
Deploy your bot to Azure
Improved Streaming Library
A new streaming library Microsoft.Bot.Connector.Streaming
has been released which greatly improves performance of bots using web sockets. This library will exist side-by-side with the legacy streaming library Microsoft.Bot.Streaming
. CloudAdapter
uses the new streaming library by default, and BotFrameworkHttpAdapter
uses the legacy streaming library by default. Both these defaults can be overridden by the bot's adapter by overriding a virtual method.
Code to override CloudAdapter
to use legacy streaming library:
protected override StreamingConnection CreateWebSocketConnection(WebSocket socket, ILogger logger)
{
return new LegacyStreamingConnection(socket, logger);
}
Code to override BotFrameworkHttpAdapter
to use new streaming library:
public override StreamingRequestHandler CreateStreamingRequestHandler(IBot bot, WebSocket socket, string audience)
{
var connection = new WebSocketStreamingConnection(socket, Logger);
return new StreamingRequestHandler(bot, this, connection, audience);
}
Changes to LanguageGeneration.Templates class
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
4.15.0 SDK Change Logs
- Update README by @mrivera-ms in #5748
- Fix bug that whether an Orchestrator object can extract entities or n… by @hcyang in #5749
- [#5192] Add unit tests for SendHandoffActivity by @ceciliaavila in #5754
- Disable code coverage reporting for netcoreapp 2.1 by @BruceHaley in #5755
- Ensure the results of Orchestrator scoring are not readonly by @EricDahlvang in #5763
- Register
missingProperties
custom function to get all variables the template contains by @Danieladu in #5518 - Skip Adaptive.Tests.ActionTests.Action_MissingProperty for dotnet 2.1 by @cosmicshuai in #5771
- Skip MissingProperty test temporarily by @Danieladu in #5772
- use correct header schema for BeginSkill by @a-b-r-o-w-n in #5767
- Add component governance detection to ci build v2. by @BruceHaley in #5776
- extend merge built-in function by @Danieladu in #5742
- fix: clean up tests in adaptive expressions by @Danieladu in #5781
- fix #5778: CreateIfNotExistsAsync before add to _checkedContainers by @rmt2021 in #5779
- uischema: add missing ui options by @yeze322 in #5501
- fix: Fix the case issue that would block the building in linux system by @Danieladu in #5777
- Streaming: Surface exceptions like other paths to allow error handling in upper layers. by @carlosscastro in #5803
- Added dialogs property of AdaptiveDialog to the hidden list by @LeeParrishMSFT in #5785
- Convert HeroCards to BlockKit by @mdrichardson in #5571
- Make Multi-language recognizer case-insensitive by @Danieladu in #5811
- MSAL auth: fix log entry text by @carlosscastro in #5784
- Increase timeout for TranscriptStoreBaseTests.GetPagedResultAsync by @EricDahlvang in #5823
- Disable failing JwtTokenValidationTests by @EricDahlvang in #5833
- Make StreamingRequestHandler methods virtual by @mrivera-ms in #5828
- Delete appid/password from tests by @EricDahlvang in #5836
- Update interdependency graph URL in README.md by @BruceHaley in #5844
- Managed Identity (MSI) + Single Tenant support for Bot apps by @msomanathan in #5829
- check whether Metadata contains Timestamp by @rmt2021 in #5799
- Add unit tests for AdaptiveDialogBot parameters by @BruceHaley in #5868
- Add ThrowOnRecursive to AnalyzerOptions by @EricDahlvang in #5872
- Fix intermittent test failure in BotBuilder-DotNet-CI-PR-yaml by @BruceHaley in #5876
- Corrected GetConversationMembers to use TeamsInfo helper class rather… by @LeeParrishMSFT in #5874
- Increase test coverage on Microsoft.Bot.Connector by @BruceHaley in #5761
- Add "omnichannel" to Channels by @EricDahlvang in #5891
- Prevent duplicate None labels from being added twice by @tsuwandy in #5892
- Fix ReplaceDialog Action: DialogContext.BeginDialogAsync(): A dialog … by @QaisAlkhateeb in #5656
- Move IAdaptiveDialogDependencies to Adaptive library by @mrivera-ms in #5897
- [#5895] Increase Microsoft.Bot.Builder.Dialogs.Debugging code coverage by @ceciliaavila in #5896
- [#387] Increase Microsoft.Bot.Builder.Azure code coverage by @sw-joelmut in #5890
- [#5838][Part 1] Increase Microsoft.Bot.Streaming code coverage by @ceciliaavila in #5839
- [#5838][Part 2] Increase Microsoft.Bot.Streaming code coverage by @ceciliaavila in #5840
- [#5898] Increase Microsoft.Bot.Builder.Azure.Queues code coverage by @ceciliaavila in #5899
- Add key for InternalsVisibleTo in Microsoft.Bot.Streaming by @EricDahlvang in #5901
- FileResource and SourceMap improvements by @EricDahlvang in #5788
- Add ShowSignInLink to OAuthPromptSettings by @mrivera-ms in #5906
- [#5904] Increase Microsoft.Bot.Builder.AI.Orchestrator code coverage by @ceciliaavila in #5905
- Deprecate CosmosDbCustomClientOptions by @EricDahlvang in #5910
- New pipelines for the new vNextPrototype branch by @BruceHaley in #5912
- fix: Component Governance: CVE-2021-31957 by @BruceHaley in #5916
- Streaming Library Refactor by @msomanathan in #5908
- Fix build break. by @msomanathan in #5918
- Cherry-Pick to 4.15: Add / accept header to ConnectorClient httpclient (#5926) by @EricDahlvang in #5929
- Cherry-Pick to 4.15: MSAL: Update to Microsoft.Identity.Client v4.37 to allow sendX5C conf… by @EricDahlvang in #5928
- Cherry-Pick: E2E tests for new streaming library (#5932) by @msomanathan in #5941
- Cherrypick 5925: Fix comparison policy of string in adaptive expressions by @EricDahlvang in #5939
- Cherry-Pick: Update Microsoft.AspNetCore.Http to 2.1.22 (#5936) by @msomanathan in #5942
- CherryPick to 4.15: add control property (#5943) by @EricDahlvang in #5945
- #minor Cherry-Pick to 4.15: fli...
Bot Framework DotNet SDK 4.14.0
November 2021 (version 4.14.4)
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
June 2021 (version 4.14.0)
Welcome to the June 2021 release of the Bot Framework SDK. This has been largely a maintenance release with a few notable items including support for Microsoft Teams MeetingStart
and MeetingEnd
events, and Get Meeting Info
. See below for the full set of changes.
-
IMPORTANT:
The Slack adapter now prioritizes User.Id
over Bot.Id
when setting the Activity.From.Id
. [5393 ]
Change log for DotNet 4.14.0
- Ensure the results of Orchestrator scoring can be added to for unknown intent [PR 5764]
- Update Microsoft.Bot.Builder.AI.Orchestrator.csproj [PR 5747]
- Add AllowedSkillsClaimsValidator for Issue 5285 [PR 5684]
- Add conversation id header in skill requests [PR 5741]
- Update TeamsInfo to support CloudAdapter [PR 5728]
- updated obsolete message according to feedback [PR 5739]
- [#5676] BotFrameworkAdapter CreateConversationAsync overrides conversationParameters.ChannelData [PR 5727]
- addition remark doc comments [PR 5734]
- Authentication: Add opt-in support for MSAL to acquire tokens [PR 5736]
- Fix: add cache for luis recognizer result to avoid extra requests [PR 5683]
- Remove Azure.Queues.dll from CC report [PR 5731]
- Add appId parameter validation to PasswordServiceClientCredentialFactory.CreateCredentialsAsync. [PR 5730]
- [Part 10] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5726]
- Improved code coverage reporting for local Visual Studio CC runs [PR 5723]
- Fix OAuth prompt should store in turn.token, not dialog.token [PR 5693]
- fix: Microsoft.Bot.Builder.TestBot.Json can't start [PR 5718]
- feat: AdaptiveExpressions: Allow 0 to convert as false bool [PR 5616]
- feat: add GetMeetingInfo and meeting event support [PR 5655]
- Added SetTestOptions functionality to AdaptiveDialogBot [PR 5711]
- remove exception handled [PR 5722]
- [Part 9] [Unit Tests - Code Coverage]: Microsoft.Bot.Schema.Teams [PR 5715]
- [Part 8] [Unit Tests - Code Coverage]: Microsoft.Bot.Schema.Teams [PR 5709]
- Orchestrator package readme [PR 5679]
- Make None return all intent results [PR 5716]
- Update Orch description and url for Composer [PR 5705]
- Adjust how Activity.From is populated when sending [PR 5574]
- Upgrade Recognizers-Text to 1.3.2 version [PR 5706]
- fix: MaxTurnCount getting increased while interruption in composer prompts [PR 5690]
- Bring Microsoft.Bot.Schema to 100% code coverage (Part 1) [PR 5613]
- [#5166] Add unit tests for Microsoft.Bot.Connector.Authentication.UserTokenClientImpl [PR 5697]
- [#5166] Add unit tests for Microsoft.Bot.Builder.Dialogs.OAuthPrompt [PR 5696]
- flip turn memory scope to be included in the snapshot [PR 5686]
- feat: Support iteration for object in ForEach action [PR 5689]
- [Part 7] [Unit Tests - Code Coverage]: Microsoft.Bot.Schema.Teams [PR 5664]
- [Part 6] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5662]
- [Part 5] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5648]
- [Part 4] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5646]
- [Part 3] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5644]
- [Part 2] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5638]
- [Part 1] Increase Microsoft.Bot.Schema.Teams code coverage [PR 5573]
- Update package license handling [PR 5687]
- Johtaylo/issue5488 [PR 5675]
- Fix Path for merge tests.schema output directory [PR 5669]
- add create conversation to CloudAdapter [PR 5562]
- Fix number input precision issue for large integer numbers [PR 5621]
- Adds missing required 'user' property to PostMessageAsync method [PR 5665]
- Added missing Runtime Feature tests [PR 5658]
- Fix double evaluation and filter sensitive settings [PR 5641]
- Fix empty request content and add unit tests. [PR 5629]
- Fix first activity from bot to user has fake replyToId value [PR 5313]
- fix: use TokenExchangeInvokeRequest [PR 5637]
- Fix invalid cast exception when sending delay activities through cloud adapter [PR 5617]
- Updated errpr handling block to return the JsonReaderException message that doesn't return the source json. [PR 5618]
- Update botbuilder-dotnet-ci-facebook-test.yml for Azure Pipelines [PR 5399]
- Revert async usage for token refresh [PR 5595]
- Update Orchestrator Recognizer to fix Linux ONNX runtime issue [PR 5594]
- Allow back quotes in adaptive expression object and array construction [PR 5588]
- SDK Adapter components: Consume passed in IConfiguration instead of the one registered in DI [PR 5582]
- Support object comparison in == [PR 5575]
- [#3905] Replace AsyncUsageAnalyzers with Microsoft.VisualStudio.Threading [PR 5068]
- Update telemetry LogPersonalInformation config path for recognizers [PR 5568]
- bug: Slack Adapter - Prioritize User.id as From.Id [PR 5393]
- Support timestamp without timezone postfix in getTimeOfDay [PR 5551]
- Skills: Obsolete SkillHttpClient [PR 5545]
- SSO + adaptive runtime: Save state before sending OAuthCard to prevent race conditions [PR 5543]
- Update Adaptive Runtime to add telemetry client to the TurnState [PR 5509]
- Update coveralls badge [PR 5546]
- Expose StorageTransferOptions [PR 5315]
- Apply Expression equal function in LG library [PR 5517]
- Fix recursive functions error in analyzer [PR 5541]
- Add null check for From property in CreateReply [[PR 5500]](https://github.com/microsoft/botbuilder...
Bot Framework DotNet SDK 4.13.0
November 2021 (version 4.13.8)
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
Version 4.13.2
Includes the following bug fixes:
- Enabling Application Insight with Bot Composer does not get "LuisResult" or "QnAMaker" name in telemetry data. Issue microsoft/BotFramework-Composer#7661
- Utterance (customDimensions['Text']) is not reported in AppInsights inhibiting conversation analytics. Issue microsoft/BotFramework-Composer#7533
- SDK Adapters should pass the component configuration to constructor. Issue #5581
Version 4.13.1
Includes the following bug fixes:
- Runtime: IBotTelemetryClient should be replaceable · Issue #5511
- Runtime: IBot should be registered through TryAddSingleton · Issue #5493
- Update Microsoft.BotFramework.Orchestrator in OrchestratorRecognizer to version to 4.13.1 · Issue #5524
- CloudAdapter - cannot call ContinueConversationAsync with an empty / null AppId · Issue #5491
- Runtime is not logging dialog telemetry events · Issue #5504
- People template bot producing a "SignoutUser(): not supported by the current adapter" message · Issue #5528
- OAuthInput fails to do SSO with adaptive runtime due to race condition with saving state · Issue #5544
- Timezone extraction does not work in 1.4.0 Bot Runtime · Issue #5552
April 2021 (version 4.13.0)
Welcome to the April 2021 release of the DotNet Bot Framework SDK. Orchestrator, a replacement for the Dispatch tool shipped in prior versions, is now generally available. BotComponent Registration has been improved with the introduction of BotComponent
and automatic discovery of package components within a new Adaptive Runtime. New activity types Command
and CommandResult
are introduced in support of the Telephony channel and further protocol extensibility. See also Other improvements. Refer to the change log and General SDK release notes for more SDK related updates.
Orchestrator (GA)
Orchestrator recognizer has been released to General Availability! Since PREVIEW 3 release we have:
- Improved performance.
- Fully integrated with Composer via the packages subsystem
- Integrated in user experience for skill routing
- Promoted BF CLI Orchestrator from plugin to embedded command
- Updated documentation & samples https://aka.ms/bf-orchestrator
Teams
- Introduction of Single Sign On Middleware for Microsoft Teams
- Teams Adaptive Component package includes triggers and actions for interacting with Microsoft Teams specific features
New Activity Types
Command
activities communicate a request to perform a specific action. They are identified by a type value of command and specific values of the name field. specificationCommandResult
activities communicate the result of a command activity. specification
BotComponent Registration
Adaptive Component registration has been updated to include BotComponent
and auto-discovery with the new Adaptive Runtime
Instructions for upgrading from the deprecated method to BotComponent
:
ComponentRegistration (deprecated method):
The deprecated method of component registration was accomplished through code in startup, and returning DeclarativeTypes
from GetDeclarativeTypes
of a custom ComponentRegistration
implementation.
Code: AdaptiveComponentRegistration:
public class AdaptiveComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes
{
...
public virtual IEnumerable<DeclarativeType> GetDeclarativeTypes(ResourceExplorer resourceExplorer)
{
yield return new DeclarativeType<OnBeginDialog>(OnBeginDialog.Kind);
...
}
}
BotComponent (new method):
BotComponent
implementations will be loaded into the type system either
-
- automatically by the runtime when the referencing project contains an entry in the 'components' array within appsettings.json, or
-
- directly from startup.cs by calling
new MyBotComponent().ConfigureServices(services, configuration);
- directly from startup.cs by calling
Code: AdaptiveBotComponent
public class AdaptiveBotComponent : BotComponent
{
public override void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
services.AddSingleton<DeclarativeType>(sp => new DeclarativeType<OnBeginDialog>(OnBeginDialog.Kind));
}
}
Other improvements
- Extended
DialogExtensions.RunAsync
so it fully supportsAdaptiveDialogs
- Consolidated the implementation of
DialogManager
so it usesDialogExtensions.RunAsync
- Introduced
AdaptiveDialogBot
anIBot
implementation for runningAdaptiveDialogs
, follows the pattern established withDialogBot<T>
used across the samples and usesDialogExtensions.RunAsync
to execute theDialog
. It implementsIBot
directly rather than deriving fromActivityHandler
. Significantly the implementation captures theTurnState
dependencies that anAdaptiveDialog
has. - The adaptive runtime moves from Preview to GA. This introduces a new package called
Microsoft.Bot.Builder.Dialogs.Adaptive.Runtime
. In the process the coreServiceCollectionExtensions.AddBotRuntime
was re-implemented to use the newAdaptiveDialogBot
class. It also now injects most of the key dependencies for theAdaptiveDialog
(now explicitly modeled in theAdaptiveDialogBots
constructor) withTryAddSingleton
so they act as replace-able defaults. - Various Skill classes have been updated so they now aligns with the fully parameterizable Auth abstractions introduced in 4.12.0 with
CloudAdapter
.
Change log for DotNet 4.13.0:
- feat: Update to point at Orchestrator 4.13 (#5484) [PR 5484]
- SDK Adapters: include schemas guaranteeing no duplicates in package (#5478) [PR 5478]
- Add Teams SSO Token Exchange middleware (#5475)[PR 5475]
- Add AsCommandActivity and AsCommandResultActivity (#5452)[PR 5452]
- Add jsonProperty to TokenExchangeResource (#5461)[PR 5461]
- Runtime: Using ApplicationInsightsServiceOptions to initialize telemetry (#5456)[PR 5456 ]
- Remove Teams adaptive package (#5450)[PR 5450]
- Remove HostBuilderContext parameter from AddBotRuntimeConfiguration (#5439)[PR 5439]
- Updated default ResultProperty for HttpRequest (#5436)[PR 5436]
- turn memory scope includesnapshot to false (#5441)[PR 5441]
- Updated default property path for OAuthInput (#5437)[PR 5437]
- pass through StateConfiguration in DialogManager (#5440)[PR 5440]
- ResumeDialog is not called after resumption with adaptivedialog (#5426)[PR 5426]
- Fixes appsettings.[EnvironmentName].json (#5421)[PR 5421]
- cherry-pick: mark DialogManager property on DialogContext as obsolete (#5410) [PR 5418]
- make LanguagePolicy pluggable (#5416) [PR 5420]
- only load the resource on the first turn (#5414) [PR 5419]
- Update SetSpeakMiddleware to remove lang aligned with existing runtime (#5404) [PR 5407]
- Settings scope: support backward compat setting scope, remove ComponentRegistration in DialogStateManager (#5397) [PR 5398]
- Added AdaptiveTestingBotComponent (#5394) [PR 5400]
- Runtime: Rename assembly to Microsoft.Bot.Builder.Dialogs.Adaptive.Runtime [PR 5386]
- Adapters: Add components and schemas for Facebook, Slack, Twilio and Webex [PR 5385]
- have AdaptiveDialogBot pick up Dialogs from services collection [PR 5384]
- Components: Update tags to...
Bot Framework SDK 4.12.0
November 2021 (version 4.12.4)
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
March 2021 (version 4.12.0)
Welcome to the March 2021 release of the Bot Framework SDK.
-
Telephony Bot Framework Telephony channel is now available with samples in early preview.
-
Teams New and improved samples, Adaptive Card Tabs, Action.Execute (preview, C#) and Composer support (preview).
-
Cloud Adapter Cloud Adapter (preview 2, C#) has improved platform support with increased functionality.
-
Orchestrator Orchestrator (preview 3) now supports more languages, and documentation has been improved.
-
CLI Bot Framework CLI Tools LUIS applications neural training technology support, and more!
-
Azure Health Bot Microsoft Healthcare Bot service is moving to Azure, further empowering organizations to benefit from Azure’s enhanced tooling, security, and compliance offerings.
-
Power Virtual Agents PVA Bot creation, editing and publishing made easy!
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build [C#] [JS] [Python] [CLI] and try the latest updates as soon as they are available. And for the latest Bot Framework news, updates, and content, follow us on Twitter @msbotframework!
Telephony (preview)
The Telephony channel is a channel in Microsoft Bot Framework that enables a bot to interact with users over the phone. It leverages the power of Microsoft Bot Framework combined with the Azure Communication Services and the Azure Speech Services.
Note: Telephony Channel is currently in Public Preview, available broadly for the US-based Azure subscriptions. Get started building a Telephony Bot today: Botframework-Telephony
Cloud Adapter (C# only, preview 2)
• Platform alignment improved with HttpClientFactory
• User authentication improvements with UserTokenClient
• Streaming protocol support integrated into Cloud Adapter
• TurnContext, TurnState and ConnectorClient object lifetime is now properly handled by the SDK, disposing these objects after they are out of scope.
• Cloud Adapter has been deprecated from WebApi
Microsoft Teams
• Adaptive Card Tabs with samples
• Adaptive Dialog responses with new Teams triggers and Actions (preview), available in the C# and JavaScript SDKs as well as the Composer nightly.
• New and improved samples.
Bot Framework CLI Tools
• Added support for LUIS applications neural training technology.
• Enhancements and fixes to LU Parser to support special characters and name duplication on Intents and features.
• Enable direct version publish in luis:build.
Orchestrator (preview 3)
Orchestrator recognizer has been updated for preview 3 as follows:
• Improved language recognition models and samples
• New multilingual models for New multilingual models for Chinese, French, German, Italian, Portuguese and Spanish.
• Updated CLI with support for dispatch migration scenarios.
• Improved support of Composer scenarios.
• Support for 32bit windows for limited scenarios. For production you must use 64bit.
• Updated documentation
Adaptive Cards Invoke (preview, C# sdk only)
• Support for Adaptive Cards Action.Execute
is now available in the C# sdk.
• See also Universal Bot
Bug fixes and improvements
• Add DialogManager support in python sdk
• Fix DialogManager does not return EoC code when a dialog ends
• Fixes in dotnet streaming library
• Localization fixes and improved support for Composer scenarios
Composer
• Please see the detailed Bot Framework Composer release notes
Azure Health Bot
The Health Bot Service is a cloud platform for developers, built on top of Microsoft Azure and uses Bot Framework under the hood. Health Bot Overview.
Introducing Azure Health Bot—an evolution of Microsoft Healthcare Bot with new functionality
by Lili Cheng Corporate Vice President, Conversational AI
Power Virtual Agents
Power Virtual Agents (PVA) is part of Microsoft Power Platform. In PVA, chatbots can be created with a guided, no-code graphical interface - and without the need for data scientists or developers.
In the latest integration with Bot Framework SDK, Power Virtual Agents support for Teams channel Single Sign-on is available in preview.
PVA Teams SSO—Public Preview
by Cleber Mori Senior Program Manager, Power Virtual Agents
Change log for DotNet 4.12.0:
- Update handoff action uischema to show in Composer action menu [5231]
- Add HttpClientFactory [5230]
- Add OnAdaptiveCardInvokeAsync to ActivityHandler [5227]
- Rename entity to value in form related triggers [5228]
- Move Dialogs.Adaptive.Teams to preview [hotfix]
- Remove cloud adapter classes from webapi [5220]
- Updated twitter account [5188]
- Remove OAuthHelper [5221]
- Update orchestrator package reference for 4.12 [5197]
- Sync Teams Adaptive tests w/ JS [5219]
- Localization: fix bugs around inconsistent locale + first step to centralize locale resolution [5218]
- Composer Runtime config [5184]
- Wire up oauthinput to cloudadapter via oauthprompt, rewire oauthprompt [5213]
- Teams AC Tabs adaptive responses [PR 5185]
- Enable LG syntax in OAuthInput Text and Title [PR 5186]
- fix a race condition in the streaming connect test [PR 5194]
- Add 'any' and 'all' prebuilt function [PR 5155]
- Add SendHandoffActivity action [PR 5190]
- Johtaylo/cloudadapterstreaming [PR 5178]
- Clean-up OnChooseEntity and OnChooseProperty schemas and classes [PR 5180]
- Add LogPersonalInformation to Recognizers & Correct TopScoreIntent [PR 5066]
- Security: Do not use compromised cert [PR 5179]
- Update OAuthUrl in TestBot [PR 5176]
- [Expression]Add stringOrValue built-in function [PR 5138]
- fix: null audiences/OAuthScopes shouldn't break streaming [PR 5170]
- Add action policies to .schema [PR 5168]
- Updated DialogManager to return EoC code (as RunAsync does) and updated tests [PR 5164]
- Revert "Fix deliveryMode.ExpectReplies for skills. (#5142)" [PR 5162]
- Small fix for Expression [PR 5154]
- Fix deliveryMode.ExpectRep...
Bot Framework SDK 4.11.0
November 2021 (version 4.11.3)
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
November 2020 (version 4.11.0)
Welcome to the November 2020 release of the Bot Framework SDK. We continue to focus on code quality, improving developer experience, customer requests, overall SDK improvements and partner support. We are previewing a new Cloud Adapter and other exciting things, including:
- Teams Introduction of Teams Meeting Participant API along with new features and fixes.
- Skills We continue our 'skills everywhere!' mission by reducing development friction, enabling interruptions, and additional features.
- Composer Continued improvements in deployment, Skills integration, features flags, and more!
- Orchestrator (preview) Improved samples, models, and Bot Framework Composer support
- Bot Framework Documentation We've added Adaptive Dialog support, updated docs around Adaptive Expressions, and custom .lg functions.
- CLI Improvements to merging and importing of dialogs and assets
- Virtual Assistant Improved core runtime, advancements in skills features
- Power Virtual Agents Thanks to the Bot Framework SDK, it is easier and easier to build a PVA Bot!
- HealthBot Health Bot, built using the Bot Framework, continues to advance in support of multiple Health related initiatives!
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build [C#] [JS] [Python] [CLI] and try the latest updates as soon as they are available. And for the latest Bot Framework news, updates, and content, follow us on Twitter @msbotframework!
Microsoft Teams
Continued improvements enabling features for creating bots and apps in Teams.
- Get Participant Meeting API
- CacheInfo support on Invoke responses
- OAuthInput fix
- Meeting specific notification support
- Add on_teams_team_renamed (python only)
Skills
To reduce development friction, you can now run and test skills locally with the Emulator without needing an AppId and password.
Quality for skills is critical, and we're making large invements in automated testing. That work is (mostly) still in the design phase, and feedback is very welcome:
We're also continuing to bring features to skills to enable additional scenarios:
- Interruptions are enabled in BeginSkill.
- Update and Delete activities from a skill.
Overall SDK Improvements
Code quality and testing infrastructure have continued to be a focus for the this SDK release.
- The default branch on all repositories has been renamed to 'main'.
- We have improved typing and transcript logger middleware behavior and error handling.
- Dotnet SDK tests have been ported to xunit.
- Configurable Adaptive Dialog cycle detection.
- Form Dialog preview
Documentation
Updates and improvements to existing documentation have continued.
- Updated and expanded documentation for adaptive dialogs.
- Updated and reorganized the security and authentication topics.
- Updated information about: .lg custom functions, adaptive expressions, and memory scopes.
- Added Java (preview) reference documentation: https://docs.microsoft.com/en-us/java/api/?term=microsoft.bot.builder
- Added information on how to use the Bot Framework CLI commands in support of various adaptive dialog features.
- Updated skills documentation.
- The claims validator is now required for bot a skill and skill consumer.
- Updated information about Direct Line extensions.
- Updated how to connect to some of the channels: Slack, Webex.
- Archived the SDK v3 content, available at: https://docs.microsoft.com/previous-versions/azure/bot-service/index-bf-sdk
- Updated information about the dialogs library and the overall architecture of a bot.
Cloud Adapter (not yet feature complete, dotnet only)
The Cloud Adapter introduces an enriched configuration model and enables hosting a bot in any cloud environment.
- Supports the Bot Framework protocol and auth model.
- All the constants defining the auth model are configurable.
- Note: 4.11.0 does not have full feature parity with BotFrameworkAdapter
- Streaming support, OAuthPrompt support and full Skill support are coming soon.
- Preview: The recommendation is to continue using BotFrameworkAapter in the 4.11.0 release unless the environment requires configurable auth constants.
Orchestrator Preview
Orchestrator is a Language Understanding arbitration (“dispatch”) technology to route incoming user utterances to an appropriate skill or to subsequent language processing service such as LUIS or QnA Maker.
- It is a transformer based solution that is optimized for conversational AI applications.
- It is built to run locally in your bot.
- It is written in C++ and is available as a library in C#, Node.js and soon Python and Java.
- The current release is designed to be used only for intent detection. Entity recognition is on the roadmap.
- Orchestrator can be used in code-first solutions or directly in Composer.
This is a preview release with improved documentation and language models.
CLI
- The CLI will now download an merge dialog assets.
- Ordering of names while merging.
- Expose import resolver interface for cross-train/luis:build/qnamaker:build
- Region support in lg translate
Virtual Assistant
- Skills improvements
- Core runtime design updates
Composer
- Please see the detailed Bot Framework Composer release notes
HealthBot
The Health Bot Service is a cloud platform for virtual health assistants and health bots, Health Bot uses Bot Framework under the hood. With the latest upgrade to the Bot Framework SDK V4 foundation, Health Bot can be called as a Bot Framework skill or call subsequent custom Bot Framework skills. See more here: Health Bot Overview.
Power Virtual Agents
Power Virtual Agents (PVA) is part of Microsoft Power Platform. In PVA, chatbots can be created with a guided, no-code graphical interface - and without the need for data scientists or developers. In the latest integration with Bot Framework SDK, PVA can be extended to create custom solutions.
- Use Bot Framework Composer to create and connect to Bot Framework skills.
- Publish directly from Bot Framework Composer to PVA portal into PVA Topics runtime (coming soon).
4.11.0 Change Logs
Change log for DotNet 4.11.0
- Teams: MeetingParticipantInfo.InMeeting might be null, if unknown [PR 4868]
- Fix issues with ExpectReplies and Invoke [PR 4845]
- Enable middleware in TestScript and refactor BeginSkill tests [PR 4866]
- DialogContext: tactical change to decouple from TurnContext to remediate breaking changes [PR 4860]
- LU Parser switch to supported Antlr Runtime and Unit Testing [PR 4856]
- Teams: Dispose TeamsConnectorClient [PR 4864]
- IDictionary to ConcurrentDictionary in StreamingRequestHandler [PR 4859]
- Additional values in the issuers list [PR 4857]
- Fix error caused by backtick in stringExpression and valueExpression [PR 4847]
- Reduce concept count by making all entity recognizers to be simple Recognizer [PR 4848]
- Cloudadapter proactive message support [PR 4844]
- Update dependency graph to 4.10.0 [PR 4852]
- Add support for choosing assignment or operations [[PR 4855]](https://github.com/microso...
Bot Framework SDK 4.10.0
November 2021 (version 4.10.7)
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
August 2020 (version 4.10.0)
Welcome to the August 2020 release of the Bot Framework SDK. We are introducing some exciting Additional New Features with Updates and Enhancements. This milestone we focused on all-up quality and engineering debt, broken down across the following pillars:
-
Documentation Includes improvements to existing documentation and net new documentation centered on recurring issues and developer pain points.
-
Customer Supportability Improvements focused on developers seeking assistance using the Bot Framework, tools and SDKs.
-
Customer Ask Implemented enhancements and feature requests from the developer community and 3rd parties using the Bot Framework SDK and tools.
-
Code Quality Enforcement of code styling and format rules, increased testing code coverage, and functional tests.
-
Team Agility Improved validation of SDK code and integration with supporting libraries and environments. Continuous integarion and build pipleline improvements.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build [C#] [JS] [Python] [CLI] and try the latest updates as soon as they are available. And for the latest Bot Framework news, updates, and content, follow us on Twitter @msbotframework!
Documentation
Following feedback from customers and the Bot Framework Support Team, a number of net new documents have been written as well as updates to existing documentation. These are helpful towards providing answers and information relating to recurring issues from bot developers.
- Code comment documentation
- Samples readme improvements
- SDK repository readme and wiki updates
- New documents addressing recurring bot developer issues
Customer Supportability
Developers using the Microsoft Bot Framework have many avenues for getting help. See additional resources Internal tools have been improved to increase the responsiveness of the engineering team in areas of most interest to developers.
- Creation of internal bots and improved tools for customer support
- Improved analytics of trends in customer reported feature requests and issues
- Coordination of labels across
GitHub
repositories
Customer Ask
- Additional Teams channel lifecycle events
- Improved
Application Insights
integration - Coordination of labels across
Git Hub
repositories - Add Locale to
ConversationUpdate
- Update
CardAction
to support alt text for images on buttons - Update
Skill Handler
to returnResource Response
- Release of library using latest
Azure Blobs
storage - Enable custom fields for
Entity
- Fixes to OAuthPrompt timeout and addition of EndOnInvalidMessage
- Various bug fixes and telemetry improvements
Code Quality
- Analyzer rules in place and running (code style and format)
- Unit test code coverage and quality
- Increased profiling of the code base
- Swagger file unified across SDK repositories and version # introduced
- Specific SDKs asks and needs:
- Settings object pattern for C# adapters
- LG dependent files testing (C#)
- Dependency policing (JS)
- Integration tests with Direct Line JS and adaptive cards
Team Agility
Improvements have been made across SDK repositories towards decreased CI pipeline times, improved testing, including both functional integration and unit tests.
Speed
- Reduce time to build for SDKs (local and remote)
- Reduce SDK unit test duration through refactoring and/or concurrent approaches
- Refactor ADO pipelines into smaller, separate jobs or stages
- Run as-applicable pipelines (e.g. no style-checks on .yaml files)
Reliability
- Refine or replace current monorepo/”mono-solution” setups as necessary
- Address nondeterministic build/test failures
- Enable continuous integration for forked pull request submissions
- Complete integration tests added with bots dynamically created
Other Updates and Enhancements
- Microsoft Teams Continued improvements to Microsoft Teams API support
- Bot Framework CLI Tools
Lg
added as core plugin, publish preview builds to npm, other improvements - Bot Builder Samples Readme updates, CI improvements, new Teams
Typescript
samples - Composer Advancements in Skills support and Cognitive Services integration
- Web Chat Many Accessibility improvements
- Emulator Bug fixes and updates
Microsoft Teams
- SDK and
OAuthPrompt
now support Teams SSO - Increased
Adaptive Dialog
support for Teams events - SDK supprot for lifecyle events:
ChannelRestored
,TeamArchived
,TeamUnarchived
,TeamRestored
,TeamDeleted
, andTeamHardDeleted
InstallationUpdate
activity type supportLinkToMessage
added toMessageActionsPayload
Bot Framework CLI Tools
Lg
added as BF-CLI core plugin- Enhancements and fixes to
lu
parser QnaMaker
support extended- Publish daily builds and RCs of
botframework-cli
to npm
Samples
- Readme updates and consolidation across language samples
- Build pipelines for samples CI
- Demonstreate using Locale in
ConversationUpdate
welcome message sample - Additional Teams samples in Typescript
- Teams
TaskModule
samples now includes HTML/JavaScript task modules
Composer
- The Bot Framework SDK continues to support the
Bot Framework Composer
.
See Composer 1.1.1 Release Notes
Web Chat
- Many accessibility improvements and fixes
- Group activity by timestamp and sender
- Convert emoticon to Emoji
- Added scrolling API: allow save/restore scroll position and scroll to specific activity
Emulator
- Added an additional log panel entry on conversation start that displays the current bot's endpoint
- Fixed a bug where trying to open the sign-in link on an OAuth card when ngrok was not configured would cause the Windows File Explorer to open
- Improved CONTRIBUTING.md to more accurately reflect requisites to build the Emulator from source
- Updates to Cosmos DB service editor dialog
Additional New SDK Features
-
Orchestrator: Transformer based solution that runs locally with your bot to dispatch across one or more Bot Builder Skills or LUIS applications or QnA Maker Knowledgebase.
-
Microsoft.Bot.Builder.Azure.Queues (preview) Enables more easily interacting with Azure Queues and
ContinueConversationLater
Dialog. (Currently .NET only, coming soon to other languages) -
Microsoft.Bot.Builder.Azure.Blobs
BlobsStorage
andBlobsTranscriptStore
implementations replacingAzureBlobStorage
andAzureBlobTranscriptStore
. This library uses Azure.Storage.Blobs and is a replacement for the older Microsoft.Azure.Storage.Blob used by Microsoft.Bot.Builder.Azure. (Currently .NET only, coming soon to other languages)
Changelog for v4.10.0:
- Add Bot.Builder.Azure.Blobs and Bot.Builder.Azure.Queues [PR 4419]
- [CI-PR Pipelines] Skip tests in Debug builds [PR 4416]
- Fix Cosmos tests throwing due to wrong Exception specification [[PR 4415]](https://github.com/microsoft...
Bot Framework SDK 4.9
November 2021 (version 4.9.7)
This release introduces a global flag called "Templates.EnableFromFile" that indicates whether the Adaptive Expression fromFile function is allowed in LG templates. If an application had previously made use of this function, it is now required to add the line "Templates.EnableFromFile = true;" to the Startup.cs code.
May 2020 (version 4.9.0)
Welcome to the May 2020 release of the Bot Framework SDK. There are a number of updates in this version that we hope you will like; some of the key highlights include:
- Skills - Skills now support adaptive dialogs and all activity types, and have improved support for SSO and OAuth. The v2.1 skill manifest is now GA. We also added Bot Framework Composer support for building and consuming Skills.
- Microsoft Teams - Improvements in Microsoft Teams API support, including support in Java!
- Bot Telemetry - Mapping of Dialogs into Azure AppInsights Page View Events.
- Health Check APIs - Quickly verify a bot is running.
- Adaptive Dialogs - A more flexible, event driven dialog system for implementing multi-turn conversational patterns.
- CLI tools for Adaptive Dialogs - new ability to merge and validate adaptive schema assets.
- Language Generation - Add language and personality responses to your bot conversations.
- Adaptive Expressions - Use bot aware expressions to react to user input and drive bot functionality.
- Authentication Improvements - SSO between Bots and Skills and improvements to X.509 auth.
- Generated Dialogs (Early Preview) - Automatically create robust Bot Framework Composer assets from JSON or JSON Schema that leverage Adaptive Dialogs.
- VS Code debugger for Adaptive Dialogs (Early Preview) - Create & validate .lu and .lg documents as well as debug declaratively defined adaptive dialogs.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build [C#] [JS] [Python] [CLI] and try the latest updates as soon as they are available. And for the latest Bot Framework news, updates, and content, follow us on Twitter @msbotframework!
Skills
Skills have been updated to work with adaptive dialogs, and both adaptive and traditional dialogs will now accept all types of activities.
The skill manifest schema has been updated to version 2.1. Improvements in this version include the ability to declare & share your language models, and define any type of activity that your skill can receive.
This release also includes authentication improvements with skills, including using SSO with dialogs, and OAuth without needing a magic code in WebChat and DirectLine.
Microsoft Teams
We continue to focus on making sure all the Teams-specific APIs are fully supported across our SDKs. This release brings full support for Microsoft Teams APIs in the preview Java SDK, including samples.
The OnTeamsMemberAdded
event in the activity handler has been updated to use the get single member endpoint under the covers, which should significantly reduce latency and reliability of this event in large teams.
The TeamsChannelAccount
object has been updated to include userRole
(one of owner, member, or guest) and tenantId
(for the user's tenantId).
Bot Telemetry
Bots now capture Page View events, native to Application Insights, whenever a dialog is started. This allows you to use the User Flows dashboard in Application Insights to see how users move through your bot, between dialogs and where they drop out.
Health Check APIs
Support was added for a new invoke named healthCheck
that allows a sender to verify if a bot is responding to requests, and if trust can be established between the sender and the bot. The bot also has the option of overriding the response to add additional health information in the response.
Adaptive Dialogs
We’re also excited to make Adaptive Dialogs generally available in C# and as a preview release in JavaScript!
Adaptive Dialogs, which underpin the dialog design and management authoring features found in Bot Framework Composer, enable developers to dynamically update conversation flow based on context and events. This is especially useful when dealing with more sophisticated conversation requirements, such as context switches and interruptions. Bot Framework Skills can now also leverage Adaptive Dialogs.
Adaptive Dialogs also now support Telemetry. Data from Adaptive Dialogs, including triggers, actions and recognizers now flow into your Azure Application Insights instance.
CLI tools for Adaptive Dialogs
CLI tools for Adaptive Dialogs, Language Generation, QnaMaker and Luis Cross-train - new ability to merge and validate adaptive schema assets, augment qna and lu files, create/ update/ replace/ train/ publish LUIS and or QnA maker application and Language Generation templates manipulation.
New CLI Tools were added for management of Adaptive Dialogs.
- bf-dialog supports merging dialog schema files and verify file format correctness.
- bf-luis Adds commands to augment lu files and create/ update/ replace/ train/ publish LUIS
- bf-qnamaker Adds commands to augment qna files and create/ update/ replace/ train/ publish QnAMaker
- bf-lg Parse, collate, expand and translate lg files.
Language Generation
LG is Generally Available (GA) on both the C# and JS Platforms.
Language Generation (LG) enables you to define multiple variations of a phrase, execute simple expressions based on context, and refer to conversational memory. At the core of language generation lies template expansion and entity substitution. You can provide one-off variation for expansion as well as conditionally expanding a template. The output from language generation can be a simple text string or multi-line response or a complex object payload that a layer above language generation will use to construct a complete activity. The Bot Framework Composer natively supports language generation to produce output activities using the LG templating system.
You can use Language Generation to:
- Achieve a coherent personality, tone of voice for your bot.
- Separate business logic from presentation.
- Include variations and sophisticated composition for any of your bot's replies.
- Construct cards, suggested actions and attachments using a structured response template.
Language Generation is achieved through:
- A markdown based .lg file that contains the templates and their composition.
Full access to the current bot's memory so you can data bind language to the state of memory. - Parser and runtime libraries that help achieve runtime resolution.
Adaptive Expressions
Adaptive Expressions are Generally Available (GA) on both the C# and JS Platforms.
Bots use expressions to evaluate the outcome of a condition based on runtime information available in memory to the dialog or the Language Generation system. These evaluations determine how your bot reacts to user input and other factors that impact bot functionality.
Adaptive expressions were created to address this core need as well as provide an adaptive expression language that can used with the Bot Framework SDK and other conversational AI components, like Bot Framework Composer, Language Generation, Adaptive dialogs, and Adaptive Cards.
An adaptive expression can contain one or more explicit values, pre-built functions or [custom functions. Consumers of adaptive expressions also have the capability to inject additional supported functions. For example, all Language Generation templates are available as functions as well as additional functions that are only available within that component's use of adaptive expressions.
Authentication Improvements
We added support for single sign-on while using Expect Replies. This applies to SSO performed between a pair of bots: host and a skill.
For Bot Identification we've added the ability to specify sendx5c
parameter for certificate authentication. This feature was requested by customers and allows for more flexibility when using cert auth.
Additional Sovereign Clouds are supported.
Generated Dialogs - Early Preview
The Bot Framework has a rich collection of conversational building blocks, but
creating a bot that feels natural to converse with requires understanding and
coordinating across language und...
Bot Framework SDK 4.8
What's in this release?
SSO
- SSO support with AAD and WebChat (Docs WIP)(Sample)
Adaptive Dialogs, Adaptive Expressions, & Language Generation
- 🎉
rc0
- this is our first release candidate for Adaptive Dialogs, Adaptive Expressions, & Language generation. We encourage folks to give this a try in development and non-critical scenarios. - 🪓 BREAKING CHANGES - There is a number of breaking changes. Please see the details here: Adaptive - LG/ expressions
Skills
Expanded support for a number of scenarios in Skills, including
- Support for custom adapters that require a request/response flow
- Authentication with OAuth and SSO
- Expanded definitions possible in the Skills manifest file
- Handing off to a skill as part of a dialog
- v3 SDK and cross-language interop
Teams
Added support for a new get single member endpoint, and expanded support for the get paged members endpoint.
Changelog for v4.8.0:
- Add Ephemeral to DeliveryModes, update comments [PR 3522]
- Keep handoff event value as JObject [PR 3521]
- Disable warnings for SkillConversationIdFactoryBase methods in tests [PR 3518]
- Fix null reference in debugger [PR 3517]
- Change DeliveryMode bufferedReplies to expectReplies [PR 3515]
- Set up CI build to get coveralls token from key vault [PR 3514]
- Port: refence a custom function in LG imports [PR 3513]
- Add triggers for Webex test build [PR 3511]
- Standardize triggers & coding across builds [PR 3508]
- Added interruptions support to SkillDialog [PR 3507]
- Set up Facebook functional test key vault variables [PR 3505]
- Skill OAuth only change card action for emulator [PR 3503]
- Add 'ephemeral' as the list of options for Delivery Mode [PR 3502]
- Update LG template content range [PR 3501]
- Update Constant Expression ToString method [PR 3500]
- Add new fields and remove auto-generated text. [PR 3499]
- Adds support for buffered replies to skill dialog [PR 3496]
- Functional test Linux fixes [PR 3494]
- Adaptive Telemetry Instrumentation [PR 3491]
- Add support for SSO to parent and child bot projects for manual testing [PR 3489]
- Normalize Linux functional test variables [PR 3487]
- Fixed issue with null attachment arrays in AttachmentInput [PR 3486]
- Fix issues with TestBot. [PR 3485]
- Set up Webex functional tests to use key vault secrets [PR 3484]
- clean up activityhandler and teamsactivityhandler [PR 3482]
- Normalize variables in Windows functional test pipeline [PR 3481]
- Set up key vault for slack functional tests secrets [PR 3478]
- Add originatingAudience to SkillHttpClient.PostActivityAsync [PR 3477]
- Set up key vault storage for functional test build secrets [PR 3476]
- SkillDialog updates [PR 3474]
- Get member changes for Teams [PR 3473]
- API naming for Expression [PR 3471]
- Add new function in expression [PR 3470]
- Add LG telemetry [PR 3469]
- Switch from union to interface/implements in component schema [PR 3468]
- fix memory scope for class memory sscope to evaluate expressionProperties [PR 3463]
- Renamed SequenceContext to ActionContext [PR 3461]
- Updates to SkillDialog based on VA feedback. [PR 3458]
- Fix YAML file for functional-test-unix [PR 3457]
- Update generated tests to use ${} and latest naming [PR 3455]
- add deliverymode bufferedreplies [PR 3454]
- Add AdaptiveSkillDialog [PR 3453]
- Add additional null check in Telemetry [PR 3452]
- Added null check and code to return default(T) in GetPropertyValueAsync [PR 3448]
- [Expression] make indexOf/lastIndexOf function support list [PR 3444]
- Update TelemetryClient to enable tracking of dialog ('page') views [PR 3440]
- use standard OAuthScopes in CreateOAuthApiClientAsync [PR 3439]
- Fix errors when From is null in telemetry [PR 3436]
- Add comments to Webex test yaml build [PR 3435]
- [LG] support custom function [PR 3434]
- fix Dynamic properties do not work [PR 3433]
- fix LG small issue [PR 3428]
- update adaptive inputs to set inputHint = expectingInput [PR 3427]
- add contentType to HttpAction [PR 3426]
- Move Declarative test classes into Microsoft.Bot.Builder.Dialogs.Adaptive.Testing [PR 3425]
- fallback to .value property if there is no text. [PR 3423]
- Fix @ resolver to deal with complex objects correctly [PR 3422]
- Fix BotStateScope to show full botState and give control for dialogState Property name [PR 3421]
- Comment out vars that are supposed to be set in azure [PR 3420]
- Coveralls fix [PR 3419]
- Fix code coverage upload [PR 3417]
- Add coveralls token to coveralls upload step [PR 3416]
- Trigger fixes [PR 3415]
- Clean up unused LUIS vars [PR 3414]
- Disable the Stale Actions [PR 3412]
- Set up more trigger excludes [PR 3411]
- Set up excludes for yaml build triggers [PR 3410]
- [Skills] Refactor BFAdapter Auth, Add support for proactively messaging non-channel recipients [PR 3409]
- Add comment. [PR 3408]
- Add SourceLink to these 3 projects [PR 3404]
- Update DialogContext.cs [PR 3403]
- Fix Delete resource group task conditional [PR 3400]
- Create WebSocketClient.ConnectAsyncEx method to accept CancellationToken optionally [PR 3399]
- Enhance the functionali...