cleemullins
released this
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
GitHubrepositories
Customer Ask
- Additional Teams channel lifecycle events
- Improved
Application Insightsintegration - Coordination of labels across
Git Hubrepositories - Add Locale to
ConversationUpdate - Update
CardActionto support alt text for images on buttons - Update
Skill Handlerto returnResource Response - Release of library using latest
Azure Blobsstorage - 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
Lgadded as core plugin, publish preview builds to npm, other improvements - Bot Builder Samples Readme updates, CI improvements, new Teams
Typescriptsamples - Composer Advancements in Skills support and Cognitive Services integration
- Web Chat Many Accessibility improvements
- Emulator Bug fixes and updates
Microsoft Teams
- SDK and
OAuthPromptnow support Teams SSO - Increased
Adaptive Dialogsupport for Teams events - SDK supprot for lifecyle events:
ChannelRestored,TeamArchived,TeamUnarchived,TeamRestored,TeamDeleted, andTeamHardDeleted InstallationUpdateactivity type supportLinkToMessageadded toMessageActionsPayload
Bot Framework CLI Tools
Lgadded as BF-CLI core plugin- Enhancements and fixes to
luparser QnaMakersupport extended- Publish daily builds and RCs of
botframework-clito npm
Samples
- Readme updates and consolidation across language samples
- Build pipelines for samples CI
- Demonstreate using Locale in
ConversationUpdatewelcome message sample - Additional Teams samples in Typescript
- Teams
TaskModulesamples now includes HTML/JavaScript task modules
Composer
- The Bot Framework SDK continues to support the
Bot Framework Composer.
See Composer 1.1.0 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
ContinueConversationLaterDialog. (Currently .NET only, coming soon to other languages) -
Microsoft.Bot.Builder.Azure.Blobs
BlobsStorageandBlobsTranscriptStoreimplementations replacingAzureBlobStorageandAzureBlobTranscriptStore. 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:
- updating lodash [PR 927]
- Fix lu parser to handle feature assignment via imports [PR 926]
- Fix loadContents not working issue when loading both non-empty and empty files in luis/qnamaker:build [PR 925]
- Add support for URI reference in LU [PR 923]
- Fix LUIS JSON to LU to handle hierarchical entities correctly [PR 921]
- fix lu parser to accept quotes and interchanageable label in pharselist definition [PR 915]
- Remove deprecated module: "request" from cli [PR 913]
- Refactor confusion matrix api .1 [PR 912]
- Build yaml files refactor [PR 911]
- optimize lu parser to improve parsing performance and robustness [PR 910]
- Handle locale in .uischema. [PR 909]
- Continue improving the LU section CRUD's performance [PR 905]
- refactor Confusion Matrix API [PR 904]
- Able to add any extension as a CLI pattern [PR 903]
- fix multiturn id mismatching issue [PR 902]
- Improve the CRUD performance of LU sections [PR 901]
- Updated serviceBase.js to fix the HTTPS_PROXY [PR 899]
- enable to configure luis publishing slot enviroment [PR 898]
- Set build Version try 9 [PR 897]
- Set build version try 8 [PR 896]
- Set Build Version try 6 [PR 895]
- Set Build Version try 4 [PR 894]
- Setting Build Version try number 3 [PR 893]
- Setting build version [PR 892]
- Setting commit SHA to be 7 digits [PR 891]
- Adding daily build yml file [PR 890]
- cross train and lu/qna build optimization for composer [PR 889]
- Fix lu parser to handle phrase lists with
enabledForAllModels = false[PR 882] - Removing SDK from LUIS endpoint calls [PR 877]
- Update CONTRIBUTING.md [PR 873]
- Fix codecov.io report URL in build tag [PR 872]
- Add chitchat dataset in qna format to docs. [PR 869]
- Add bf cli build spec [PR 864]
- add id for generated recognizer and multiLang recognizer [PR 858]
- regex_entities alternative format fix [PR 857]
- Add docs for cross-train command for both luis and qnamaker [PR 856]
- CRUD optimizations for qna sections [PR 854]
- Support merging .uischema files [PR 852]
- fix help string for qnamaker [PR 851]
- Publish cobertura code coverage to codecov.io [PR 850]
- add --force and --log arg for cross-train cli [PR 847]
- support endpoint via arg or cli config for luis and qnamaker build [PR 845]
- add $schema for luis build and qnamaker build dialog files [PR 844]
- qnamaker:build support --qnaConfig [PR 840]
- Throw exception when parsing entity name contains invalid char [PR 837]
- Update porting map [PR 833]
- Adds missing 'of' text in README.md [PR 832]
- add retry for luis rate limiting issue [PR 830]
- Switch luis sdk to node-fetch [PR 829]
- fix activeVersion is null issue when updating application failed [PR 827]
- fix lu parser error when invalid square brackets occur in utterances [PR 825]
- resolve cross train issues [PR 814]
- Various fixes to bf-lu [PR 813]
- resolve qnamaker build issues [PR 812]
- resolve luis build issues [PR 804]
- Update BF-LU to update validation for entity references in patterns [PR 803]
- BF-LU: Deep references to phrase lists are now handled correctly [PR 802]
- updates to doc references to lu and qna file format [PR 799]
- Fix for direct luis direct version publish [PR 798]
- fix the priority of stdin and in [PR 796]
- Remove unnecessary validation that required child entity names to be globally unique [PR 793]
- LU parser - correctly parses multiple phrase lists with enabledForAllModels definition [PR 792]
- [R10] fix replace api issue [PR 786]
- [R10] fix issues #770 and #778 [PR 785]
- Update dialog:merge tests around projects [PR 784]
- fix section operator bug [PR 782]
- Fixing dialog docs to match standard [PR 780]
- fix to handle pl with spaces correctly [PR 779]
- Fix lu converter to handle cases with space in child entity names [PR 775]
- [Master] luis:build remove prediction options being written out [PR 771]
- Fix for luis:version:clone and lg docs [PR 767]
- fix lu validation bugs for empty comments and single curly bracket (#� [PR 764]
- Deleting unintended commited file [PR 762]
- fix pattern issue in cross train (#759) [PR 761]
- Add lg as BF-CLI core plugin [PR 750]
Assets
2
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 understanding, language generation and dialog
management. To simplify this process and capture best practices, we've created
the bf-generate plugin for the BotFramework CLI tool. The
generated dialogs make use of event-driven adaptive dialogs with a rich and
evolving set of capabilities including:
- Handle out of order and multiple responses for simple and array properties.
- Add, remove, clear and show properties.
- Support for choosing between ambiguous entity values and entity property mappings.
- Recognizing and mapping for all LUIS prebuilt entities.
- Help function, including auto-help on multiple retries.
- Cancel
- Confirmation
VS Code Debugger - Early Preview
Adaptive tools is a brand new Visual studio code extension you can use to create/ validate .lu and .lg documents as well as debug declaratively defined adaptive dialogs. This extension provides rich authoring & editing capabilities for .lu and .lg file formats including syntax highlighting, auto-suggest and auto-complete.
We anticipate adding an early preview to the VS Marketplace shortly after this release.
Bot Builder Community
During this release, the Bot Builder Community has further raised the bar by adding more features, more adapters, and fixing more bugs.
-
A revised C# Alexa Adapter and Google Home Adapter Re-built from the ground up, starting with Alexa, to allow the adapters to be consumed by Azure Bot Service and made available as channels. Improvements include better native activity type mapping, improved markdown rendering and support for more complex scenarios (such as merging multiple outgoing activities).
-
A new C# Zoom Adapter. Currently supports Zoom 1:1 and channel chat capabilities, being converted to native BF activity types. Also supports the subscribing to any event a Zoom as supports (translated into Event activities), with full support for Zoom interactive messages and rich message templates.
-
A RingCentral Adapter. The RingCentral Engage adapter allows you to add an additional endpoint to your bot for RingCentral Engage Digital Platform integration. The RingCentral endpoint can be used in conjunction with other channels meaning, for example, you can have a bot exposed on out of the box channels such as Facebook and Teams, but also integrated as an RingCentral Engage Digital Source SDK into RingCentral.
New CLI Tools
New CLI Tools were added for management of Adaptive Dialogs, Language Understanding, qna and lu resources.
Please refer to relevant docs for more details:
bf dialog
Dialog related commands for working with .schema and .dialog files.
USAGE
$ bf dialog
OPTIONS
-h, --help Dialog command help
COMMANDS
dialog:merge Merge component .schema files into an app.schema.
dialog:verify Verify .dialog files match their app.schema.
bf lg
Parse, collate, expand and translate lg files.
USAGE
$ bf lg
OPTIONS
-h, --help lg command help
COMMANDS
lg:expand Expand one or all templates in .lg file(s). Expand an inline expression.
lg:translate Machine translate .lg files using Microsoft Translator Text API.
lg:verify Verify .lg file(s) and collate them into a single file.
bf luis:cross-train -h
Lu and Qna cross train tool
USAGE
$ bf luis:cross-train
OPTIONS
-h, --help luis:cross-train help
-i, --in=in source lu and qna files folder
-o, --out=out output folder name. If not specified, the cross trained files will be wrote to cross-trained folder under folder of current command
--config=config path to config file of mapping rules which is relative to folder specified by --in. If not specified, it will read default config.json from the folder specified by --in
--intentName=intentName [default: _Interruption] Interruption intent name
--rootDialog=rootDialog rootDialog file path which is relative to folder specified by --in. If --config not specified, cross-trian will automatically construct the config from file system based on root
dialog file
build -h
Build .qna files to create or update qnamaker knowledge bases and qnamaker alterations
USAGE
$ bf qnamaker:build
OPTIONS
-b, --botName=botName (required) Bot name
-f, --force If --dialog flag is provided, overwrites relevant dialog file
-h, --help show CLI help
-i, --in=in Source .qna file or folder
-o, --out=out Output file or folder name. If not specified, current directory will be used as output
-s, --subscriptionKey=subscriptionKey (required) QnA maker subscription key
--defaultCulture=defaultCulture Culture code for the content. Infer from .qna if available. Defaults to en-us if not set
--dialog=dialog [default: multiLanguage] Write out .dialog files whose recognizer type [multiLanguage|crosstrained] is specified by --dialog
--fallbackLocale=fallbackLocale Locale to be used at the fallback if no locale specific recognizer is found. Only valid if --dialog is set
--log write out log messages to console
--region=region [default: westus] Overrides public endpoint https://<region>.api.cognitive.microsoft.com/qnamaker/v4.0/
--suffix=suffix Environment name as a suffix identifier to include in qnamaker kb name. Defaults to current logged in user alias
EXAMPLE
$ bf qnamaker:build --in {INPUT_FILE_OR_FOLDER} --subscriptionKey {SUBSCRIPTION_KEY} --botName {BOT_NAME} --dialog
bf qnamaker:cross-train -h
Lu and Qna cross train tool
USAGE
$ bf qnamaker:cross-train
OPTIONS
-h, --help luis:cross-train help
-i, --in=in source lu and qna files folder
-o, --out=out output folder name. If not specified, the cross trained files will be wrote to cross-trained folder under folder of current command
--config=config path to config file of mapping rules which is relative to folder specified by --in. If not specified, it will read default config.json from the folder specified by --in
--intentName=intentName [default: _Interruption] Interruption intent name
--rootDialog=rootDialog rootDialog file path which is relative to folder specified by --in. If --config not specified, cross-trian will automatically construct the config from file system based on root
dialog file
Changelog for v4.9.0:
- Add lg as BF-CLI core plugin [PR 750]
- Bump version [PR 746]
- Remove $id from schema:merge and enable authoringKey in luis:build [PR 744]
- CLI consistency of dialog:verify with dialog:merge, luis:build with config [PR 741]
- Chrimc/id [PR 739]
- Update merge for better composer support, error checking, compactness and correctness [PR 737]
- Adding in codeowners file [PR 735]
- Updates to BF-LU API [PR 734]
- v7 upgrade throw patterns w/ ref to child entities [PR 733]
- Disable merge tests. [PR 732]
- luis build support to extract authoringKey set by config:set [PR 731]
- Updates to LU round tripping with luis_schema_version 7.0.0 [PR 730]
- update component location [PR 729]
- fix typo in example [PR 728]
- [luis build] change string format in setting and luis recognizer [PR 718]
- support multi trigger intents point to same lu file [PR 714]
- fix source .vs. ID order in JSON -> QnA format [PR 710]
- write out prediction options [PR 709]
- Support closed list as instanceOf entity in V6 schema [PR 708]
- fix #696 [PR 707]
- optimize cross train core lib to support more corner cases [PR 706]
- Remove generation from dialog. [PR 705]
- fix throttling issue when calling deleting old version api [PR 704]
- Weight support, fixing CV/test indexing bug, and refactoring [PR 701]
- [qnamaker] Export as well as replace support for .qna format [PR 695]
- cross train CLI [PR 690]
- fix update and delete section api [PR 689]
- refactor evaluation API [PR 688]
- fix: bf-lu bug fixes [PR 684]
- Assign azure accounts to Luis [PR 683]
- Update plugins Readme [PR 680]
- optimize section body extraction and error handling [PR 679]
- Optimize LUFileParser.g4 to accelerate parsing of simple intent section with a large number of entities [PR 677]
- Fix comparing luis applications bug in lu build [PR 672]
- expose getActiveVersionIds function in lubuild [PR 671]
- try to parse lu content with errors instead of returning with empty sections directly [PR 668]
- Emimunoz/fix composite luis [PR 662]
- Replace cognitive services with node-fetch on import in lubuild [PR 661]
- optimize error msg text when error comes from imported files [PR 659]
- Replace cognitive services with node-fetch on import [PR 658]
- LU fixes [PR 657]
- qnamaker build CLI [PR 654]
- update luis authoring package version in lu package [PR 649]
- Generating docs and removing dialog dependency from master [PR 648]
Assets
2
Changelog for v4.8.0:
bf plugins command group
New Commands: This group of commands allow the user to dynamically install Bot Framework preview commands .
bf plugins
Install, uninstall and show installed plugins
USAGE
$ bf plugins
OPTIONS
--help Display plugins commands help.
COMMANDS
plugins:install Installs a plugin into the BF CLI
plugins:list List installed plugins
plugins:uninstall Removes a plugin from the BF CLI
bf luis:build
New Command: Build lu files to train and publish luis applications
USAGE
$ bf luis:build
OPTIONS
-f, --force If --dialog flag is provided, overwirtes relevant dialog file
-h, --help show CLI help
-i, --in=in Lu file or folder
-o, --out=out Output file or folder name. If not specified, current directory will be used as
output
--authoringKey=authoringKey (required) LUIS authoring key
--botName=botName Bot name
--defaultCulture=defaultCulture Culture code for the content. Infer from .lu if available. Defaults to en-us
--dialog Write out .dialog files
--fallbackLocale=fallbackLocale Locale to be used at the fallback if no locale specific recognizer is found. Only
valid if --dialog is set
--log write out log messages to console
--luConfig=luConfig Path to config for lu build
--region=region [default: westus] LUIS authoring region [westus|westeurope|australiaeast]
--suffix=suffix Environment name as a suffix identifier to include in LUIS app name. Defaults to
current logged in useralias
EXAMPLE
$ bf luis:build --in {INPUT_FILE_OR_FOLDER} --authoringKey {AUTHORING_KEY} --botName {BOT_NAME} --dialog {true}
bf luis:generate
Added support for luis new schema 6.0.0
@microsoft/bf-lu v2 API
New API v2 and decoupling of oclif libraries to improve performance.
CI compatibility
The CLI now detects CI environments by reading BF_CLI_TELEMETRY environment variable
--json flag added to luis commands which can be consumed as JSON
PR History
- Luis output format CI compatible [PR 646]
- fix lu build bug when training empty intents [PR 643]
- Switch to chrimc62 packages. [PR 642]
- Removing unused libraries [PR 639]
- Bf-LU test cleanup and other fixes [PR 638]
- Make Tag Build conditional on IsFork [PR 637]
- Add link for full command usage documentation [PR 636]
- Bot is now integral to az, not an extension [PR 634]
- Verbose Build Tests [PR 631]
- Adding nightly build instructions [PR 628]
- bf-lu: update some function to support load file content directly [PR 626]
- Emimunoz/clarify documentation [PR 625]
- Update CONTRIBUTING.md [PR 624]
- Composite entity definitions can now be split across different .lu files [PR 622]
- Switch to interface/implements in dialog:merge. [PR 621]
- Switch to using ${} instead of @{} [PR 618]
- bf-luis moving username to dependency [PR 617]
- Vishwac/lu recursive resolve [PR 615]
- Updating tests [PR 607]
- removing bin [PR 606]
- formatting multilines [PR 604]
- Fixing bf-lu required files [PR 603]
- Fixed typos [PR 602]
- cross-train core library in bf-lu [PR 601]
- inline functions [PR 600]
- Refactor lu api [PR 597]
- Cleanup docs [PR 596]
- Nigao/boolean [PR 595]
- Remove CI telemetry instructions [PR 594]
- fix the name bug in read form [PR 590]
- Fix for various LU bugs [PR 585]
- Deleting commands from lu api package [PR 584]
- Nigao/splitlibrary [PR 583]
- Spliting commands from lu-cli to luis and qnamaker [PR 581]
- Updated specs [PR 580]
- Correct 2 wording issues [PR 579]
- fixed 2 spelling issues [PR 578]
- Fixed typos [PR 577]
- [Lubuild] fix multiple bugs: case sensitive issue, default version issue and exception not throw out issue [PR 576]
- Update to current .lu file format [PR 575]
- Nigao/renaming [PR 573]
- LG spec [PR 572]
- Fixing tslint issue on build command [PR 569]
- LU CLI separation from lib [PR 568]
- Update usage of B_CLI_TELEMETRY flag in CI pipelines [PR 563]
- add numberSetdimension.dialog [PR 560]
- Fixes #550, #255 [PR 558]
- Update issue templates [PR 557]
- bf-lu perf updates [PR 554]
- Silent ci install [PR 551]
- Fix bug that prevented late expansion in schema. [PR 546]
- build: remove lerna.json [PR 545]
- Adding config:set command and standardizing set behavior [PR 542]
- streamline dispatcher IO and clean up after unit tests [PR 541]
- Fix chatdown broken link [PR 539]
- Changes to support Luis schema v6.0.0 [PR 534]
- Builds for Win & Mac [PR 532]
- Handle duplicate utterances with entity definition [PR 531]
- Adding docs to chatdown [PR 530]
- Setting qnamaker:kb:export to default environment to Prod [PR 524]
- Update merge to include string in union [PR 522]
- fix file content unit tests, add entries to index.ts [PR 521]
- add number validation [PR 520]
- LU improvements for R8 [PR 514]
- Fix bug - pass array by value [PR 513]
- Add force flag to config:set:luis [PR 512]
- Adding '--wait' flag to luis
🚋 run' to print completion status [PR 511] - Add multi-turn support in qna file format [PR 508]
- Axsuarez/onerror cs serializer [PR 506]
- fixed namespace scenario for lugen cs [PR 501]
- Add the ability to override generated templates [PR 500]
- Upgrade azure auth and runtime clients [PR 497]
- Update luis:build and dialog:generate [PR 496]
- build: bump rush 5.19.1 [PR 495]
- ci: ignore doc changes for CI [PR 494]
- build: update rush 5.19, pnpm 4.8 [PR 493]
- Fix LU parser to handle pattern.any any definitions added by prebuilt domain import [PR 492]
- Updating roadmap and mapping for release schedule [PR 491]
- fix a bug in file name [PR 487]
- Nigao/ordinaldatetime [PR 486]
- add phonenumber to unittests [PR 485]
- fix a bug in genCopy, add = for all set property [PR 484]
- Doc fix qnamaker:convert [PR 483]
- LU file Format Doc: fix escape character in code blocks [PR 481]
- [lubuild] optimize lu lexer and parser [PR 480]
- [LU Parser] Optimize error messages [PR 478]
- [Lubuild] Expose lu build core for composer [PR 477]
- Fix bug where empty array was indexed in build. [PR 474]
- Fix bug that would prevent creating first model. [PR 471]
- fix sandwich schema. remove mapping from number to dimension [PR 470]
- Update documentation and switch to bf luis:build [PR 469]
- Optimize section operator and lu parser for managed lu requirements [PR 466]
- [lubuild] cli param typo optimization, bug fixes and test optimization [PR 465]
- add Luis TestDevSpec [PR 464]
- Nigao/readselection [PR 463]
- Chrimc/entities [PR 460]
- Nigao/priority [PR 459]
- Chrimc/entities [PR 458]
- Bf cli luis functional tests [PR 457]
- [Spec] QnA Maker BUILD [PR 456]
- Adding Plugins command group to manage plugins at runtime [PR 455]
- change section id to specific pattern [PR 454]
- Call posttest script in build, fix lint issues [PR 451]
- Change order of plugin includes [PR 447]
- fix bugs [PR 446]
- fix a bug [PR 443]
- Update urls in cli readme [PR 442]
- Updating readme, fixurl script & cmd descriptions [PR 440]
- Switch to public versions of botframework-expressions and botbuilder-lg. [PR 437]
- Nigao/moneyschema [PR 435]
- Use name flag val to override name in app json if present [PR 432]
- Add pre-generation schema expression eval. [PR 431]
- Nigao/moneyschema [PR 430]
- Chrimc/utterance [PR 429]
- Various qa fixes [PR 427]
- Chrimc/utterance [PR 426]
- Nigao/testschema [PR 425]
- Enable template: as a $ref protocol. [PR 424]
- lubuild support in bf cli [PR 422]
- fix bugs of lu lexer [PR 421]
- Formatting publish response json [PR 419]
- Explicitly generate LUIS recognizer to support getting $instance [PR 418]
- Fixing casing on createkb require [PR 413]
- Adding 'endpoint' to config init [PR 411]
- Adding version unit tests [PR 410]
- build: fix install issues [PR 405]
- Make this pipeline run at midnight local time [PR 402]
- Adding luis:init cmd [PR 401]
- ci: publish artifacts [PR 396]
Assets
2
New Luis Api commands
4.7 version adds new commands under the Luis command group to access the new LUIS V3 API:
luis:application:create Creates a new LUIS application
luis:application:delete Deletes a LUIS application
luis:application:import Imports LUIS application from JSON or LU content.
luis:application:list Lists all applications on LUIS service.
luis:application:publish Publishes application's version
luis:application:query Queries application for intent predictions
luis:application:rename Renames the application and updates its description
luis:application:show Shows application information
luis:endpoints:list Returns available deployment endpoints
luis:train:run Issues asynchronous training request for LUIS application
luis:train:show Shows training status
luis:version:clone Creates a new version equivalent to the current snapshot of the selected application version.
luis:version:delete Deletes a LUIS application version
luis:version:export Exports a LUIS application to JSON format
luis:version:import Imports a new version into a LUIS application from JSON or LU content.
luis:version:list Returns application's versions
luis:version:rename Renames application version
- 317 luis application query [PR 388]
- chore: fix dialog debugging [PR 387]
- Chrimc/form [PR 384]
- Fix to BF-LU to exclude empty descriptors on intents (from JSON -> LU) [PR 383]
- Add luis
🚋 run [PR 382] - chore: swap to rush/pnpm & azure-pipelines.yml [PR 381]
- Add luis
🚋 show cmd [PR 380] - Adding luis:application:show cmd [PR 379]
- Adding luis:version:rename cmd [PR 378]
- Adding luis:application:rename cmd [PR 377]
- Add luis:application:publish cmd [PR 376]
- Adding luis:version:list cmd [PR 375]
- Adding luis:endpoints:list cmd [PR 374]
- Adding luis:application:list cmd [PR 371]
- 307 luis version import [PR 369]
- Added tool deprecation schedule [PR 368]
- Adding luis:application:import cmd [PR 367]
- Fix to update LU parser to support phrase list flags - enabledForAllModels, disabled. [PR 366]
- Nigao/mergewithmaster [PR 361]
- LUIS application create - update to bring in line w latest spec [PR 360]
- Fix luis api spec [PR 359]
- support special chars in entity type definition [PR 358]
- Adding luis:version:export cmd [PR 356]
- Adding luis:version:delete cmd [PR 355]
- support section and cross-train in bf lu [PR 354]
- Initial check-in of dialog generation. [PR 353]
- Adding LUIS app delete command [PR 352]
- Adding luis:application:create cmd and tests / refactor utils and clo… [PR 351]
- Create bf luis plugin [PR 349]
- Adding closed list scenarios to Luis Gen [PR 345]
- [LU -> LUIS] Fix to clean up phraselists [PR 340]
- Create bf luis plugin commands [PR 337]
- bf-luis-cli plugin initial commit [PR 336]
- Command line usage & form for bf:luis command group [PR 328]
- Update DialogDevSpec.md [PR 324]
- Lu parser re architecture to be OO [PR 298]
- Fixing output file path messages [PR 297]
Assets
2
cleemullins
released this
Bot Framework Consolidated Command Line Interface
We are happy to announce the first release the consolidated Bot Framework Command Line Interface (BF CLI) along with Bot Framework SDK Version 4.6.
BF CLI is based on Node.js platform and OClif framework where it inherits its command line parsing style, and plugin architecture platform.
Upon the first General Availability release, the BF CLI consolidates the following standalone tools into a single CLI.
Porting Map
Commands invoked by BF [New Command] as follows:
| New Command | Old Tool(s) | Status |
|---|---|---|
| chatdown | Chatdown | GA |
| qnamaker | QnAMaker | GA |
| luis/qnamaker:convert, luis/qnamaker:translate | LuDown | GA |
| luis:generate | LuisGen | GA |
Future Commands
We plan to port over (and extend) the following commands:
| New Command | Old Tool(s) |
|---|---|
| luis:... | LUIS (api) |
| lg | MSLG |
| dispatch | Dispatch |
| dialog | Dialog (internal) |
The old tools will be deprecated in subsequent releases. All new investments, bug fixes, and new features will be implemented in the new consolidated BF CLI alone.
Porting Highlights
Chatdown
- Chatdown functionality in BF CLI is primarily under chatdown:convert
- Arguments were ported to flags form
- Static flag was renamed to stamp
- Allow scanning of directory without glob expression
- Improved error handling
- Pipe STDIN input is accepted when --in flag is expected but not specified
QnA Maker:
- QnaMaker port to BF CLI as bf qnamaker
- Reverse format of qnamaker commands from [subject|verb] to [verb|subject]
- Gov environment is now supported by use of endpoint overwrite
- Pipe STDIN input is accepted when --in flag is expected but not specified
Config:
- All settings are now stored in the global bf config store for all command groups
Lu:
- Ludown was ported over into bf luis:convert, qnamaker:convert, luis:translate and qnamaker:translate
- Improved error handling
- Added a new nDepth entity support in lu format
- File extension separated into .lu for Luis, and .qna for QnAMaker
- Updated Luis schema version 5
- Pipe STDIN input is accepted when --in flag is expected but not specified
- Decoupled Disk I/O operations as mandatory for lu transform
- New support in lu format: Model as a feature to other models
- New .lu file capability: Ability to tie features to a specific model
- New entity definition support in LU file format.
- Address ludown automatically by adding pattern as an utterance
- Fix a regression with prebuilt entity references in patterns.
- Improved ludown sort
- General quality improvement
Luis Gen
- Luisgen was ported to BF CLI as bf luis:generate:ts and bf luis:generate:cs
Developer Experience:
- Added auto-generated dev documentation
- Error handling is now part of command base class
- Added automatic command usage telemetry (if user opted in)
- Now using Promise for STDIN input stream in main command with timeout protection
- Global hooks in CLI for version update and telemetry status

