├── .editorconfig ├── .github ├── CODEOWNERS └── ISSUE_TEMPLATE │ ├── bug.md │ └── feature-request.md ├── .gitignore ├── BotFramework-FunctionalTests.ruleset ├── Bots ├── .gitignore ├── DotNet │ ├── Composer │ │ └── CustomActions │ │ │ └── DownloadFileDialog │ │ │ ├── Action │ │ │ └── DownloadFileDialog.cs │ │ │ ├── DownloadFileDialog.csproj │ │ │ ├── DownloadFileDialogBotComponent.cs │ │ │ └── Schemas │ │ │ └── DownloadFileDialog.schema │ ├── ComposerHostBotDotNet │ │ ├── .gitignore │ │ ├── ComposerHostBotDotNet.botproj │ │ ├── ComposerHostBotDotNet.csproj │ │ ├── ComposerHostBotDotNet.dialog │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── dialogs │ │ │ ├── BeginDialog │ │ │ │ ├── BeginDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── BeginDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── BeginDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── BeginDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── BeginDialog.en-us.lu.dialog │ │ │ │ │ ├── BeginDialog.lu.dialog │ │ │ │ │ └── BeginDialog.lu.qna.dialog │ │ │ ├── SsoDialog │ │ │ │ ├── SsoDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── SsoDialog.en-us.lu.dialog │ │ │ │ │ ├── SsoDialog.lu.dialog │ │ │ │ │ └── SsoDialog.lu.qna.dialog │ │ │ ├── SsoSignInDialog │ │ │ │ ├── SsoSignInDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSignInDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSignInDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSignInDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── SsoSignInDialog.en-us.lu.dialog │ │ │ │ │ ├── SsoSignInDialog.lu.dialog │ │ │ │ │ └── SsoSignInDialog.lu.qna.dialog │ │ │ ├── TangentDialog │ │ │ │ ├── TangentDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── TangentDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── TangentDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── TangentDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── TangentDialog.en-us.lu.dialog │ │ │ │ │ ├── TangentDialog.lu.dialog │ │ │ │ │ └── TangentDialog.lu.qna.dialog │ │ │ └── emptyBot │ │ │ │ └── knowledge-base │ │ │ │ └── en-us │ │ │ │ └── emptyBot.en-us.qna │ │ ├── generated │ │ │ └── interruption │ │ │ │ ├── BeginDialog.en-us.lu │ │ │ │ ├── BeginDialog.en-us.qna │ │ │ │ ├── ComposerHostBotDotNet.en-us.lu │ │ │ │ ├── ComposerHostBotDotNet.en-us.qna │ │ │ │ ├── SsoDialog.en-us.lu │ │ │ │ ├── SsoDialog.en-us.qna │ │ │ │ ├── SsoSignInDialog.en-us.lu │ │ │ │ ├── SsoSignInDialog.en-us.qna │ │ │ │ ├── TangentDialog.en-us.lu │ │ │ │ └── TangentDialog.en-us.qna │ │ ├── knowledge-base │ │ │ └── en-us │ │ │ │ └── ComposerHostBotDotNet.en-us.qna │ │ ├── language-generation │ │ │ └── en-us │ │ │ │ ├── ComposerHostBotDotNet.en-us.lg │ │ │ │ └── common.en-us.lg │ │ ├── language-understanding │ │ │ └── en-us │ │ │ │ └── ComposerHostBotDotNet.en-us.lu │ │ ├── media │ │ │ ├── create-azure-resource-command-line.png │ │ │ └── publish-az-login.png │ │ ├── recognizers │ │ │ ├── ComposerHostBotDotNet.en-us.lu.dialog │ │ │ ├── ComposerHostBotDotNet.lu.dialog │ │ │ └── ComposerHostBotDotNet.lu.qna.dialog │ │ ├── schemas │ │ │ ├── sdk.schema │ │ │ ├── sdk.uischema │ │ │ ├── update-schema.ps1 │ │ │ └── update-schema.sh │ │ ├── settings │ │ │ └── appsettings.json │ │ └── wwwroot │ │ │ └── default.htm │ ├── ComposerSkillBotDotNet │ │ ├── .gitignore │ │ ├── ComposerSkillBotDotNet.botproj │ │ ├── ComposerSkillBotDotNet.dialog │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.ComposerSkillBotDotNet.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Startup.cs │ │ ├── dialogs │ │ │ ├── AuthDialog │ │ │ │ ├── AuthDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── AuthDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── AuthDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── AuthDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── AuthDialog.en-us.lu.dialog │ │ │ │ │ ├── AuthDialog.lu.dialog │ │ │ │ │ └── AuthDialog.lu.qna.dialog │ │ │ ├── CallEchoSkill │ │ │ │ ├── CallEchoSkill.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CallEchoSkill.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CallEchoSkill.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CallEchoSkill.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── CallEchoSkill.en-us.lu.dialog │ │ │ │ │ ├── CallEchoSkill.lu.dialog │ │ │ │ │ └── CallEchoSkill.lu.qna.dialog │ │ │ ├── CardsDialog │ │ │ │ ├── CardsDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CardsDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CardsDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CardsDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── CardsDialog.en-us.lu.dialog │ │ │ │ │ ├── CardsDialog.lu.dialog │ │ │ │ │ └── CardsDialog.lu.qna.dialog │ │ │ ├── DeleteDialog │ │ │ │ ├── DeleteDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── DeleteDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── DeleteDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── DeleteDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── DeleteDialog.en-us.lu.dialog │ │ │ │ │ ├── DeleteDialog.lu.dialog │ │ │ │ │ └── DeleteDialog.lu.qna.dialog │ │ │ ├── FileUploadDialog │ │ │ │ ├── FileUploadDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── FileUploadDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── FileUploadDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── FileUploadDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── FileUploadDialog.en-us.lu.dialog │ │ │ │ │ ├── FileUploadDialog.lu.dialog │ │ │ │ │ └── FileUploadDialog.lu.qna.dialog │ │ │ ├── MessageWithAttachmentDialog │ │ │ │ ├── MessageWithAttachmentDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── MessageWithAttachmentDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── MessageWithAttachmentDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── MessageWithAttachmentDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── MessageWithAttachmentDialog.en-us.lu.dialog │ │ │ │ │ ├── MessageWithAttachmentDialog.lu.dialog │ │ │ │ │ └── MessageWithAttachmentDialog.lu.qna.dialog │ │ │ ├── SsoSkillDialog │ │ │ │ ├── SsoSkillDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSkillDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSkillDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSkillDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── SsoSkillDialog.en-us.lu.dialog │ │ │ │ │ ├── SsoSkillDialog.lu.dialog │ │ │ │ │ └── SsoSkillDialog.lu.qna.dialog │ │ │ ├── SsoSkillSignInDialog │ │ │ │ ├── SsoSkillSignInDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSkillSignInDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── SsoSkillSignInDialog.en-us.lg │ │ │ │ └── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ └── SsoSkillSignInDialog.en-us.lu │ │ │ ├── UpdateDialog │ │ │ │ ├── UpdateDialog.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── UpdateDialog.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── UpdateDialog.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── UpdateDialog.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── UpdateDialog.en-us.lu.dialog │ │ │ │ │ ├── UpdateDialog.lu.dialog │ │ │ │ │ └── UpdateDialog.lu.qna.dialog │ │ │ └── emptyBot │ │ │ │ └── knowledge-base │ │ │ │ └── en-us │ │ │ │ └── emptyBot.en-us.qna │ │ ├── generated │ │ │ └── interruption │ │ │ │ ├── AuthDialog.en-us.lu │ │ │ │ ├── AuthDialog.en-us.qna │ │ │ │ ├── CallEchoSkill.en-us.lu │ │ │ │ ├── CallEchoSkill.en-us.qna │ │ │ │ ├── CardsDialog.en-us.lu │ │ │ │ ├── CardsDialog.en-us.qna │ │ │ │ ├── DeleteDialog.en-us.lu │ │ │ │ ├── DeleteDialog.en-us.qna │ │ │ │ ├── FileUploadDialog.en-us.lu │ │ │ │ ├── FileUploadDialog.en-us.qna │ │ │ │ ├── MessageWithAttachmentDialog.en-us.lu │ │ │ │ ├── MessageWithAttachmentDialog.en-us.qna │ │ │ │ ├── SsoSkillDialog.en-us.lu │ │ │ │ ├── SsoSkillDialog.en-us.qna │ │ │ │ ├── UpdateDialog.en-us.lu │ │ │ │ └── UpdateDialog.en-us.qna │ │ ├── knowledge-base │ │ │ └── en-us │ │ │ │ └── ComposerSkillBotDotNet.en-us.qna │ │ ├── language-generation │ │ │ └── en-us │ │ │ │ ├── ComposerSkillBotDotNet.en-us.lg │ │ │ │ └── common.en-us.lg │ │ ├── language-understanding │ │ │ └── en-us │ │ │ │ └── ComposerSkillBotDotNet.en-us.lu │ │ ├── media │ │ │ ├── create-azure-resource-command-line.png │ │ │ ├── publish-az-login.png │ │ │ └── teams-logo.png │ │ ├── schemas │ │ │ ├── sdk.schema │ │ │ ├── sdk.uischema │ │ │ ├── update-schema.ps1 │ │ │ └── update-schema.sh │ │ ├── settings │ │ │ └── appsettings.json │ │ ├── skills │ │ │ ├── echoskillbot-manifest.json │ │ │ └── echoskillbotcomposer-manifest.json │ │ └── wwwroot │ │ │ ├── default.htm │ │ │ └── images │ │ │ └── architecture-resize.png │ ├── Directory.Build.props │ ├── EchoSkillBot-3.1 │ │ ├── Bots │ │ │ └── EchoBot.cs │ │ ├── Controllers │ │ │ └── BotController.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot31.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── SkillAdapterWithErrorHandler.cs │ │ ├── Startup.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ │ ├── default.htm │ │ │ └── manifests │ │ │ └── echoskillbot-manifest-1.0.json │ ├── EchoSkillBot-v3 │ │ ├── ApiControllerActionInvokerWithErrorHandler.cs │ │ ├── App_Start │ │ │ └── WebApiConfig.cs │ │ ├── Authentication │ │ │ ├── CustomAllowedCallersClaimsValidator.cs │ │ │ └── CustomSkillAuthenticationConfiguration.cs │ │ ├── Controllers │ │ │ └── MessagesController.cs │ │ ├── Dialogs │ │ │ └── RootDialog.cs │ │ ├── Global.asax │ │ ├── Global.asax.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot-v3.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Web.Debug.config │ │ ├── Web.Release.config │ │ ├── Web.config │ │ ├── default.htm │ │ ├── manifests │ │ │ └── echoskillbotv3-manifest-1.0.json │ │ └── packages.config │ ├── EchoSkillBot │ │ ├── Bots │ │ │ └── EchoBot.cs │ │ ├── Controllers │ │ │ └── BotController.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── SkillAdapterWithErrorHandler.cs │ │ ├── Startup.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ │ ├── default.htm │ │ │ └── manifests │ │ │ └── echoskillbot-manifest-1.0.json │ ├── EchoSkillBotComposer │ │ ├── .gitignore │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── EchoSkillBotComposer.botproj │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBotComposer.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── Startup.cs │ │ ├── dialogs │ │ │ └── emptyBot │ │ │ │ └── knowledge-base │ │ │ │ └── en-us │ │ │ │ └── emptyBot.en-us.qna │ │ ├── echoskillbotcomposer.dialog │ │ ├── generated │ │ │ └── interruption │ │ │ │ ├── EchoSkillBotComposer.en-us.lu │ │ │ │ └── EchoSkillBotComposer.en-us.qna │ │ ├── knowledge-base │ │ │ └── en-us │ │ │ │ └── echoskillbotcomposer.en-us.qna │ │ ├── language-generation │ │ │ └── en-us │ │ │ │ ├── common.en-us.lg │ │ │ │ └── echoskillbotcomposer.en-us.lg │ │ ├── language-understanding │ │ │ └── en-us │ │ │ │ └── echoskillbotcomposer.en-us.lu │ │ ├── manifests │ │ │ └── echoskillbotcomposer-manifest.json │ │ ├── media │ │ │ ├── create-azure-resource-command-line.png │ │ │ └── publish-az-login.png │ │ ├── schemas │ │ │ ├── sdk.schema │ │ │ ├── sdk.uischema │ │ │ ├── update-schema.ps1 │ │ │ └── update-schema.sh │ │ ├── settings │ │ │ └── appsettings.json │ │ └── wwwroot │ │ │ ├── default.htm │ │ │ └── manifests │ │ │ └── echoskillbotcomposer-manifest.json │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.sln │ ├── SimpleHostBot-3.1 │ │ ├── AdapterWithErrorHandler.cs │ │ ├── Bots │ │ │ └── HostBot.cs │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── Dialogs │ │ │ └── SetupDialog.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot31.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── SkillsConfiguration.cs │ │ ├── Startup.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ │ └── default.htm │ ├── SimpleHostBot │ │ ├── AdapterWithErrorHandler.cs │ │ ├── Bots │ │ │ └── HostBot.cs │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── Dialogs │ │ │ └── SetupDialog.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── SkillsConfiguration.cs │ │ ├── Startup.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ │ └── default.htm │ ├── SimpleHostBotComposer │ │ ├── .gitignore │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBotComposer.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── SimpleHostBotComposer.botproj │ │ ├── Startup.cs │ │ ├── dialogs │ │ │ ├── CallEchoSkill │ │ │ │ ├── CallEchoSkill.dialog │ │ │ │ ├── knowledge-base │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CallEchoSkill.en-us.qna │ │ │ │ ├── language-generation │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CallEchoSkill.en-us.lg │ │ │ │ ├── language-understanding │ │ │ │ │ └── en-us │ │ │ │ │ │ └── CallEchoSkill.en-us.lu │ │ │ │ └── recognizers │ │ │ │ │ ├── CallEchoSkill.en-us.lu.dialog │ │ │ │ │ ├── CallEchoSkill.lu.dialog │ │ │ │ │ └── CallEchoSkill.lu.qna.dialog │ │ │ └── emptyBot │ │ │ │ └── knowledge-base │ │ │ │ └── en-us │ │ │ │ └── emptyBot.en-us.qna │ │ ├── generated │ │ │ └── interruption │ │ │ │ ├── CallEchoSkill.en-us.lu │ │ │ │ ├── CallEchoSkill.en-us.qna │ │ │ │ ├── SimpleHostBotComposer.en-us.lu │ │ │ │ └── SimpleHostBotComposer.en-us.qna │ │ ├── knowledge-base │ │ │ └── en-us │ │ │ │ └── simplehostbotcomposer.en-us.qna │ │ ├── language-generation │ │ │ └── en-us │ │ │ │ ├── common.en-us.lg │ │ │ │ └── simplehostbotcomposer.en-us.lg │ │ ├── language-understanding │ │ │ └── en-us │ │ │ │ └── simplehostbotcomposer.en-us.lu │ │ ├── media │ │ │ ├── create-azure-resource-command-line.png │ │ │ └── publish-az-login.png │ │ ├── recognizers │ │ │ ├── SimpleHostBotComposer.en-us.lu.dialog │ │ │ ├── SimpleHostBotComposer.lu.dialog │ │ │ └── SimpleHostBotComposer.lu.qna.dialog │ │ ├── schemas │ │ │ ├── sdk.schema │ │ │ ├── sdk.uischema │ │ │ ├── update-schema.ps1 │ │ │ └── update-schema.sh │ │ ├── settings │ │ │ └── appsettings.json │ │ ├── simplehostbotcomposer.dialog │ │ └── wwwroot │ │ │ └── default.htm │ ├── WaterfallHostBot │ │ ├── AdapterWithErrorHandler.cs │ │ ├── Bots │ │ │ └── RootBot.cs │ │ ├── Cards │ │ │ └── welcomeCard.json │ │ ├── ComponentSettings.cs │ │ ├── Controllers │ │ │ ├── BotController.cs │ │ │ └── SkillController.cs │ │ ├── Dialogs │ │ │ ├── MainDialog.cs │ │ │ ├── Sso │ │ │ │ ├── SsoDialog.cs │ │ │ │ └── SsoSignInDialog.cs │ │ │ └── TangentDialog.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallHostBot.csproj │ │ ├── Middleware │ │ │ └── LoggerMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── Skills │ │ │ ├── EchoSkill.cs │ │ │ ├── SkillDefinition.cs │ │ │ ├── TeamsSkill.cs │ │ │ └── WaterfallSkill.cs │ │ ├── SkillsConfiguration.cs │ │ ├── Startup.cs │ │ ├── TeamsAppManifest │ │ │ ├── icon-color.png │ │ │ ├── icon-outline.png │ │ │ └── manifest.json │ │ ├── TokenExchangeSkillHandler.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ │ └── default.htm │ └── WaterfallSkillBot │ │ ├── Bots │ │ └── SkillBot.cs │ │ ├── Controllers │ │ ├── BotController.cs │ │ ├── CardsController.cs │ │ ├── ProactiveController.cs │ │ └── SkillController.cs │ │ ├── Dialogs │ │ ├── ActivityRouterDialog.cs │ │ ├── Auth │ │ │ └── AuthDialog.cs │ │ ├── Cards │ │ │ ├── AdaptiveCardExtensions.cs │ │ │ ├── CardDialog.cs │ │ │ ├── CardOptions.cs │ │ │ ├── CardSampleHelper.cs │ │ │ ├── ChannelSupportedCards.cs │ │ │ ├── Files │ │ │ │ ├── buildreactionbotframework.jpg │ │ │ │ ├── music.mp3 │ │ │ │ └── teams-logo.png │ │ │ └── SampleData.cs │ │ ├── Delete │ │ │ └── DeleteDialog.cs │ │ ├── FileUpload │ │ │ └── FileUploadDialog.cs │ │ ├── MessageWithAttachment │ │ │ └── MessageWithAttachmentDialog.cs │ │ ├── Proactive │ │ │ ├── ContinuationParameters.cs │ │ │ └── WaitForProactiveDialog.cs │ │ ├── Sso │ │ │ ├── SsoSkillDialog.cs │ │ │ └── SsoSkillSignInDialog.cs │ │ └── Update │ │ │ └── UpdateDialog.cs │ │ ├── Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallSkillBot.csproj │ │ ├── Middleware │ │ └── SsoSaveStateMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── launchSettings.json │ │ ├── SkillAdapterWithErrorHandler.cs │ │ ├── Startup.cs │ │ ├── appsettings.json │ │ └── wwwroot │ │ ├── default.htm │ │ ├── images │ │ └── architecture-resize.png │ │ └── manifests │ │ └── waterfallskillbot-manifest-1.0.json ├── JavaScript │ ├── .env │ ├── .gitignore │ ├── .pnp.cjs │ ├── .pnp.loader.mjs │ ├── .yarn │ │ ├── plugins │ │ │ └── @yarnpkg │ │ │ │ └── plugin-workspace-tools.cjs │ │ └── releases │ │ │ └── yarn-berry-3.2.3.cjs │ ├── .yarnrc.yml │ ├── Dockerfile │ ├── EchoSkillBot-v3 │ │ ├── .env │ │ ├── Dockerfile │ │ ├── index.js │ │ ├── manifests │ │ │ └── echoskillbotv3-manifest-1.0.json │ │ └── package.json │ ├── EchoSkillBot │ │ ├── .env │ │ ├── bot.js │ │ ├── index.js │ │ ├── manifests │ │ │ └── echoskillbot-manifest-1.0.json │ │ └── package.json │ ├── SimpleHostBot │ │ ├── .env │ │ ├── bots │ │ │ └── hostBot.js │ │ ├── dialogs │ │ │ └── setupDialog.js │ │ ├── index.js │ │ ├── package.json │ │ └── skillsConfiguration.js │ ├── Utils │ │ └── prepare.mjs │ ├── WaterfallHostBot │ │ ├── .env │ │ ├── TokenExchangeSkillHandler.js │ │ ├── bots │ │ │ └── rootBot.js │ │ ├── cards │ │ │ └── welcomeCard.json │ │ ├── dialogs │ │ │ ├── mainDialog.js │ │ │ ├── sso │ │ │ │ ├── ssoDialog.js │ │ │ │ └── ssoSignInDialog.js │ │ │ └── tangentDialog.js │ │ ├── index.js │ │ ├── middleware │ │ │ └── loggerMiddleware.js │ │ ├── package.json │ │ ├── skills │ │ │ ├── echoSkill.js │ │ │ ├── skillDefinition.js │ │ │ ├── teamsSkill.js │ │ │ └── waterfallSkill.js │ │ └── skillsConfiguration.js │ ├── WaterfallSkillBot │ │ ├── .env │ │ ├── bots │ │ │ └── skillBot.js │ │ ├── config.js │ │ ├── dialogs │ │ │ ├── activityRouterDialog.js │ │ │ ├── auth │ │ │ │ └── authDialog.js │ │ │ ├── cards │ │ │ │ ├── cardDialog.js │ │ │ │ ├── cardOptions.js │ │ │ │ ├── cardSampleHelper.js │ │ │ │ ├── channelSupportedCards.js │ │ │ │ └── files │ │ │ │ │ ├── buildreactionbotframework.jpg │ │ │ │ │ ├── music.mp3 │ │ │ │ │ └── teams-logo.png │ │ │ ├── delete │ │ │ │ └── deleteDialog.js │ │ │ ├── fileUpload │ │ │ │ └── fileUploadDialog.js │ │ │ ├── messageWithAttachment │ │ │ │ └── messageWithAttachmentDialog.js │ │ │ ├── proactive │ │ │ │ ├── continuationParameters.js │ │ │ │ └── waitForProactiveDialog.js │ │ │ ├── sso │ │ │ │ ├── ssoSkillDialog.js │ │ │ │ └── ssoSkillSignInDialog.js │ │ │ └── update │ │ │ │ └── updateDialog.js │ │ ├── images │ │ │ └── architecture-resize.png │ │ ├── index.js │ │ ├── manifests │ │ │ └── waterfallskillbot-manifest-1.0.json │ │ ├── middleware │ │ │ └── ssoSaveStateMiddleware.js │ │ └── package.json │ ├── package.json │ └── yarn.lock ├── Python │ ├── .gitignore │ ├── Dockerfile │ ├── EchoSkillBot │ │ ├── app.py │ │ ├── authentication │ │ │ ├── __init__.py │ │ │ └── allowed_callers_claims_validator.py │ │ ├── bots │ │ │ ├── __init__.py │ │ │ └── echo_bot.py │ │ ├── config.py │ │ ├── manifests │ │ │ └── echoskillbot-manifest-1.0.json │ │ └── requirements.txt │ ├── SimpleHostBot │ │ ├── .env │ │ ├── adapter_with_error_handler.py │ │ ├── app.py │ │ ├── authentication │ │ │ ├── __init__.py │ │ │ └── allowed_skills_claims_validator.py │ │ ├── bots │ │ │ ├── __init__.py │ │ │ └── host_bot.py │ │ ├── config.py │ │ ├── dialogs │ │ │ ├── __init__.py │ │ │ └── setup_dialog.py │ │ ├── helpers │ │ │ └── dialog_helper.py │ │ └── requirements.txt │ ├── WaterfallHostBot │ │ ├── .env │ │ ├── .pylintrc │ │ ├── adapter_with_error_handler.py │ │ ├── app.py │ │ ├── authentication │ │ │ ├── __init__.py │ │ │ └── allowed_skills_claims_validator.py │ │ ├── bots │ │ │ ├── __init__.py │ │ │ └── root_bot.py │ │ ├── cards │ │ │ └── welcomeCard.json │ │ ├── dialogs │ │ │ ├── __init__.py │ │ │ ├── main_dialog.py │ │ │ ├── sso │ │ │ │ ├── __init__.py │ │ │ │ ├── sso_dialog.py │ │ │ │ └── sso_signin_dialog.py │ │ │ └── tangent_dialog.py │ │ ├── helpers │ │ │ └── dialog_helper.py │ │ ├── requirements.txt │ │ ├── skills │ │ │ ├── echo_skill.py │ │ │ ├── skill_definition.py │ │ │ ├── teams_skill.py │ │ │ └── waterfall_skill.py │ │ ├── skills_configuration.py │ │ └── token_exchange_skill_handler.py │ ├── WaterfallSkillBot │ │ ├── .env │ │ ├── .pylintrc │ │ ├── app.py │ │ ├── authentication │ │ │ ├── __init__.py │ │ │ └── allowed_callers_claims_validator.py │ │ ├── bots │ │ │ ├── __init__.py │ │ │ └── skill_bot.py │ │ ├── config.py │ │ ├── dialogs │ │ │ ├── __init__.py │ │ │ ├── activity_router_dialog.py │ │ │ ├── auth │ │ │ │ ├── __init__.py │ │ │ │ └── auth_dialog.py │ │ │ ├── cards │ │ │ │ ├── __init__.py │ │ │ │ ├── card_dialog.py │ │ │ │ ├── card_options.py │ │ │ │ ├── card_sample_helper.py │ │ │ │ ├── channel_supported_cards.py │ │ │ │ └── files │ │ │ │ │ ├── buildreactionbotframework.jpg │ │ │ │ │ ├── music.mp3 │ │ │ │ │ └── teams-logo.png │ │ │ ├── delete │ │ │ │ ├── __init__.py │ │ │ │ └── delete_dialog.py │ │ │ ├── file_upload │ │ │ │ ├── __init__.py │ │ │ │ └── file_upload_dialog.py │ │ │ ├── message_with_attachment │ │ │ │ ├── __init__.py │ │ │ │ └── message_with_attachment_dialog.py │ │ │ ├── proactive │ │ │ │ ├── __init__.py │ │ │ │ ├── continuation_parameters.py │ │ │ │ └── wait_for_proactive_dialog.py │ │ │ ├── sso │ │ │ │ ├── __init__.py │ │ │ │ ├── sso_skill_dialog.py │ │ │ │ └── sso_skill_signin_dialog.py │ │ │ └── update │ │ │ │ ├── __init__.py │ │ │ │ └── update_dialog.py │ │ ├── images │ │ │ └── architecture-resize.png │ │ ├── manifests │ │ │ └── waterfallskillbot-manifest-1.0.json │ │ ├── middleware │ │ │ ├── __init__.py │ │ │ └── sso_save_state_middleware.py │ │ ├── requirements.txt │ │ └── skill_adapter_with_error_handler.py │ └── requirements.txt ├── SimpleHostBotComposerDotNet.bot ├── SimpleHostBotDotNet.bot ├── SimpleHostBotDotNet31.bot ├── SimpleHostBotJS.bot ├── SimpleHostBotPython.bot └── WaterfallHostBotDotNet.bot ├── CODE_OF_CONDUCT.md ├── Directory.Build.props ├── Docs ├── README.md ├── addARMServiceConnection.md ├── availableBotsList.md ├── getServicePrincipalObjectID.md ├── media │ ├── CreateAppRegistrations.ps1 │ ├── Diagrams.pptx │ ├── addARMServiceConnection1.png │ ├── addARMServiceConnection2.png │ ├── branching.png │ ├── dependenciesParameters.png │ ├── dependenciesParametersTest.png │ ├── getServicePrincipalObjectID.png │ ├── setupAppRegistrations1.png │ ├── setupAppRegistrations2.png │ ├── setupAppRegistrations3.png │ ├── setupAppRegistrations4.png │ ├── setupAppRegistrations5.png │ ├── setupPipelines1.png │ ├── setupPipelines2.png │ ├── setupPipelines3.png │ ├── setupPipelines4.png │ ├── setupPipelines5.png │ └── setupPipelines6.png ├── pipelines.md ├── regionalVirtualNetworkIntegration.md ├── setupAppRegistrations.md ├── setupDockerContainer.md └── setupPipelines.md ├── LICENSE ├── Libraries ├── Directory.Build.props ├── TranscriptConverter │ ├── ConvertTranscriptHandler.cs │ ├── Converter.cs │ ├── Microsoft.Bot.Builder.Testing.TranscriptConverter.csproj │ ├── Program.cs │ ├── README.md │ ├── TestScript.cs │ └── TestScriptItem.cs ├── TranscriptTestRunner.Tests │ ├── Microsoft.Bot.Builder.Testing.TestRunner.Tests.csproj │ └── TestRunnerTests.cs └── TranscriptTestRunner │ ├── Authentication │ ├── Session.cs │ ├── SessionInfo.cs │ ├── TestClientAuthentication.cs │ └── TokenInfo.cs │ ├── Microsoft.Bot.Builder.Testing.TestRunner.csproj │ ├── README.md │ ├── TestClientBase.cs │ ├── TestClientFactory.cs │ ├── TestClients │ ├── DirectLineTestClient.cs │ └── DirectLineTestClientOptions.cs │ ├── TestRunner.cs │ ├── TestScript.cs │ ├── TestScriptItem.cs │ ├── XUnit │ └── XUnitTestRunner.cs │ └── testscript.schema ├── PackageReferences.props ├── README.md ├── SECURITY.md ├── Tests.sln ├── Tests ├── Directory.Build.props ├── Functional │ ├── Common │ │ ├── TestCase.cs │ │ └── TestCaseDataObject.cs │ ├── Microsoft.Bot.Builder.Tests.Functional.csproj │ ├── README.md │ ├── ScriptTestBase.cs │ ├── Skills │ │ ├── Authentication │ │ │ └── AuthenticationTests.cs │ │ ├── CardActions │ │ │ ├── AnimationCardTests.cs │ │ │ ├── AudioCardTests.cs │ │ │ ├── BotActionCardTests.cs │ │ │ ├── CardBaseTests.cs │ │ │ ├── CarouselCardTests.cs │ │ │ ├── HeroCardTests.cs │ │ │ ├── ListCardTests.cs │ │ │ ├── O365CardTests.cs │ │ │ ├── ReceiptCardTests.cs │ │ │ ├── SignInCardTests.cs │ │ │ ├── SubmitActionCardTests.cs │ │ │ ├── TaskModuleCardTests.cs │ │ │ ├── TestScripts │ │ │ │ ├── Animation.json │ │ │ │ ├── Animation.transcript │ │ │ │ ├── Audio.json │ │ │ │ ├── Audio.transcript │ │ │ │ ├── BotAction.json │ │ │ │ ├── BotAction.transcript │ │ │ │ ├── Carousel.json │ │ │ │ ├── Carousel.transcript │ │ │ │ ├── Hero.json │ │ │ │ ├── Hero.transcript │ │ │ │ ├── List.json │ │ │ │ ├── List.transcript │ │ │ │ ├── O365.json │ │ │ │ ├── O365.transcript │ │ │ │ ├── Receipt.json │ │ │ │ ├── Receipt.transcript │ │ │ │ ├── SignIn.json │ │ │ │ ├── SignIn.transcript │ │ │ │ ├── SubmitAction.json │ │ │ │ ├── SubmitAction.transcript │ │ │ │ ├── TaskModule.json │ │ │ │ ├── TaskModule.transcript │ │ │ │ ├── Thumbnail.json │ │ │ │ ├── Thumbnail.transcript │ │ │ │ ├── Video.json │ │ │ │ ├── Video.transcript │ │ │ │ ├── WaterfallGreeting.json │ │ │ │ └── WaterfallGreeting.transcript │ │ │ ├── ThumbnailCardTests.cs │ │ │ └── VideoCardTests.cs │ │ ├── Common │ │ │ ├── HostBot.cs │ │ │ ├── SkillBot.cs │ │ │ ├── SkillsTestBase.cs │ │ │ └── SkillsTestCase.cs │ │ ├── FileUpload │ │ │ ├── FileUploadTests.cs │ │ │ └── TestScripts │ │ │ │ ├── FileUpload1.json │ │ │ │ ├── FileUpload1.transcript │ │ │ │ ├── FileUpload2.json │ │ │ │ └── FileUpload2.transcript │ │ ├── MessageWithAttachment │ │ │ ├── MessageWithAttachmentTests.cs │ │ │ └── TestScripts │ │ │ │ ├── MessageWithAttachment.json │ │ │ │ └── MessageWithAttachment.transcript │ │ ├── ProactiveMessages │ │ │ ├── ProactiveTests.cs │ │ │ └── TestScripts │ │ │ │ ├── ProactiveEnd.json │ │ │ │ ├── ProactiveEnd.transcript │ │ │ │ ├── ProactiveStart.json │ │ │ │ └── ProactiveStart.transcript │ │ ├── SignIn │ │ │ ├── SignInTests.cs │ │ │ └── TestScripts │ │ │ │ ├── SignIn1.json │ │ │ │ ├── SignIn1.transcript │ │ │ │ ├── SignIn2.json │ │ │ │ └── signin2.transcript │ │ ├── SingleTurn │ │ │ ├── EchoBaseTests.cs │ │ │ ├── EchoTests.cs │ │ │ └── TestScripts │ │ │ │ ├── EchoMultiSkill.json │ │ │ │ └── EchoMultiSkill.transcript │ │ └── Sso │ │ │ └── SsoTests.cs │ ├── Standalone │ │ └── .gitkeep │ ├── Utils │ │ ├── ConfigureAppSettings.ps1 │ │ └── README.md │ ├── appsettings.json │ └── xunit.runner.json └── Integration │ ├── DotNet │ ├── Azure │ │ ├── Cosmos │ │ │ ├── CosmosDbAttribute.cs │ │ │ ├── CosmosDbBaseFixture.cs │ │ │ ├── CosmosDbPartitionedStorageFixture.cs │ │ │ └── CosmosDbPartitionedStorageTests.cs │ │ └── Storage │ │ │ ├── Blobs │ │ │ ├── AzureBlobStorageFixture.cs │ │ │ ├── AzureBlobStorageTests.cs │ │ │ ├── AzureBlobTranscriptStoreFixture.cs │ │ │ ├── AzureBlobTranscriptStoreTests.cs │ │ │ ├── BlobsAttribute.cs │ │ │ ├── BlobsStorageBaseFixture.cs │ │ │ ├── BlobsStorageFixture.cs │ │ │ ├── BlobsStorageTests.cs │ │ │ ├── BlobsTranscriptStoreBaseTests.cs │ │ │ ├── BlobsTranscriptStoreFixture.cs │ │ │ └── BlobsTranscriptStoreTests.cs │ │ │ ├── Queues │ │ │ ├── AzureQueueBaseFixture.cs │ │ │ └── AzureQueueStorageTests.cs │ │ │ ├── StorageBaseTests.cs │ │ │ ├── StorageCase.cs │ │ │ └── StorageItem.cs │ ├── ConfigurationFixture.cs │ ├── Microsoft.Bot.Builder.Tests.Integration.csproj │ ├── README.md │ └── appsettings.json │ ├── JavaScript │ └── .gitkeep │ └── Python │ └── .gitkeep ├── build ├── scripts │ └── ConfigureConsumers.ps1 ├── templates │ ├── template-app-insights-resources.json │ ├── template-bot-resources.json │ ├── template-container-linux-bot-resources.json │ ├── template-container-registry-resources.json │ ├── template-cosmosdb-resources.json │ ├── template-key-vault-resources.json │ ├── template-service-plan-linux-resources.json │ ├── template-service-plan-windows-resources.json │ ├── template-storage-account-resources.json │ └── template-virtual-network-resources.json └── yaml │ ├── cleanupResources │ ├── cleanupResources.yml │ └── deleteAppRegistrations.yml │ ├── common │ ├── deleteResourceGroup.yml │ ├── dotnet │ │ └── evaluateDependenciesVariables.yml │ ├── getCosmosDbConnectionVariables.yml │ ├── getStorageAccountConnectionVariables.yml │ └── tagBotBuilderVersion.yml │ ├── deployBotResources │ ├── common │ │ ├── configureOAuth.yml │ │ ├── createAppService.yml │ │ ├── deleteResources.yml │ │ ├── getAppRegistration.yml │ │ └── prepareResources.yml │ ├── deployBotResources.yml │ ├── dotnet │ │ ├── deploy.yml │ │ └── installDependenciesV3.yml │ ├── js │ │ ├── deploy.yml │ │ └── evaluateDependenciesVariables.yml │ └── python │ │ ├── deploy.yml │ │ └── evaluateDependenciesVariables.yml │ ├── dotnetBotsBuild-CI.yml │ ├── functionalTests-CI.yml │ ├── functionalTestsBuild-CI.yml │ ├── jsBotsBuildCI.yml │ ├── pythonBotsBuild-CI.yml │ ├── sharedResources │ ├── createAppRegistrations.yml │ └── createSharedResources.yml │ └── testScenarios │ ├── build.yml │ ├── configureConsumers.yml │ ├── functional.yml │ ├── integration.yml │ ├── runTestScenarios.yml │ └── test.yml └── specs ├── TransciptTestRunner.md └── media ├── TestRunnerClassDiagram.png ├── TestRunnerClassDiagram2.png └── src └── TestRunnerDiagrams.vsdx /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Lines starting with '#' are comments. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # More details are here: https://help.github.com/articles/about-codeowners/ 5 | 6 | # The '*' pattern is global owners. 7 | 8 | # Order is important. The last matching pattern has the most precedence. 9 | # The folders are ordered as follows: 10 | 11 | # In each subsection folders are ordered first by depth, then alphabetically. 12 | # This should make it easy to add new rules without breaking existing ones. 13 | 14 | # Global rule: 15 | * @microsoft/botframework-sdk -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Bug" 3 | about: Create a bug report for a bug you found in the Functional Tests repo 4 | title: "" 5 | labels: "needs-triage, bug" 6 | assignees: "" 7 | --- 8 | 9 | ## Describe the bug 10 | Give a clear and concise description of what the bug is. 11 | 12 | ## To Reproduce 13 | Steps to reproduce the behavior: 14 | 1. Go to '...' 15 | 2. Click on '....' 16 | 3. Scroll down to '....' 17 | 4. See error 18 | 19 | ## Expected behavior 20 | Give a clear and concise description of what you expected to happen. 21 | 22 | ## Screenshots 23 | If applicable, add screenshots to help explain your problem. 24 | 25 | ## Additional context 26 | Add any other context about the problem here. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Feature request" 3 | about: Suggest a feature for the Functional Tests repo 4 | title: "" 5 | labels: "needs-triage, feature-request" 6 | assignees: "" 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /Bots/.gitignore: -------------------------------------------------------------------------------- 1 | # Exclude ComposerDialogs folder created for local deployment 2 | **/azurewebapp/ComposerDialogs -------------------------------------------------------------------------------- /Bots/DotNet/Composer/CustomActions/DownloadFileDialog/DownloadFileDialog.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Bots/DotNet/Composer/CustomActions/DownloadFileDialog/DownloadFileDialogBotComponent.cs: -------------------------------------------------------------------------------- 1 | // Copyright(c) Microsoft Corporation.All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.Bot.Builder; 5 | using Microsoft.Bot.Builder.Dialogs.Declarative; 6 | using Microsoft.Extensions.Configuration; 7 | using Microsoft.Extensions.DependencyInjection; 8 | 9 | namespace DownloadFileDialog 10 | { 11 | public class DownloadFileDialogBotComponent : BotComponent 12 | { 13 | public override void ConfigureServices(IServiceCollection services, IConfiguration configuration) 14 | { 15 | // Anything that could be done in Startup.ConfigureServices can be done here. 16 | // In this case, the DownloadFileDialog needs to be added as a new DeclarativeType. 17 | services.AddSingleton(sp => new DeclarativeType(Action.DownloadFileDialog.Kind)); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bots/DotNet/Composer/CustomActions/DownloadFileDialog/Schemas/DownloadFileDialog.schema: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", 3 | "$role": "implements(Microsoft.IDialog)", 4 | "title": "DownloadFile", 5 | "description": "This will use WebClient for downloading the provided file to the temp folder", 6 | "type": "object", 7 | "additionalProperties": false, 8 | "properties": { 9 | "file": { 10 | "$ref": "schema:#/definitions/objectExpression", 11 | "title": "File", 12 | "description": "File to download" 13 | }, 14 | "resultProperty": { 15 | "$ref": "schema:#/definitions/stringExpression", 16 | "title": "Result", 17 | "description": "Value from callers memory to store the result" 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/.gitignore: -------------------------------------------------------------------------------- 1 | # files generated during the lubuild process 2 | # IMPORTANT: In regular composer bots the generated folder should be excluded and regenerated on the build server 3 | # or by the dev running composer locally. But in this case we include it so we don't have to run bf luis:cross-train 4 | # in the build server 5 | # generated/ -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/ComposerHostBotDotNet.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | OutOfProcess 6 | 4c5f0a9c-7432-4136-8191-185b11f6f2c0 7 | 8 | 9 | 10 | PreserveNewest 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:35040", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "BotProject": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "applicationUrl": "http://localhost:35040", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/knowledge-base/en-us/BeginDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/knowledge-base/en-us/BeginDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/language-understanding/en-us/BeginDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/language-understanding/en-us/BeginDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/recognizers/BeginDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_BeginDialog", 4 | "applicationId": "=settings.luis.BeginDialog_en_us_lu.appId", 5 | "version": "=settings.luis.BeginDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/recognizers/BeginDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_BeginDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/BeginDialog/recognizers/BeginDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/knowledge-base/en-us/SsoDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/knowledge-base/en-us/SsoDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/language-understanding/en-us/SsoDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/language-understanding/en-us/SsoDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/recognizers/SsoDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_SsoDialog", 4 | "applicationId": "=settings.luis.SsoDialog_en_us_lu.appId", 5 | "version": "=settings.luis.SsoDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/recognizers/SsoDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_SsoDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoDialog/recognizers/SsoDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/knowledge-base/en-us/SsoSignInDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/knowledge-base/en-us/SsoSignInDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/language-generation/en-us/SsoSignInDialog.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # OAuthInput_DefaultValueResponse_Mlm8u9() 4 | [Activity 5 | Text = ${OAuthInput_DefaultValueResponse_Mlm8u9_text()} 6 | ] 7 | 8 | # OAuthInput_DefaultValueResponse_Mlm8u9_text() 9 | - Sign in to the host bot using AAD for SSO and connection ${settings.SsoConnectionName} 10 | # SendActivity_9kZTzY() 11 | [Activity 12 | Text = ${SendActivity_9kZTzY_text()} 13 | ] 14 | 15 | # SendActivity_9kZTzY_text() 16 | - Here is your token: ${user.token.token} 17 | # SendActivity_CD2CgY() 18 | [Activity 19 | Text = ${SendActivity_CD2CgY_text()} 20 | ] 21 | 22 | # SendActivity_CD2CgY_text() 23 | - No token was provided. -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/language-understanding/en-us/SsoSignInDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/language-understanding/en-us/SsoSignInDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/recognizers/SsoSignInDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_SsoSignInDialog", 4 | "applicationId": "=settings.luis.SsoSignInDialog_en_us_lu.appId", 5 | "version": "=settings.luis.SsoSignInDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/recognizers/SsoSignInDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_SsoSignInDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/SsoSignInDialog/recognizers/SsoSignInDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/knowledge-base/en-us/TangentDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/knowledge-base/en-us/TangentDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/language-generation/en-us/TangentDialog.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # TextInput_Prompt_6Q2paQ() 4 | [Activity 5 | Text = ${TextInput_Prompt_6Q2paQ_text()} 6 | ] 7 | 8 | # TextInput_Prompt_6Q2paQ_text() 9 | - Tangent step 1 of 2, say something. 10 | # TextInput_Prompt_NTpixO() 11 | [Activity 12 | Text = ${TextInput_Prompt_NTpixO_text()} 13 | ] 14 | 15 | # TextInput_Prompt_NTpixO_text() 16 | - Tangent step 2 of 2, say something. -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/language-understanding/en-us/TangentDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/language-understanding/en-us/TangentDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/recognizers/TangentDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_TangentDialog", 4 | "applicationId": "=settings.luis.TangentDialog_en_us_lu.appId", 5 | "version": "=settings.luis.TangentDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/recognizers/TangentDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_TangentDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/TangentDialog/recognizers/TangentDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/BeginDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/BeginDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/BeginDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/BeginDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/ComposerHostBotDotNet.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/ComposerHostBotDotNet.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/ComposerHostBotDotNet.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/ComposerHostBotDotNet.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoSignInDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoSignInDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoSignInDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/SsoSignInDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/TangentDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/TangentDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/generated/interruption/TangentDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/generated/interruption/TangentDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/knowledge-base/en-us/ComposerHostBotDotNet.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/knowledge-base/en-us/ComposerHostBotDotNet.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/language-generation/en-us/common.en-us.lg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/language-generation/en-us/common.en-us.lg -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/language-understanding/en-us/ComposerHostBotDotNet.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerHostBotDotNet/language-understanding/en-us/ComposerHostBotDotNet.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/recognizers/ComposerHostBotDotNet.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_ComposerHostBotDotNet", 4 | "applicationId": "=settings.luis.ComposerHostBotDotNet_en_us_lu.appId", 5 | "version": "=settings.luis.ComposerHostBotDotNet_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/recognizers/ComposerHostBotDotNet.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_ComposerHostBotDotNet", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/recognizers/ComposerHostBotDotNet.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerHostBotDotNet/schemas/update-schema.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | SCHEMA_FILE=sdk.schema 3 | UISCHEMA_FILE=sdk.uischema 4 | BACKUP_SCHEMA_FILE=sdk-backup.schema 5 | BACKUP_UISCHEMA_FILE=sdk-backup.uischema 6 | 7 | while [ $# -gt 0 ]; do 8 | if [[ $1 == *"-"* ]]; then 9 | param="${1/-/}" 10 | declare $param="$2" 11 | fi 12 | shift 13 | done 14 | 15 | echo "Running schema merge." 16 | [ -f "$SCHEMA_FILE" ] && mv "./$SCHEMA_FILE" "./$BACKUP_SCHEMA_FILE" 17 | [ -f "$UISCHEMA_FILE" ] && mv "./$UISCHEMA_FILE" "./$BACKUP_UISCHEMA_FILE" 18 | 19 | bf dialog:merge "*.schema" "!**/sdk-backup.schema" "*.uischema" "!**/sdk-backup.uischema" "!**/sdk.override.uischema" "!**/generated" "../*.csproj" "../package.json" -o $SCHEMA_FILE 20 | 21 | if [ -f "$SCHEMA_FILE" ]; then 22 | rm -rf "./$BACKUP_SCHEMA_FILE" 23 | rm -rf "./$BACKUP_UISCHEMA_FILE" 24 | echo "Schema merged succesfully." 25 | [ -f "$SCHEMA_FILE" ] && echo " Schema: $SCHEMA_FILE" 26 | [ -f "$UISCHEMA_FILE" ] && echo " UI Schema: $UISCHEMA_FILE" 27 | else 28 | echo "Schema merge failed. Restoring previous versions." 29 | [ -f "$BACKUP_SCHEMA_FILE" ] && mv "./$BACKUP_SCHEMA_FILE" "./$SCHEMA_FILE" 30 | [ -f "$BACKUP_UISCHEMA_FILE" ] && mv "./$BACKUP_UISCHEMA_FILE" "./$UISCHEMA_FILE" 31 | fi 32 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/.gitignore: -------------------------------------------------------------------------------- 1 | # files generated during the lubuild process 2 | # IMPORTANT: In regular composer bots the generated folder should be excluded and regenerated on the build server 3 | # or by the dev running composer locally. But in this case we include it so we don't have to run bf luis:cross-train 4 | # in the build server 5 | # generated/ 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/ComposerSkillBotDotNet.botproj: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/main/Composer/packages/server/schemas/botproject.schema", 3 | "name": "ComposerSkillBotDotNet", 4 | "skills": {} 5 | } -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:35440/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": false, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "ComposerSkillBotDotNet": { 19 | "commandName": "Project", 20 | "launchBrowser": false, 21 | "applicationUrl": "http://localhost:35440", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/knowledge-base/en-us/AuthDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/knowledge-base/en-us/AuthDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/language-understanding/en-us/AuthDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/language-understanding/en-us/AuthDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/recognizers/AuthDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_AuthDialog", 4 | "applicationId": "=settings.luis.AuthDialog_en_us_lu.appId", 5 | "version": "=settings.luis.AuthDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/recognizers/AuthDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_AuthDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/AuthDialog/recognizers/AuthDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/knowledge-base/en-us/CallEchoSkill.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/knowledge-base/en-us/CallEchoSkill.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/language-generation/en-us/CallEchoSkill.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # BeginSkill_Activity_Jde1XG() 4 | [Activity 5 | Text = ${BeginSkill_Activity_Jde1XG_text()} 6 | ] 7 | 8 | # BeginSkill_Activity_Jde1XG_text() 9 | - ${turn.activity.text}I'm the echo skill bot -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/language-understanding/en-us/CallEchoSkill.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/language-understanding/en-us/CallEchoSkill.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/recognizers/CallEchoSkill.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_CallEchoSkill", 4 | "applicationId": "=settings.luis.CallEchoSkill_en_us_lu.appId", 5 | "version": "=settings.luis.CallEchoSkill_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/recognizers/CallEchoSkill.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_CallEchoSkill", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CallEchoSkill/recognizers/CallEchoSkill.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/knowledge-base/en-us/CardsDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/knowledge-base/en-us/CardsDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/language-understanding/en-us/CardsDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/language-understanding/en-us/CardsDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/recognizers/CardsDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_CardsDialog", 4 | "applicationId": "=settings.luis.CardsDialog_en_us_lu.appId", 5 | "version": "=settings.luis.CardsDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/recognizers/CardsDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_CardsDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/CardsDialog/recognizers/CardsDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/knowledge-base/en-us/DeleteDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/knowledge-base/en-us/DeleteDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/language-generation/en-us/DeleteDialog.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # SendActivity_ZtI8q0() 4 | [Activity 5 | Text = ${SendActivity_ZtI8q0_text()} 6 | ] 7 | 8 | # SendActivity_ZtI8q0_text() 9 | - I will delete this message in 5 seconds 10 | # SendActivity_xSO9rV() 11 | [Activity 12 | Text = ${SendActivity_xSO9rV_text()} 13 | ] 14 | 15 | # SendActivity_xSO9rV_text() 16 | - Delete is not supported in the ${dialog.channel} channel. 17 | # SendActivity_AiaQfk() 18 | [Activity 19 | Value = ${5000} 20 | Type = ${"delay"} 21 | ] -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/language-understanding/en-us/DeleteDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/language-understanding/en-us/DeleteDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/recognizers/DeleteDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_DeleteDialog", 4 | "applicationId": "=settings.luis.DeleteDialog_en_us_lu.appId", 5 | "version": "=settings.luis.DeleteDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/recognizers/DeleteDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_DeleteDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/DeleteDialog/recognizers/DeleteDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/knowledge-base/en-us/FileUploadDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/knowledge-base/en-us/FileUploadDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/language-understanding/en-us/FileUploadDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/language-understanding/en-us/FileUploadDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/recognizers/FileUploadDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_FileUploadDialog", 4 | "applicationId": "=settings.luis.FileUploadDialog_en_us_lu.appId", 5 | "version": "=settings.luis.FileUploadDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/recognizers/FileUploadDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_FileUploadDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/FileUploadDialog/recognizers/FileUploadDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/knowledge-base/en-us/MessageWithAttachmentDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/knowledge-base/en-us/MessageWithAttachmentDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/language-understanding/en-us/MessageWithAttachmentDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/language-understanding/en-us/MessageWithAttachmentDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/recognizers/MessageWithAttachmentDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_MessageWithAttachmentDialog", 4 | "applicationId": "=settings.luis.MessageWithAttachmentDialog_en_us_lu.appId", 5 | "version": "=settings.luis.MessageWithAttachmentDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/recognizers/MessageWithAttachmentDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_MessageWithAttachmentDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/MessageWithAttachmentDialog/recognizers/MessageWithAttachmentDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/knowledge-base/en-us/SsoSkillDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/knowledge-base/en-us/SsoSkillDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/language-understanding/en-us/SsoSkillDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/language-understanding/en-us/SsoSkillDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/recognizers/SsoSkillDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_SsoSkillDialog", 4 | "applicationId": "=settings.luis.SsoSkillDialog_en_us_lu.appId", 5 | "version": "=settings.luis.SsoSkillDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/recognizers/SsoSkillDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_SsoSkillDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillDialog/recognizers/SsoSkillDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillSignInDialog/knowledge-base/en-us/SsoSkillSignInDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillSignInDialog/knowledge-base/en-us/SsoSkillSignInDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillSignInDialog/language-generation/en-us/SsoSkillSignInDialog.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # SendActivity_CD2CgY() 4 | [Activity 5 | Text = ${SendActivity_CD2CgY_text()} 6 | ] 7 | 8 | # SendActivity_CD2CgY_text() 9 | - No token was provided for the skill. 10 | # SendActivity_9kZTzY() 11 | [Activity 12 | Text = ${SendActivity_9kZTzY_text()} 13 | ] 14 | 15 | # SendActivity_9kZTzY_text() 16 | - Here is your token: ${user.token.token} 17 | # OAuthInput_InvalidPrompt_Mlm8u9() 18 | [Activity 19 | Text = ${OAuthInput_InvalidPrompt_Mlm8u9_text()} 20 | ] 21 | 22 | # OAuthInput_InvalidPrompt_Mlm8u9_text() 23 | - Sign in to the Skill using AAD -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillSignInDialog/language-understanding/en-us/SsoSkillSignInDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/SsoSkillSignInDialog/language-understanding/en-us/SsoSkillSignInDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/knowledge-base/en-us/UpdateDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/knowledge-base/en-us/UpdateDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/language-generation/en-us/UpdateDialog.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # SendActivity_9lzNuU() 4 | [Activity 5 | Text = ${SendActivity_9lzNuU_text()} 6 | ] 7 | 8 | # SendActivity_9lzNuU_text() 9 | - Update is not supported in the ${dialog.channel} channel. 10 | # ConfirmInput_Prompt_hCsQTN() 11 | [Activity 12 | Text = ${ConfirmInput_Prompt_hCsQTN_text()} 13 | ] 14 | 15 | # ConfirmInput_Prompt_hCsQTN_text() 16 | - Do you want to update the activity again? 17 | # ConfirmInput_UnrecognizedPrompt_hCsQTN() 18 | [Activity 19 | Text = ${ConfirmInput_UnrecognizedPrompt_hCsQTN_text()} 20 | ] 21 | 22 | # ConfirmInput_UnrecognizedPrompt_hCsQTN_text() 23 | - Please select a valid answer 24 | # SendActivity_sW8Iiw() 25 | [Activity 26 | Text = ${SendActivity_sW8Iiw_text()} 27 | ] 28 | 29 | # SendActivity_sW8Iiw_text() 30 | - Here is the original activity 31 | # UpdateActivity_Activity_ootCWz() 32 | [Activity 33 | Text = ${UpdateActivity_Activity_ootCWz_text()} 34 | ] 35 | 36 | # UpdateActivity_Activity_ootCWz_text() 37 | - This message has been updated ${user.updateCount} time(s). -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/language-understanding/en-us/UpdateDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/language-understanding/en-us/UpdateDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/recognizers/UpdateDialog.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_UpdateDialog", 4 | "applicationId": "=settings.luis.UpdateDialog_en_us_lu.appId", 5 | "version": "=settings.luis.UpdateDialog_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/recognizers/UpdateDialog.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_UpdateDialog", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/UpdateDialog/recognizers/UpdateDialog.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/AuthDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/AuthDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/AuthDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/AuthDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CallEchoSkill.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CallEchoSkill.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CallEchoSkill.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CallEchoSkill.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CardsDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CardsDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CardsDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/CardsDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/DeleteDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/DeleteDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/DeleteDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/DeleteDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/FileUploadDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/FileUploadDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/FileUploadDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/FileUploadDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/MessageWithAttachmentDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/MessageWithAttachmentDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/MessageWithAttachmentDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/MessageWithAttachmentDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/SsoSkillDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/SsoSkillDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/SsoSkillDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/SsoSkillDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/UpdateDialog.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/UpdateDialog.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/UpdateDialog.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/generated/interruption/UpdateDialog.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/knowledge-base/en-us/ComposerSkillBotDotNet.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/knowledge-base/en-us/ComposerSkillBotDotNet.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/language-generation/en-us/ComposerSkillBotDotNet.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | > !# @strict = false 3 | > !# @namespace = router 4 | > !# @exports = GetHostUrl 5 | 6 | #GetHostUrl(url) 7 | - IF:${contains(['localhost', '127.0.0.1'], uriHost(url))} 8 | - ${concat(`${uriScheme(url)}://localhost:${uriPort(url)}`)} 9 | - ELSE: 10 | - ${concat(`${uriScheme(url)}://${uriHost(url)}`)} 11 | 12 | # SendActivity_DidNotUnderstand() 13 | [Activity 14 | Text = ${SendActivity_DidNotUnderstand_text()} 15 | ] 16 | 17 | # SendActivity_DidNotUnderstand_text() 18 | - Unrecognized ActivityType: ${turn.activity.type} 19 | # SendActivity_Wz6ESA() 20 | [Activity 21 | Text = ${SendActivity_Wz6ESA_text()} 22 | ] 23 | 24 | # SendActivity_Wz6ESA_text() 25 | - Unrecognized EventName: ${turn.activity.name} -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/language-understanding/en-us/ComposerSkillBotDotNet.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/language-understanding/en-us/ComposerSkillBotDotNet.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/media/teams-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/media/teams-logo.png -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/skills/echoskillbot-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotDotNet", 4 | "name": "EchoSkillBotDotNet", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using Composer with the dotnet runtime).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35400)", 19 | "endpointUrl": "http://localhost:35400/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/skills/echoskillbotcomposer-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotComposerDotNet", 4 | "name": "EchoSkillBotComposerDotNet", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using Composer with the dotnet runtime).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35410)", 19 | "endpointUrl": "http://localhost:35410/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /Bots/DotNet/ComposerSkillBotDotNet/wwwroot/images/architecture-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/ComposerSkillBotDotNet/wwwroot/images/architecture-resize.png -------------------------------------------------------------------------------- /Bots/DotNet/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 5 | 6 | 7 | 8 | $(NoWarn);SA1412;NU1701 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-3.1/Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot31.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp3.1 5 | latest 6 | Microsoft.BotFrameworkFunctionalTests.EchoSkillBot31 7 | Microsoft.BotFrameworkFunctionalTests.EchoSkillBot31 8 | 9 | 10 | 11 | DEBUG;TRACE 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Always 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-3.1/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Hosting; 5 | using Microsoft.Extensions.Hosting; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot31 8 | { 9 | public class Program 10 | { 11 | /// 12 | /// The entry point of the application. 13 | /// 14 | /// The command line args. 15 | public static void Main(string[] args) 16 | { 17 | CreateHostBuilder(args).Build().Run(); 18 | } 19 | 20 | /// 21 | /// Creates a new instance of the class with pre-configured defaults. 22 | /// 23 | /// The command line args. 24 | /// The initialized . 25 | public static IHostBuilder CreateHostBuilder(string[] args) => 26 | Host.CreateDefaultBuilder(args) 27 | .ConfigureWebHostDefaults(webBuilder => 28 | { 29 | webBuilder.UseStartup(); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-3.1/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35405/", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": false, 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "EchoSkillBotDotNet": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "applicationUrl": "http://localhost:35405/", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-3.1/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MicrosoftAppType": "", 3 | "MicrosoftAppId": "", 4 | "MicrosoftAppPassword": "", 5 | "MicrosoftAppTenantId": "", 6 | "ChannelService": "", 7 | // This is a comma separate list with the App IDs that will have access to the skill. 8 | // This setting is used in AllowedCallersClaimsValidator. 9 | // Examples: 10 | // [ "*" ] allows all callers. 11 | // [ "AppId1", "AppId2" ] only allows access to parent bots with "AppId1" and "AppId2". 12 | "AllowedCallers": [ "*" ] 13 | } -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-3.1/wwwroot/manifests/echoskillbot-manifest-1.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotDotNet31", 4 | "name": "EchoSkillBotDotNet31", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using .netcore 3.1).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35405)", 19 | "endpointUrl": "http://localhost:35405/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-v3/Authentication/CustomSkillAuthenticationConfiguration.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.Bot.Connector.SkillAuthentication; 5 | using System.Configuration; 6 | using System.Linq; 7 | 8 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBotv3.Authentication 9 | { 10 | public class CustomSkillAuthenticationConfiguration : AuthenticationConfiguration 11 | { 12 | private const string AllowedCallersConfigKey = "EchoBotAllowedCallers"; 13 | public CustomSkillAuthenticationConfiguration() 14 | { 15 | // Could pull this list from a DB or anywhere. 16 | var allowedCallers = ConfigurationManager.AppSettings[AllowedCallersConfigKey].Split(',').Select(s => s.Trim().ToUpperInvariant()).ToList(); 17 | ClaimsValidator = new CustomAllowedCallersClaimsValidator(allowedCallers); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-v3/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBotv3.WebApiApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-v3/default.htm: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 |

Echo Skill bot

9 | This bot demonstrates a Bot Builder V3 bot as a Skill. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot-v3/manifests/echoskillbotv3-manifest-1.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotDotNetV3", 4 | "name": "EchoSkillBotDotNetV3", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using BF V3).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35407)", 19 | "endpointUrl": "http://localhost:35407/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ], 23 | "activities": { 24 | "EchoDotNetV3": { 25 | "description": "Echo user responses", 26 | "type": "message", 27 | "name": "V3Echo" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot/Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | latest 6 | Microsoft.BotFrameworkFunctionalTests.EchoSkillBot 7 | Microsoft.BotFrameworkFunctionalTests.EchoSkillBot 8 | 9 | 10 | 11 | DEBUG;TRACE 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Always 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Hosting; 5 | using Microsoft.Extensions.Hosting; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBot 8 | { 9 | public class Program 10 | { 11 | /// 12 | /// The entry point of the application. 13 | /// 14 | /// The command line args. 15 | public static void Main(string[] args) 16 | { 17 | CreateHostBuilder(args).Build().Run(); 18 | } 19 | 20 | /// 21 | /// Creates a new instance of the class with pre-configured defaults. 22 | /// 23 | /// The command line args. 24 | /// The initialized . 25 | public static IHostBuilder CreateHostBuilder(string[] args) => 26 | Host.CreateDefaultBuilder(args) 27 | .ConfigureWebHostDefaults(webBuilder => 28 | { 29 | webBuilder.UseStartup(); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35400/", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": false, 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "EchoSkillBotDotNet": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "applicationUrl": "http://localhost:35400/", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MicrosoftAppType": "", 3 | "MicrosoftAppId": "", 4 | "MicrosoftAppPassword": "", 5 | "MicrosoftAppTenantId": "", 6 | "ChannelService": "", 7 | // This is a comma separate list with the App IDs that will have access to the skill. 8 | // This setting is used in AllowedCallersClaimsValidator. 9 | // Examples: 10 | // [ "*" ] allows all callers. 11 | // [ "AppId1", "AppId2" ] only allows access to parent bots with "AppId1" and "AppId2". 12 | "AllowedCallers": [ "*" ] 13 | } -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBot/wwwroot/manifests/echoskillbot-manifest-1.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotDotNet", 4 | "name": "EchoSkillBotDotNet", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using .netcore 6.0).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35400)", 19 | "endpointUrl": "http://localhost:35400/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/.gitignore: -------------------------------------------------------------------------------- 1 | # files generated during the lubuild process 2 | # IMPORTANT: In regular composer bots the generated folder should be excluded and regenerated on the build server 3 | # or by the dev running composer locally. But in this case we include it so we don't have to run bf luis:cross-train 4 | # in the build server 5 | # generated/ 6 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/EchoSkillBotComposer.botproj: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/main/Composer/packages/server/schemas/botproject.schema", 3 | "name": "EchoSkillBotComposer", 4 | "skills": {} 5 | } -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/Microsoft.Bot.Builder.FunctionalTestsBots.EchoSkillBotComposer.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | OutOfProcess 6 | 720cb418-9c27-47a3-b473-1b8771598297 7 | 8 | 9 | 10 | PreserveNewest 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:35410/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": false, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "EchoSkillBotComposerDotNet": { 19 | "commandName": "Project", 20 | "launchBrowser": false, 21 | "applicationUrl": "http://localhost:35410", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/EchoSkillBotComposer/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/generated/interruption/EchoSkillBotComposer.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/EchoSkillBotComposer/generated/interruption/EchoSkillBotComposer.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/generated/interruption/EchoSkillBotComposer.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/EchoSkillBotComposer/generated/interruption/EchoSkillBotComposer.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/knowledge-base/en-us/echoskillbotcomposer.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/EchoSkillBotComposer/knowledge-base/en-us/echoskillbotcomposer.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/language-generation/en-us/common.en-us.lg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/EchoSkillBotComposer/language-generation/en-us/common.en-us.lg -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/language-generation/en-us/echoskillbotcomposer.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # SendActivity_Greeting() 4 | [Activity 5 | Text = Welcome to EchoSkillBotComposerDotNet. 6 | ] 7 | 8 | # SendActivity_DidNotUnderstand() 9 | [Activity 10 | Text = ${SendActivity_DidNotUnderstand_text()} 11 | ] 12 | 13 | # SendActivity_DidNotUnderstand_text() 14 | - Sorry, I didn't get that. 15 | # SendActivity_HHAFpn() 16 | [Activity 17 | Text = Echo: ${turn.activity.text} 18 | InputHint = acceptingInput 19 | ] 20 | 21 | # SendActivity_dZ2zwR() 22 | [Activity 23 | Text = Say "end" or "stop" and I'll end the conversation and back to the parent. 24 | InputHint = acceptingInput 25 | ] 26 | 27 | # SendActivity_xvwomh() 28 | [Activity 29 | Text = Ending conversation from the skill... 30 | InputHint = acceptingInput 31 | ] 32 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/language-understanding/en-us/echoskillbotcomposer.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/EchoSkillBotComposer/language-understanding/en-us/echoskillbotcomposer.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/manifests/echoskillbotcomposer-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotComposerDotNet", 4 | "name": "EchoSkillBotComposerDotNet", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using Composer with the dotnet runtime).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35410)", 19 | "endpointUrl": "http://localhost:35410/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/schemas/update-schema.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | SCHEMA_FILE=sdk.schema 3 | UISCHEMA_FILE=sdk.uischema 4 | BACKUP_SCHEMA_FILE=sdk-backup.schema 5 | BACKUP_UISCHEMA_FILE=sdk-backup.uischema 6 | 7 | while [ $# -gt 0 ]; do 8 | if [[ $1 == *"-"* ]]; then 9 | param="${1/-/}" 10 | declare $param="$2" 11 | fi 12 | shift 13 | done 14 | 15 | echo "Running schema merge." 16 | [ -f "$SCHEMA_FILE" ] && mv "./$SCHEMA_FILE" "./$BACKUP_SCHEMA_FILE" 17 | [ -f "$UISCHEMA_FILE" ] && mv "./$UISCHEMA_FILE" "./$BACKUP_UISCHEMA_FILE" 18 | 19 | bf dialog:merge "*.schema" "!**/sdk-backup.schema" "*.uischema" "!**/sdk-backup.uischema" "!**/sdk.override.uischema" "!**/generated" "../*.csproj" "../package.json" -o $SCHEMA_FILE 20 | 21 | if [ -f "$SCHEMA_FILE" ]; then 22 | rm -rf "./$BACKUP_SCHEMA_FILE" 23 | rm -rf "./$BACKUP_UISCHEMA_FILE" 24 | echo "Schema merged succesfully." 25 | [ -f "$SCHEMA_FILE" ] && echo " Schema: $SCHEMA_FILE" 26 | [ -f "$UISCHEMA_FILE" ] && echo " UI Schema: $UISCHEMA_FILE" 27 | else 28 | echo "Schema merge failed. Restoring previous versions." 29 | [ -f "$BACKUP_SCHEMA_FILE" ] && mv "./$BACKUP_SCHEMA_FILE" "./$SCHEMA_FILE" 30 | [ -f "$BACKUP_UISCHEMA_FILE" ] && mv "./$BACKUP_UISCHEMA_FILE" "./$UISCHEMA_FILE" 31 | fi 32 | -------------------------------------------------------------------------------- /Bots/DotNet/EchoSkillBotComposer/wwwroot/manifests/echoskillbotcomposer-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotComposerDotNet", 4 | "name": "EchoSkillBotComposerDotNet", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using Composer with the dotnet runtime).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 35410)", 19 | "endpointUrl": "http://localhost:35410/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot-3.1/Controllers/SkillController.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Mvc; 5 | using Microsoft.Bot.Builder.Integration.AspNet.Core; 6 | using Microsoft.Bot.Builder.Skills; 7 | 8 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot31.Controllers 9 | { 10 | /// 11 | /// A controller that handles skill replies to the bot. 12 | /// This example uses the that is registered as a in startup.cs. 13 | /// 14 | [ApiController] 15 | [Route("api/skills")] 16 | public class SkillController : ChannelServiceController 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The skill handler registered as ChannelServiceHandlerBase. 22 | public SkillController(ChannelServiceHandlerBase handler) 23 | : base(handler) 24 | { 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot-3.1/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Hosting; 5 | using Microsoft.Extensions.Hosting; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot31 8 | { 9 | public class Program 10 | { 11 | /// 12 | /// The entry point of the application. 13 | /// 14 | /// The command line args. 15 | public static void Main(string[] args) 16 | { 17 | CreateHostBuilder(args).Build().Run(); 18 | } 19 | 20 | /// 21 | /// Creates a new instance of the class with pre-configured defaults. 22 | /// 23 | /// The command line args. 24 | /// The initialized . 25 | public static IHostBuilder CreateHostBuilder(string[] args) => 26 | Host.CreateDefaultBuilder(args) 27 | .ConfigureWebHostDefaults(webBuilder => 28 | { 29 | webBuilder.UseStartup(); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot-3.1/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35005", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "SimpleHostBotDotNet": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "applicationUrl": "http://localhost:35005", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot/Controllers/SkillController.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Mvc; 5 | using Microsoft.Bot.Builder.Integration.AspNet.Core; 6 | using Microsoft.Bot.Builder.Skills; 7 | 8 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot.Controllers 9 | { 10 | /// 11 | /// A controller that handles skill replies to the bot. 12 | /// This example uses the that is registered as a in startup.cs. 13 | /// 14 | [ApiController] 15 | [Route("api/skills")] 16 | public class SkillController : ChannelServiceController 17 | { 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The skill handler registered as ChannelServiceHandlerBase. 22 | public SkillController(ChannelServiceHandlerBase handler) 23 | : base(handler) 24 | { 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot/Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | latest 6 | Microsoft.BotFrameworkFunctionalTests.SimpleHostBot 7 | Microsoft.BotFrameworkFunctionalTests.SimpleHostBot 8 | 9 | 10 | 11 | DEBUG;TRACE 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Always 23 | 24 | 25 | Always 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Hosting; 5 | using Microsoft.Extensions.Hosting; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBot 8 | { 9 | public class Program 10 | { 11 | /// 12 | /// The entry point of the application. 13 | /// 14 | /// The command line args. 15 | public static void Main(string[] args) 16 | { 17 | CreateHostBuilder(args).Build().Run(); 18 | } 19 | 20 | /// 21 | /// Creates a new instance of the class with pre-configured defaults. 22 | /// 23 | /// The command line args. 24 | /// The initialized . 25 | public static IHostBuilder CreateHostBuilder(string[] args) => 26 | Host.CreateDefaultBuilder(args) 27 | .ConfigureWebHostDefaults(webBuilder => 28 | { 29 | webBuilder.UseStartup(); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBot/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35000", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "SimpleHostBotDotNet": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "applicationUrl": "http://localhost:35000", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/.gitignore: -------------------------------------------------------------------------------- 1 | # files generated during the lubuild process 2 | # IMPORTANT: In regular composer bots the generated folder should be excluded and regenerated on the build server 3 | # or by the dev running composer locally. But in this case we include it so we don't have to run bf luis:cross-train 4 | # in the build server 5 | # generated/ 6 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/Microsoft.Bot.Builder.FunctionalTestsBots.SimpleHostBotComposer.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | OutOfProcess 6 | c7eabc4e-9c9c-4b56-82d5-23e24f20ee24 7 | 8 | 9 | 10 | PreserveNewest 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:35010/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "SimpleHostBotComposerDotNet": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "applicationUrl": "http://localhost:35010", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/knowledge-base/en-us/CallEchoSkill.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/knowledge-base/en-us/CallEchoSkill.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/language-understanding/en-us/CallEchoSkill.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/language-understanding/en-us/CallEchoSkill.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/recognizers/CallEchoSkill.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_CallEchoSkill", 4 | "applicationId": "=settings.luis.CallEchoSkill_en_us_lu.appId", 5 | "version": "=settings.luis.CallEchoSkill_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/recognizers/CallEchoSkill.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_CallEchoSkill", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/dialogs/CallEchoSkill/recognizers/CallEchoSkill.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/dialogs/emptyBot/knowledge-base/en-us/emptyBot.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/generated/interruption/CallEchoSkill.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/generated/interruption/CallEchoSkill.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/generated/interruption/CallEchoSkill.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/generated/interruption/CallEchoSkill.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/generated/interruption/SimpleHostBotComposer.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/generated/interruption/SimpleHostBotComposer.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/generated/interruption/SimpleHostBotComposer.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/generated/interruption/SimpleHostBotComposer.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/knowledge-base/en-us/simplehostbotcomposer.en-us.qna: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/knowledge-base/en-us/simplehostbotcomposer.en-us.qna -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/language-generation/en-us/common.en-us.lg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/language-generation/en-us/common.en-us.lg -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/language-generation/en-us/simplehostbotcomposer.en-us.lg: -------------------------------------------------------------------------------- 1 | [import](common.lg) 2 | 3 | # SendActivity_Greeting() 4 | [Activity 5 | Text = Hello and welcome! 6 | InputHint = acceptingInput 7 | ] 8 | 9 | # SendActivity_DidNotUnderstand() 10 | [Activity 11 | Text = ${SendActivity_DidNotUnderstand_text()} 12 | ] 13 | 14 | # SendActivity_DidNotUnderstand_text() 15 | - Sorry, I didn't get that. 16 | # SendActivity_M2LqJr() 17 | [Activity 18 | Text = Received endOfConversation.\n\nCode: ${turn.activity.code}. 19 | InputHint = acceptingInput 20 | ] 21 | 22 | # SendActivity_bgTcyn() 23 | [Activity 24 | Text = Back in the host bot. 25 | InputHint = acceptingInput 26 | ] 27 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/language-understanding/en-us/simplehostbotcomposer.en-us.lu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/SimpleHostBotComposer/language-understanding/en-us/simplehostbotcomposer.en-us.lu -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/recognizers/SimpleHostBotComposer.en-us.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.LuisRecognizer", 3 | "id": "LUIS_SimpleHostBotComposer", 4 | "applicationId": "=settings.luis.SimpleHostBotComposer_en_us_lu.appId", 5 | "version": "=settings.luis.SimpleHostBotComposer_en_us_lu.version", 6 | "endpoint": "=settings.luis.endpoint", 7 | "endpointKey": "=settings.luis.endpointKey" 8 | } 9 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/recognizers/SimpleHostBotComposer.lu.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.MultiLanguageRecognizer", 3 | "id": "LUIS_SimpleHostBotComposer", 4 | "recognizers": {} 5 | } 6 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/recognizers/SimpleHostBotComposer.lu.qna.dialog: -------------------------------------------------------------------------------- 1 | { 2 | "$kind": "Microsoft.CrossTrainedRecognizerSet", 3 | "recognizers": [] 4 | } 5 | -------------------------------------------------------------------------------- /Bots/DotNet/SimpleHostBotComposer/schemas/update-schema.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | SCHEMA_FILE=sdk.schema 3 | UISCHEMA_FILE=sdk.uischema 4 | BACKUP_SCHEMA_FILE=sdk-backup.schema 5 | BACKUP_UISCHEMA_FILE=sdk-backup.uischema 6 | 7 | while [ $# -gt 0 ]; do 8 | if [[ $1 == *"-"* ]]; then 9 | param="${1/-/}" 10 | declare $param="$2" 11 | fi 12 | shift 13 | done 14 | 15 | echo "Running schema merge." 16 | [ -f "$SCHEMA_FILE" ] && mv "./$SCHEMA_FILE" "./$BACKUP_SCHEMA_FILE" 17 | [ -f "$UISCHEMA_FILE" ] && mv "./$UISCHEMA_FILE" "./$BACKUP_UISCHEMA_FILE" 18 | 19 | bf dialog:merge "*.schema" "!**/sdk-backup.schema" "*.uischema" "!**/sdk-backup.uischema" "!**/sdk.override.uischema" "!**/generated" "../*.csproj" "../package.json" -o $SCHEMA_FILE 20 | 21 | if [ -f "$SCHEMA_FILE" ]; then 22 | rm -rf "./$BACKUP_SCHEMA_FILE" 23 | rm -rf "./$BACKUP_UISCHEMA_FILE" 24 | echo "Schema merged succesfully." 25 | [ -f "$SCHEMA_FILE" ] && echo " Schema: $SCHEMA_FILE" 26 | [ -f "$UISCHEMA_FILE" ] && echo " UI Schema: $UISCHEMA_FILE" 27 | else 28 | echo "Schema merge failed. Restoring previous versions." 29 | [ -f "$BACKUP_SCHEMA_FILE" ] && mv "./$BACKUP_SCHEMA_FILE" "./$SCHEMA_FILE" 30 | [ -f "$BACKUP_UISCHEMA_FILE" ] && mv "./$BACKUP_UISCHEMA_FILE" "./$UISCHEMA_FILE" 31 | fi 32 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/Cards/welcomeCard.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", 3 | "type": "AdaptiveCard", 4 | "version": "1.0", 5 | "body": [ 6 | { 7 | "type": "Image", 8 | "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU", 9 | "size": "stretch" 10 | }, 11 | { 12 | "type": "TextBlock", 13 | "spacing": "Medium", 14 | "size": "Medium", 15 | "weight": "Bolder", 16 | "text": "Welcome to the Skill Dialog Sample!", 17 | "wrap": true, 18 | "maxLines": 0, 19 | "color": "Accent" 20 | }, 21 | { 22 | "type": "TextBlock", 23 | "size": "default", 24 | "text": "This sample allows you to connect to a skill using a SkillDialog and invoke several actions.", 25 | "wrap": true, 26 | "maxLines": 0 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/ComponentSettings.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallHostBot 5 | { 6 | internal class ComponentSettings 7 | { 8 | /// 9 | /// Gets or sets a value indicating whether the runtime should use the TokenExchangeSkillHandler. 10 | /// 11 | /// . 12 | public bool UseTokenExchangeSkillHandler { get; set; } = false; 13 | 14 | /// 15 | /// Gets or sets the Connection Name to use for the single token exchange skill handler. 16 | /// 17 | /// .. 18 | public string TokenExchangeConnectionName { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallHostBot.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net6.0 5 | latest 6 | Microsoft.BotFrameworkFunctionalTests.WaterfallHostBot 7 | Microsoft.BotFrameworkFunctionalTests.WaterfallHostBot 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Hosting; 5 | using Microsoft.Extensions.Hosting; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallHostBot 8 | { 9 | public class Program 10 | { 11 | public static void Main(string[] args) 12 | { 13 | CreateHostBuilder(args).Build().Run(); 14 | } 15 | 16 | public static IHostBuilder CreateHostBuilder(string[] args) => 17 | Host.CreateDefaultBuilder(args) 18 | .ConfigureWebHostDefaults(webBuilder => 19 | { 20 | webBuilder.UseStartup(); 21 | }); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35020", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "WaterfallHostBot": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "applicationUrl": "http://localhost:35020", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/Skills/EchoSkill.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | using System.Collections.Generic; 6 | using Microsoft.Bot.Schema; 7 | 8 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallHostBot.Skills 9 | { 10 | public class EchoSkill : SkillDefinition 11 | { 12 | private enum SkillAction 13 | { 14 | Message 15 | } 16 | 17 | public override IList GetActions() 18 | { 19 | return new List { SkillAction.Message.ToString() }; 20 | } 21 | 22 | public override Activity CreateBeginActivity(string actionId) 23 | { 24 | if (!Enum.TryParse(actionId, true, out _)) 25 | { 26 | throw new InvalidOperationException($"Unable to create begin activity for \"{actionId}\"."); 27 | } 28 | 29 | // We only support one activity for Echo so no further checks are needed 30 | return new Activity(ActivityTypes.Message) 31 | { 32 | Name = SkillAction.Message.ToString(), 33 | Text = "Begin the Echo Skill." 34 | }; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/TeamsAppManifest/icon-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/WaterfallHostBot/TeamsAppManifest/icon-color.png -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallHostBot/TeamsAppManifest/icon-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/WaterfallHostBot/TeamsAppManifest/icon-outline.png -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Controllers/CardsController.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.IO; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallSkillBot.Controllers 8 | { 9 | // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot 10 | // implementation at runtime. Multiple different IBot implementations running at different endpoints can be 11 | // achieved by specifying a more specific type for the bot constructor argument. 12 | [ApiController] 13 | public class CardsController : ControllerBase 14 | { 15 | private static readonly string Music = "music.mp3"; 16 | 17 | [Route("api/music")] 18 | [HttpGet] 19 | public ActionResult ReturnFile() 20 | { 21 | var filename = Music; 22 | var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Dialogs/Cards/Files", filename); 23 | var fileData = System.IO.File.ReadAllBytes(filePath); 24 | 25 | return File(fileData, "audio/mp3"); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/Files/buildreactionbotframework.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/Files/buildreactionbotframework.jpg -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/Files/music.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/Files/music.mp3 -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/Files/teams-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/Files/teams-logo.png -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Dialogs/Cards/SampleData.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallSkillBot.Dialogs.Cards 5 | { 6 | public class SampleData 7 | { 8 | public SampleData() 9 | { 10 | MultiSelect = "true"; 11 | } 12 | 13 | public string Question { get; set; } 14 | 15 | public string MultiSelect { get; set; } 16 | 17 | public string Option1 { get; set; } 18 | 19 | public string Option2 { get; set; } 20 | 21 | public string Option3 { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Dialogs/Proactive/ContinuationParameters.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Security.Principal; 5 | using Microsoft.Bot.Schema; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallSkillBot.Dialogs.Proactive 8 | { 9 | /// 10 | /// Stores the information needed to resume a conversation when a proactive message arrives. 11 | /// 12 | public class ContinuationParameters 13 | { 14 | public IIdentity ClaimsIdentity { get; set; } 15 | 16 | public string OAuthScope { get; set; } 17 | 18 | public ConversationReference ConversationReference { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.AspNetCore.Hosting; 5 | using Microsoft.Extensions.Hosting; 6 | 7 | namespace Microsoft.Bot.Builder.FunctionalTestsBots.WaterfallSkillBot 8 | { 9 | public class Program 10 | { 11 | public static void Main(string[] args) 12 | { 13 | CreateHostBuilder(args).Build().Run(); 14 | } 15 | 16 | public static IHostBuilder CreateHostBuilder(string[] args) => 17 | Host.CreateDefaultBuilder(args) 18 | .ConfigureWebHostDefaults(webBuilder => 19 | { 20 | webBuilder.UseStartup(); 21 | }); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35420/", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": false, 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "WaterfallSkillBotDotNet": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "applicationUrl": "http://localhost:35420/", 23 | "environmentVariables": { 24 | "ASPNETCORE_ENVIRONMENT": "Development" 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MicrosoftAppType": "", 3 | "MicrosoftAppId": "", 4 | "MicrosoftAppPassword": "", 5 | "MicrosoftAppTenantId": "", 6 | "ConnectionName": "TestOAuthProvider", 7 | "SsoConnectionName": "", 8 | "ChannelService": "", 9 | // This is a comma separate list with the App IDs that will have access to the skill. 10 | // This setting is used in AllowedCallersClaimsValidator. 11 | // Examples: 12 | // [ "*" ] allows all callers. 13 | // [ "AppId1", "AppId2" ] only allows access to parent bots with "AppId1" and "AppId2". 14 | "AllowedCallers": [ "*" ], 15 | 16 | "SkillHostEndpoint": "http://localhost:35420/api/skills", 17 | "EchoSkillInfo": { 18 | "Id": "EchoSkillBot", 19 | "AppId": "", 20 | "SkillEndpoint": "http://localhost:35400/api/messages" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bots/DotNet/WaterfallSkillBot/wwwroot/images/architecture-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/DotNet/WaterfallSkillBot/wwwroot/images/architecture-resize.png -------------------------------------------------------------------------------- /Bots/JavaScript/.env: -------------------------------------------------------------------------------- 1 | BotBuilderVersion=~4.15.0 -------------------------------------------------------------------------------- /Bots/JavaScript/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Ignore web.config files generated to deploy JS to IIS on Windows 3 | **/web.config 4 | Utils/temp 5 | -------------------------------------------------------------------------------- /Bots/JavaScript/.yarnrc.yml: -------------------------------------------------------------------------------- 1 | yarnPath: .yarn/releases/yarn-berry-3.2.3.cjs 2 | 3 | plugins: 4 | - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs 5 | spec: "@yarnpkg/plugin-workspace-tools" 6 | 7 | packageExtensions: 8 | eslint-module-utils@*: 9 | dependencies: 10 | eslint-import-resolver-node: "*" -------------------------------------------------------------------------------- /Bots/JavaScript/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM mcr.microsoft.com/oryx/node:16 3 | 4 | # Set BotBuilder version env variable 5 | ARG BotBuilderVersion 6 | ENV BotBuilderVersion ${BotBuilderVersion} 7 | 8 | # Specify the bot folder. 9 | # When executing `docker build` remember to use the `--build-arg folder=./`. 10 | ARG folder=./ # Optional, default value to be `./` (current folder). 11 | 12 | # Copy Source Code into the container 13 | WORKDIR /app 14 | COPY ${folder} . 15 | 16 | # Install dependencies 17 | RUN node Utils/prepare.mjs replace 18 | RUN npm install --ignore-scripts 19 | 20 | # Run the application 21 | CMD npm start 22 | -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot-v3/.env: -------------------------------------------------------------------------------- 1 | MicrosoftAppId= 2 | MicrosoftAppPassword= 3 | AllowedCallers=* -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot-v3/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM mcr.microsoft.com/oryx/node:16 3 | 4 | # Set BotBuilder version env variable 5 | ARG BotBuilderVersion 6 | ENV BotBuilderVersion ${BotBuilderVersion} 7 | 8 | # Specify the bot folder. 9 | # When executing `docker build` remember to use the `--build-arg folder=./`. 10 | ARG folder=./ # Optional, default value to be `./` (current folder). 11 | 12 | # Copy Source Code into the container 13 | WORKDIR /app 14 | COPY ${folder} . 15 | 16 | # Install dependencies 17 | RUN npm install 18 | 19 | # Run the application 20 | CMD npm start 21 | -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot-v3/manifests/echoskillbotv3-manifest-1.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotJSV3", 4 | "name": "EchoSkillBotJSV3", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (implemented using JS and BF v3).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 36407)", 19 | "endpointUrl": "http://localhost:36407/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot-v3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "v3-skill-bot", 3 | "version": "1.0.0", 4 | "description": "An example of a V3 bot that can be used as a skill", 5 | "author": "Microsoft Corp.", 6 | "license": "MIT", 7 | "scripts": { 8 | "start": "node ./index.js", 9 | "postinstall": "rimraf -rf node_modules/botbuilder/node_modules/chrono-node" 10 | }, 11 | "dependencies": { 12 | "botbuilder": "^3.30.0", 13 | "chrono-node": "2.2.4", 14 | "dotenv": "^8.2.0", 15 | "restify": "^8.5.1" 16 | }, 17 | "devDependencies": { 18 | "rimraf": "^3.0.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot/.env: -------------------------------------------------------------------------------- 1 | MicrosoftAppType= 2 | MicrosoftAppId= 3 | MicrosoftAppPassword= 4 | MicrosoftAppTenantId= 5 | AllowedCallers=* 6 | -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot/manifests/echoskillbot-manifest-1.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotJS", 4 | "name": "EchoSkillBotJS", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (implemented using JS).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 36400)", 19 | "endpointUrl": "http://localhost:36400/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /Bots/JavaScript/EchoSkillBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "echo-skill-bot", 3 | "private": true, 4 | "description": "Bot Builder v4 echo skill bot sample", 5 | "author": "Microsoft", 6 | "license": "MIT", 7 | "scripts": { 8 | "start": "node index.js", 9 | "watch": "nodemon index.js", 10 | "preinstall": "node ../Utils/prepare.mjs replace", 11 | "postinstall": "node ../Utils/prepare.mjs restore" 12 | }, 13 | "dependencies": { 14 | "botbuilder": "$BotBuilderVersion", 15 | "botframework-connector": "$BotBuilderVersion", 16 | "dotenv": "^10.0.0", 17 | "restify": "^8.5.1" 18 | }, 19 | "devDependencies": { 20 | "nodemon": "^2.0.15" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bots/JavaScript/SimpleHostBot/.env: -------------------------------------------------------------------------------- 1 | MicrosoftAppType= 2 | MicrosoftAppId= 3 | MicrosoftAppPassword= 4 | MicrosoftAppTenantId= 5 | SkillHostEndpoint=http://localhost:36000/api/skills/ 6 | 7 | skill_EchoSkillBotComposerDotNet_appId= 8 | skill_EchoSkillBotComposerDotNet_endpoint=http://localhost:35410/api/messages 9 | 10 | skill_EchoSkillBotDotNet_appId= 11 | skill_EchoSkillBotDotNet_endpoint=http://localhost:35400/api/messages 12 | 13 | skill_EchoSkillBotDotNet31_appId= 14 | skill_EchoSkillBotDotNet31_endpoint=http://localhost:35405/api/messages 15 | 16 | skill_EchoSkillBotDotNetV3_appId= 17 | skill_EchoSkillBotDotNetV3_endpoint=http://localhost:35407/api/messages 18 | 19 | skill_EchoSkillBotJS_appId= 20 | skill_EchoSkillBotJS_endpoint=http://localhost:36400/api/messages 21 | 22 | skill_EchoSkillBotJSV3_appId= 23 | skill_EchoSkillBotJSV3_endpoint=http://localhost:36407/api/messages 24 | 25 | skill_EchoSkillBotPython_appId= 26 | skill_EchoSkillBotPython_endpoint=http://localhost:37400/api/messages 27 | -------------------------------------------------------------------------------- /Bots/JavaScript/SimpleHostBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple-root-bot", 3 | "private": true, 4 | "description": "A simple root bot for testing skills", 5 | "author": "Microsoft", 6 | "license": "MIT", 7 | "scripts": { 8 | "start": "node index.js", 9 | "watch": "nodemon index.js", 10 | "preinstall": "node ../Utils/prepare.mjs replace", 11 | "postinstall": "node ../Utils/prepare.mjs restore" 12 | }, 13 | "dependencies": { 14 | "botbuilder": "$BotBuilderVersion", 15 | "botbuilder-dialogs": "$BotBuilderVersion", 16 | "dotenv": "^10.0.0", 17 | "restify": "^8.5.1" 18 | }, 19 | "devDependencies": { 20 | "nodemon": "^2.0.15" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallHostBot/cards/welcomeCard.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", 3 | "type": "AdaptiveCard", 4 | "version": "1.0", 5 | "body": [ 6 | { 7 | "type": "Image", 8 | "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU", 9 | "size": "stretch" 10 | }, 11 | { 12 | "type": "TextBlock", 13 | "spacing": "Medium", 14 | "size": "Medium", 15 | "weight": "Bolder", 16 | "text": "Welcome to the Skill Dialog Sample!", 17 | "wrap": true, 18 | "maxLines": 0, 19 | "color": "Accent" 20 | }, 21 | { 22 | "type": "TextBlock", 23 | "size": "default", 24 | "text": "This sample allows you to connect to a skill using a SkillDialog and invoke several actions.", 25 | "wrap": true, 26 | "maxLines": 0 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallHostBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "waterfall-host-bot", 3 | "private": true, 4 | "description": "A simple waterfall root bot for testing skills", 5 | "author": "Microsoft", 6 | "license": "MIT", 7 | "main": "index.js", 8 | "scripts": { 9 | "start": "node index.js", 10 | "watch": "nodemon index.js", 11 | "preinstall": "node ../Utils/prepare.mjs replace", 12 | "postinstall": "node ../Utils/prepare.mjs restore" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com" 17 | }, 18 | "dependencies": { 19 | "botbuilder": "$BotBuilderVersion", 20 | "botbuilder-dialogs": "$BotBuilderVersion", 21 | "dotenv": "^10.0.0", 22 | "restify": "^8.5.1" 23 | }, 24 | "devDependencies": { 25 | "nodemon": "^2.0.15" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallHostBot/skills/echoSkill.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | const { ActivityEx } = require('botbuilder-core'); 5 | const { SkillDefinition } = require('./skillDefinition'); 6 | 7 | class EchoSkill extends SkillDefinition { 8 | getActions () { 9 | return new Set(['Message']); 10 | } 11 | 12 | /** 13 | * @param {string} actionId 14 | */ 15 | createBeginActivity (actionId) { 16 | if (!this.getActions().has(actionId)) { 17 | throw new Error(`[EchoSkill]: Unable to create begin activity for "${actionId}".`); 18 | } 19 | 20 | // We only support one activity for Echo so no further checks are needed 21 | const activity = ActivityEx.createMessageActivity(); 22 | activity.name = actionId; 23 | activity.text = 'Begin the Echo Skill.'; 24 | 25 | return activity; 26 | } 27 | } 28 | 29 | module.exports.EchoSkill = EchoSkill; 30 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallHostBot/skills/skillDefinition.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | class SkillDefinition { 5 | getActions () { 6 | throw new Error('[SkillDefinition]: Method not implemented'); 7 | } 8 | 9 | createBeginActivity () { 10 | throw new Error('[SkillDefinition]: Method not implemented'); 11 | } 12 | } 13 | 14 | module.exports.SkillDefinition = SkillDefinition; 15 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallHostBot/skills/teamsSkill.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | const { ActivityEx } = require('botbuilder-core'); 5 | const { SkillDefinition } = require('./skillDefinition'); 6 | 7 | class TeamsSkill extends SkillDefinition { 8 | getActions () { 9 | return new Set([ 10 | 'TeamsTaskModule', 11 | 'TeamsCardAction', 12 | 'TeamsConversation', 13 | 'Cards', 14 | 'Proactive', 15 | 'Attachment', 16 | 'Auth', 17 | 'Sso', 18 | 'Echo', 19 | 'FileUpload', 20 | 'Delete', 21 | 'Update' 22 | ]); 23 | } 24 | 25 | /** 26 | * @param {string} actionId 27 | */ 28 | createBeginActivity (actionId) { 29 | if (!this.getActions().has(actionId)) { 30 | throw new Error(`[TeamsSkill]: Unable to create begin activity for "${actionId}".`); 31 | } 32 | 33 | // We don't support special parameters in these skills so a generic event with the right name 34 | // will do in this case. 35 | const activity = ActivityEx.createEventActivity(); 36 | activity.name = actionId; 37 | 38 | return activity; 39 | } 40 | } 41 | 42 | module.exports.TeamsSkill = TeamsSkill; 43 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallHostBot/skills/waterfallSkill.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | const { ActivityEx } = require('botbuilder-core'); 5 | const { SkillDefinition } = require('./skillDefinition'); 6 | 7 | class WaterfallSkill extends SkillDefinition { 8 | getActions () { 9 | return new Set([ 10 | 'Cards', 11 | 'Proactive', 12 | 'Auth', 13 | 'MessageWithAttachment', 14 | 'Sso', 15 | 'FileUpload', 16 | 'Echo', 17 | 'Delete', 18 | 'Update' 19 | ]); 20 | } 21 | 22 | /** 23 | * @param {string} actionId 24 | */ 25 | createBeginActivity (actionId) { 26 | if (!this.getActions().has(actionId)) { 27 | throw new Error(`[WaterfallSkill]: Unable to create begin activity for "${actionId}".`); 28 | } 29 | 30 | // We don't support special parameters in these skills so a generic event with the right name 31 | // will do in this case. 32 | const activity = ActivityEx.createEventActivity(); 33 | activity.name = actionId; 34 | 35 | return activity; 36 | } 37 | } 38 | 39 | module.exports.WaterfallSkill = WaterfallSkill; 40 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/.env: -------------------------------------------------------------------------------- 1 | MicrosoftAppType= 2 | MicrosoftAppId= 3 | MicrosoftAppPassword= 4 | MicrosoftAppTenantId= 5 | ConnectionName=TestOAuthProvider 6 | SsoConnectionName= 7 | ChannelService= 8 | AllowedCallers=* 9 | SkillHostEndpoint=http://localhost:36420/api/skills/ 10 | 11 | EchoSkillInfo_id=EchoSkillBot 12 | EchoSkillInfo_appId= 13 | EchoSkillInfo_skillEndpoint=http://localhost:36400/api/messages 14 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/JavaScript/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/dialogs/cards/files/music.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/JavaScript/WaterfallSkillBot/dialogs/cards/files/music.mp3 -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/dialogs/cards/files/teams-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/JavaScript/WaterfallSkillBot/dialogs/cards/files/teams-logo.png -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/dialogs/proactive/continuationParameters.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | /** 5 | * Stores the information needed to resume a conversation when a proactive message arrives. 6 | */ 7 | class ContinuationParameters { 8 | /** 9 | * @param {string} claimsIdentity 10 | * @param {string} oAuthScope 11 | * @param {import('botbuilder').ConversationReference} conversationReference 12 | */ 13 | constructor (claimsIdentity, oAuthScope, conversationReference) { 14 | this.claimsIdentity = claimsIdentity; 15 | this.oAuthScope = oAuthScope; 16 | this.conversationReference = conversationReference; 17 | } 18 | } 19 | 20 | module.exports.ContinuationParameters = ContinuationParameters; 21 | -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/images/architecture-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/JavaScript/WaterfallSkillBot/images/architecture-resize.png -------------------------------------------------------------------------------- /Bots/JavaScript/WaterfallSkillBot/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "waterfall-skill-bot", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "A simple waterfall skill bot for testing skills", 6 | "author": "Microsoft", 7 | "license": "MIT", 8 | "scripts": { 9 | "start": "node index.js", 10 | "watch": "nodemon index.js", 11 | "preinstall": "node ../Utils/prepare.mjs replace", 12 | "postinstall": "node ../Utils/prepare.mjs restore" 13 | }, 14 | "dependencies": { 15 | "botbuilder": "$BotBuilderVersion", 16 | "botbuilder-dialogs": "$BotBuilderVersion", 17 | "dotenv": "^10.0.0", 18 | "node-fetch": "^2.6.1", 19 | "restify": "~8.5.1" 20 | }, 21 | "devDependencies": { 22 | "nodemon": "^2.0.15" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Bots/JavaScript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "botframework-functional-tests", 3 | "private": true, 4 | "workspaces": { 5 | "packages": [ 6 | "*" 7 | ] 8 | }, 9 | "devDependencies": { 10 | "semistandard": "^16.0.0" 11 | }, 12 | "scripts": { 13 | "lint": "semistandard", 14 | "prepareAndInstall": "yarn workspaces foreach run preinstall && yarn install && yarn workspaces foreach run postinstall" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Bots/Python/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Ignore .deployment files generated to deploy Python to linux from VSCode 3 | **/.deployment -------------------------------------------------------------------------------- /Bots/Python/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM mcr.microsoft.com/oryx/python:3.10 3 | 4 | # Specify the bot folder. 5 | # When executing `docker build` remember to use the `--build-arg folder=./`. 6 | ARG folder=./ # Optional, default value to be `./` (current folder). 7 | 8 | # Set virtual environment 9 | ENV VIRTUAL_ENV=/app/venv 10 | RUN python3 -m venv $VIRTUAL_ENV 11 | ENV PATH="$VIRTUAL_ENV/bin:$PATH" 12 | 13 | RUN apt update 14 | RUN apt install gcc -y 15 | 16 | # Update pip 17 | RUN python -m pip install --upgrade pip 18 | 19 | # Copy Source Code into the container 20 | WORKDIR /app 21 | COPY ${folder} . 22 | 23 | # Install dependencies 24 | RUN pip install -r requirements.txt 25 | 26 | # Run the application 27 | CMD python app.py 28 | 29 | -------------------------------------------------------------------------------- /Bots/Python/EchoSkillBot/authentication/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .allowed_callers_claims_validator import AllowedCallersClaimsValidator 5 | 6 | __all__ = ["AllowedCallersClaimsValidator"] 7 | -------------------------------------------------------------------------------- /Bots/Python/EchoSkillBot/bots/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .echo_bot import EchoBot 5 | 6 | __all__ = ["EchoBot"] 7 | -------------------------------------------------------------------------------- /Bots/Python/EchoSkillBot/config.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Microsoft Corporation. All rights reserved. 3 | # Licensed under the MIT License. 4 | 5 | import os 6 | 7 | """ Bot Configuration """ 8 | 9 | class DefaultConfig: 10 | """ Bot Configuration """ 11 | 12 | PORT = 37400 13 | APP_ID = os.environ.get("MicrosoftAppId", "") 14 | APP_PASSWORD = os.environ.get("MicrosoftAppPassword", "") 15 | # If ALLOWED_CALLERS is empty, any bot can call this Skill. Add MicrosoftAppIds to restrict callers to only those specified. 16 | # Example: os.environ.get("AllowedCallers", ["54d3bb6a-3b6d-4ccd-bbfd-cad5c72fb53a", "3851a47b-53ed-4d29-b878-6e941da61e98"]) 17 | ALLOWED_CALLERS = os.environ.get("AllowedCallers", []) 18 | -------------------------------------------------------------------------------- /Bots/Python/EchoSkillBot/manifests/echoskillbot-manifest-1.0.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", 3 | "$id": "EchoSkillBotPython", 4 | "name": "EchoSkillBotPython", 5 | "version": "1.0", 6 | "description": "This is a skill for echoing what the user sent to the bot (using Python).", 7 | "publisherName": "Microsoft", 8 | "privacyUrl": "https://microsoft.com/privacy", 9 | "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", 10 | "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", 11 | "tags": [ 12 | "echo" 13 | ], 14 | "endpoints": [ 15 | { 16 | "name": "default", 17 | "protocol": "BotFrameworkV3", 18 | "description": "Localhost endpoint for the skill (on port 37400)", 19 | "endpointUrl": "http://localhost:37400/api/messages", 20 | "msAppId": "00000000-0000-0000-0000-000000000000" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /Bots/Python/EchoSkillBot/requirements.txt: -------------------------------------------------------------------------------- 1 | -r ../requirements.txt 2 | -------------------------------------------------------------------------------- /Bots/Python/SimpleHostBot/.env: -------------------------------------------------------------------------------- 1 | MicrosoftAppId= 2 | MicrosoftAppPassword= 3 | SkillHostEndpoint=http://localhost:37000/api/skills 4 | 5 | skill_EchoSkillBotComposerDotNet_appId= 6 | skill_EchoSkillBotComposerDotNet_endpoint=http://localhost:35410/api/messages 7 | 8 | skill_EchoSkillBotDotNet_appId= 9 | skill_EchoSkillBotDotNet_endpoint=http://localhost:35400/api/messages 10 | 11 | skill_EchoSkillBotDotNet31_appId= 12 | skill_EchoSkillBotDotNet31_endpoint=http://localhost:35405/api/messages 13 | 14 | skill_EchoSkillBotDotNetV3_appId= 15 | skill_EchoSkillBotDotNetV3_endpoint=http://localhost:35407/api/messages 16 | 17 | skill_EchoSkillBotJS_appId= 18 | skill_EchoSkillBotJS_endpoint=http://localhost:36400/api/messages 19 | 20 | skill_EchoSkillBotJSV3_appId= 21 | skill_EchoSkillBotJSV3_endpoint=http://localhost:36407/api/messages 22 | 23 | skill_EchoSkillBotPython_appId= 24 | skill_EchoSkillBotPython_endpoint=http://localhost:37400/api/messages 25 | -------------------------------------------------------------------------------- /Bots/Python/SimpleHostBot/authentication/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .allowed_skills_claims_validator import AllowedSkillsClaimsValidator 5 | 6 | __all__ = ["AllowedSkillsClaimsValidator"] 7 | -------------------------------------------------------------------------------- /Bots/Python/SimpleHostBot/bots/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .host_bot import HostBot 5 | 6 | 7 | __all__ = ["HostBot"] 8 | -------------------------------------------------------------------------------- /Bots/Python/SimpleHostBot/dialogs/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .setup_dialog import SetupDialog 5 | 6 | __all__ = ["SetupDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/SimpleHostBot/helpers/dialog_helper.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from botbuilder.core import StatePropertyAccessor, TurnContext 5 | from botbuilder.dialogs import Dialog, DialogSet, DialogTurnStatus 6 | 7 | 8 | class DialogHelper: 9 | @staticmethod 10 | async def run_dialog( 11 | dialog: Dialog, turn_context: TurnContext, accessor: StatePropertyAccessor 12 | ): 13 | dialog_set = DialogSet(accessor) 14 | dialog_set.add(dialog) 15 | 16 | dialog_context = await dialog_set.create_context(turn_context) 17 | results = await dialog_context.continue_dialog() 18 | if results.status == DialogTurnStatus.Empty: 19 | await dialog_context.begin_dialog(dialog.id) 20 | -------------------------------------------------------------------------------- /Bots/Python/SimpleHostBot/requirements.txt: -------------------------------------------------------------------------------- 1 | -r ../requirements.txt -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/authentication/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .allowed_skills_claims_validator import AllowedSkillsClaimsValidator 5 | 6 | __all__ = ["AllowedSkillsClaimsValidator"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/bots/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .root_bot import RootBot 5 | 6 | 7 | __all__ = ["RootBot"] 8 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/cards/welcomeCard.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", 3 | "type": "AdaptiveCard", 4 | "version": "1.0", 5 | "body": [ 6 | { 7 | "type": "Image", 8 | "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU", 9 | "size": "stretch" 10 | }, 11 | { 12 | "type": "TextBlock", 13 | "spacing": "Medium", 14 | "size": "Medium", 15 | "weight": "Bolder", 16 | "text": "Welcome to the Skill Dialog Sample!", 17 | "wrap": true, 18 | "maxLines": 0, 19 | "color": "Accent" 20 | }, 21 | { 22 | "type": "TextBlock", 23 | "size": "default", 24 | "text": "This sample allows you to connect to a skill using a SkillDialog and invoke several actions.", 25 | "wrap": true, 26 | "maxLines": 0 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/dialogs/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .main_dialog import MainDialog 5 | from .tangent_dialog import TangentDialog 6 | from .sso import SsoDialog, SsoSignInDialog 7 | 8 | __all__ = ["MainDialog", "TangentDialog", "SsoDialog", "SsoSignInDialog"] 9 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/dialogs/sso/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .sso_dialog import SsoDialog 5 | from .sso_signin_dialog import SsoSignInDialog 6 | 7 | __all__ = ["SsoDialog", "SsoSignInDialog"] 8 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/helpers/dialog_helper.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from botbuilder.core import StatePropertyAccessor, TurnContext 5 | from botbuilder.dialogs import Dialog, DialogSet, DialogTurnStatus 6 | 7 | 8 | class DialogHelper: 9 | @staticmethod 10 | async def run_dialog( 11 | dialog: Dialog, turn_context: TurnContext, accessor: StatePropertyAccessor 12 | ): 13 | dialog_set = DialogSet(accessor) 14 | dialog_set.add(dialog) 15 | 16 | dialog_context = await dialog_set.create_context(turn_context) 17 | results = await dialog_context.continue_dialog() 18 | if results.status == DialogTurnStatus.Empty: 19 | await dialog_context.begin_dialog(dialog.id) 20 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/requirements.txt: -------------------------------------------------------------------------------- 1 | -r ../requirements.txt 2 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/skills/echo_skill.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from enum import Enum 5 | from botbuilder.schema import Activity 6 | from skills.skill_definition import SkillDefinition 7 | 8 | 9 | class EchoSkill(SkillDefinition): 10 | class SkillAction(str, Enum): 11 | MESSAGE = "Message" 12 | 13 | def get_actions(self): 14 | return self.SkillAction 15 | 16 | def create_begin_activity(self, action_id: str): 17 | if action_id not in self.SkillAction: 18 | raise Exception(f'Unable to create begin activity for "${action_id}".') 19 | 20 | # We only support one activity for Echo so no further checks are needed 21 | activity = Activity.create_message_activity() 22 | activity.name = self.SkillAction.MESSAGE.value 23 | activity.text = "Begin the Echo Skill" 24 | 25 | return activity 26 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/skills/skill_definition.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from botbuilder.core.skills import BotFrameworkSkill 5 | 6 | 7 | class SkillDefinition(BotFrameworkSkill): 8 | """ 9 | Extends BotFrameworkSkill and provides methods to return the actions and the begin activity 10 | to start a skill. 11 | This class also exposes a group property to render skill groups and narrow down the available 12 | options. 13 | Remarks: This is just a temporary implementation, ideally, this should be replaced by logic that 14 | parses a manifest and creates what's needed. 15 | """ 16 | 17 | def __init__(self, id: str = None, group: str = None): 18 | super().__init__(id=id) 19 | self.group = group 20 | 21 | def get_actions(self): 22 | raise NotImplementedError("[SkillDefinition]: Method not implemented") 23 | 24 | def create_begin_activity(self, action_id: str): 25 | raise NotImplementedError("[SkillDefinition]: Method not implemented") 26 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallHostBot/skills/waterfall_skill.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from enum import Enum 5 | from botbuilder.schema import Activity 6 | from skills.skill_definition import SkillDefinition 7 | 8 | 9 | class WaterfallSkill(SkillDefinition): 10 | class SkillAction(str, Enum): 11 | CARDS = "Cards" 12 | PROACTIVE = "Proactive" 13 | AUTH = "Auth" 14 | MESSAGE_WITH_ATTACHMENT = "MessageWithAttachment" 15 | SSO = "Sso" 16 | FILE_UPLOAD = "FileUpload" 17 | ECHO = "Echo" 18 | DELETE = "Delete" 19 | UPDATE = "Update" 20 | 21 | def get_actions(self): 22 | return self.SkillAction 23 | 24 | def create_begin_activity(self, action_id: str): 25 | if action_id not in self.SkillAction: 26 | raise Exception(f'Unable to create begin activity for "${action_id}".') 27 | 28 | # We don't support special parameters in these skills so a generic event with the 29 | # right name will do in this case. 30 | activity = Activity.create_event_activity() 31 | activity.name = action_id 32 | 33 | return activity 34 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/.env: -------------------------------------------------------------------------------- 1 | MicrosoftAppId= 2 | MicrosoftAppPassword= 3 | ConnectionName=TestOAuthProvider 4 | SsoConnectionName= 5 | ChannelService= 6 | AllowedCallers=* 7 | SkillHostEndpoint=http://localhost:37420/api/skills 8 | 9 | EchoSkillInfo_id=EchoSkillBot 10 | EchoSkillInfo_appId= 11 | EchoSkillInfo_skillEndpoint=http://localhost:37400/api/messages 12 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/authentication/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .allowed_callers_claims_validator import AllowedCallersClaimsValidator 5 | 6 | __all__ = ["AllowedCallersClaimsValidator"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/bots/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .skill_bot import SkillBot 5 | 6 | __all__ = ["SkillBot"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .activity_router_dialog import ActivityRouterDialog 5 | 6 | __all__ = ["ActivityRouterDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/auth/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .auth_dialog import AuthDialog 5 | 6 | __all__ = ["AuthDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/cards/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .card_dialog import CardDialog 5 | from .card_options import CardOptions 6 | from .card_sample_helper import CardSampleHelper 7 | from .channel_supported_cards import ChannelSupportedCards 8 | 9 | __all__ = ["CardDialog", "CardOptions", "CardSampleHelper", "ChannelSupportedCards"] 10 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/cards/card_options.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from enum import Enum 5 | 6 | 7 | class CardOptions(str, Enum): 8 | ADAPTIVE_CARD_BOT_ACTION = "AdaptiveCardBotAction" 9 | ADAPTIVE_CARD_TEAMS_TASK_MODULE = "AdaptiveCardTeamsTaskModule" 10 | ADAPTIVE_CARD_SUBMIT_ACTION = "AdaptiveCardSubmitAction" 11 | HERO = "Hero" 12 | THUMBNAIL = "Thumbnail" 13 | RECEIPT = "Receipt" 14 | SIGN_IN = "Signin" 15 | CAROUSEL = "Carousel" 16 | LIST = "List" 17 | O365 = "O365" 18 | TEAMS_FILE_CONSENT = "TeamsFileConsent" 19 | ANIMATION = "Animation" 20 | AUDIO = "Audio" 21 | VIDEO = "Video" 22 | ADAPTIVE_UPDATE = "AdaptiveUpdate" 23 | END = "End" 24 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/cards/channel_supported_cards.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from botframework.connector import Channels 5 | 6 | from dialogs.cards.card_options import CardOptions 7 | 8 | 9 | UNSUPPORTED_CHANNEL_CARDS = { 10 | Channels.emulator.value: [ 11 | CardOptions.ADAPTIVE_CARD_TEAMS_TASK_MODULE, 12 | CardOptions.ADAPTIVE_UPDATE, 13 | CardOptions.O365, 14 | CardOptions.TEAMS_FILE_CONSENT, 15 | ], 16 | Channels.direct_line.value: [CardOptions.ADAPTIVE_UPDATE], 17 | Channels.telegram.value: [ 18 | CardOptions.ADAPTIVE_CARD_BOT_ACTION, 19 | CardOptions.ADAPTIVE_CARD_TEAMS_TASK_MODULE, 20 | CardOptions.ADAPTIVE_CARD_SUBMIT_ACTION, 21 | CardOptions.LIST, 22 | CardOptions.TEAMS_FILE_CONSENT, 23 | ], 24 | } 25 | 26 | 27 | class ChannelSupportedCards: 28 | @staticmethod 29 | def is_card_supported(channel: str, card_type: CardOptions): 30 | if channel in UNSUPPORTED_CHANNEL_CARDS: 31 | if card_type in UNSUPPORTED_CHANNEL_CARDS[channel]: 32 | return False 33 | return True 34 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/Python/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/cards/files/music.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/Python/WaterfallSkillBot/dialogs/cards/files/music.mp3 -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/cards/files/teams-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/Python/WaterfallSkillBot/dialogs/cards/files/teams-logo.png -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/delete/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .delete_dialog import DeleteDialog 5 | 6 | __all__ = ["DeleteDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/file_upload/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .file_upload_dialog import FileUploadDialog 5 | 6 | __all__ = ["FileUploadDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/message_with_attachment/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .message_with_attachment_dialog import MessageWithAttachmentDialog 5 | 6 | __all__ = ["MessageWithAttachmentDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/proactive/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .continuation_parameters import ContinuationParameters 5 | from .wait_for_proactive_dialog import WaitForProactiveDialog 6 | 7 | __all__ = ["ContinuationParameters", "WaitForProactiveDialog"] 8 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/proactive/continuation_parameters.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from botbuilder.schema import ConversationReference 5 | 6 | 7 | class ContinuationParameters: 8 | def __init__( 9 | self, 10 | claims_identity: str, 11 | oauth_scope: str, 12 | conversation_reference: ConversationReference, 13 | ): 14 | self.claims_identity = claims_identity 15 | self.oauth_scope = oauth_scope 16 | self.conversation_reference = conversation_reference 17 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/sso/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .sso_skill_dialog import SsoSkillDialog 5 | from .sso_skill_signin_dialog import SsoSkillSignInDialog 6 | 7 | __all__ = ["SsoSkillDialog", "SsoSkillSignInDialog"] 8 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/dialogs/update/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .update_dialog import UpdateDialog 5 | 6 | __all__ = ["UpdateDialog"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/images/architecture-resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Bots/Python/WaterfallSkillBot/images/architecture-resize.png -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/middleware/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from .sso_save_state_middleware import SsoSaveStateMiddleware 5 | 6 | __all__ = ["SsoSaveStateMiddleware"] 7 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/middleware/sso_save_state_middleware.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. All rights reserved. 2 | # Licensed under the MIT License. 3 | 4 | from typing import Awaitable, Callable, List 5 | from botbuilder.core import Middleware, TurnContext, ConversationState, CardFactory 6 | from botbuilder.schema import Activity 7 | 8 | 9 | class SsoSaveStateMiddleware(Middleware): 10 | def __init__(self, conversation_state: ConversationState): 11 | self.conversation_state = conversation_state 12 | 13 | async def on_turn( 14 | self, context: TurnContext, logic: Callable[[TurnContext], Awaitable] 15 | ): 16 | # Register outgoing handler. 17 | context.on_send_activities(self._outgoing_handler) 18 | return await logic() 19 | 20 | async def _outgoing_handler( 21 | self, context: TurnContext, activities: List[Activity], next: Callable 22 | ): 23 | for activity in activities: 24 | if activity.attachments is not None and any( 25 | x.content_type == CardFactory.content_types.oauth_card 26 | for x in activity.attachments 27 | ): 28 | await self.conversation_state.save_changes(context) 29 | 30 | return await next() 31 | -------------------------------------------------------------------------------- /Bots/Python/WaterfallSkillBot/requirements.txt: -------------------------------------------------------------------------------- 1 | -r ../requirements.txt 2 | -------------------------------------------------------------------------------- /Bots/Python/requirements.txt: -------------------------------------------------------------------------------- 1 | botbuilder-integration-aiohttp>=4.14.2 2 | botbuilder-dialogs>=4.14.2 3 | emoji<2.0.0 4 | python-dotenv 5 | -------------------------------------------------------------------------------- /Bots/SimpleHostBotComposerDotNet.bot: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleHostBotComposerDotNet", 3 | "description": "", 4 | "services": [ 5 | { 6 | "type": "endpoint", 7 | "appId": "", 8 | "appPassword": "", 9 | "endpoint": "http://localhost:35010/api/messages", 10 | "id": "eefb3b80-6250-11eb-9298-2763eb2fc29e", 11 | "name": "http://localhost:35010/api/messages" 12 | } 13 | ], 14 | "padlock": "", 15 | "version": "2.0", 16 | "overrides": null 17 | } 18 | -------------------------------------------------------------------------------- /Bots/SimpleHostBotDotNet.bot: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleHostBotDotNet", 3 | "description": "", 4 | "services": [ 5 | { 6 | "type": "endpoint", 7 | "appId": "", 8 | "appPassword": "", 9 | "endpoint": "http://localhost:35000/api/messages", 10 | "id": "eefb3b80-6250-11eb-9298-2763eb2fc29e", 11 | "name": "http://localhost:35000/api/messages" 12 | } 13 | ], 14 | "padlock": "", 15 | "version": "2.0", 16 | "overrides": null 17 | } 18 | -------------------------------------------------------------------------------- /Bots/SimpleHostBotDotNet31.bot: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleHostBotDotNet31", 3 | "description": "", 4 | "services": [ 5 | { 6 | "type": "endpoint", 7 | "appId": "", 8 | "appPassword": "", 9 | "endpoint": "http://localhost:35005/api/messages", 10 | "id": "eefb3b80-6250-11eb-9298-2763eb2fc29e", 11 | "name": "http://localhost:35005/api/messages" 12 | } 13 | ], 14 | "padlock": "", 15 | "version": "2.0", 16 | "overrides": null 17 | } 18 | -------------------------------------------------------------------------------- /Bots/SimpleHostBotJS.bot: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleHostBotJS", 3 | "description": "", 4 | "services": [ 5 | { 6 | "type": "endpoint", 7 | "appId": "", 8 | "appPassword": "", 9 | "endpoint": "http://localhost:36000/api/messages", 10 | "id": "eefb3b80-6250-11eb-9298-2763eb2fc29e", 11 | "name": "http://localhost:36000/api/messages" 12 | } 13 | ], 14 | "padlock": "", 15 | "version": "2.0", 16 | "overrides": null 17 | } 18 | -------------------------------------------------------------------------------- /Bots/SimpleHostBotPython.bot: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleHostBotPython", 3 | "description": "", 4 | "services": [ 5 | { 6 | "type": "endpoint", 7 | "appId": "", 8 | "appPassword": "", 9 | "endpoint": "http://localhost:37000/api/messages", 10 | "id": "eefb3b80-6250-11eb-9298-2763eb2fc29e", 11 | "name": "http://localhost:37000/api/messages" 12 | } 13 | ], 14 | "padlock": "", 15 | "version": "2.0", 16 | "overrides": null 17 | } 18 | -------------------------------------------------------------------------------- /Bots/WaterfallHostBotDotNet.bot: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleHostBotDotNet", 3 | "description": "", 4 | "services": [ 5 | { 6 | "type": "endpoint", 7 | "appId": "", 8 | "appPassword": "", 9 | "endpoint": "http://localhost:35020/api/messages", 10 | "id": "eefb3b80-6250-11eb-9298-2763eb2fc29e", 11 | "name": "http://localhost:35020/api/messages" 12 | } 13 | ], 14 | "padlock": "", 15 | "version": "2.0", 16 | "overrides": null 17 | } 18 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | -------------------------------------------------------------------------------- /Docs/README.md: -------------------------------------------------------------------------------- 1 | # Index 2 | 3 | ## Main documents 4 | 5 | - [Pipelines](./pipelines.md) 6 | 7 | ## Guides 8 | 9 | - [Add a Service Connection to an Azure Resource Manager](./addARMServiceConnection.md) 10 | - [Get the Service Principal's Object ID](./getServicePrincipalObjectID.md) 11 | - [Setup App Registrations](./setupAppRegistrations.md) 12 | - [Setup Pipelines](./setupPipelines.md) 13 | - [Setup custom Docker container](./setupDockerContainer.md) 14 | - [Regional Virtual Network integration](./regionalVirtualNetworkIntegration.md) 15 | -------------------------------------------------------------------------------- /Docs/availableBotsList.md: -------------------------------------------------------------------------------- 1 | # Available Bots 2 | These are the bots currently available. This list will be expanded in the future. 3 | 4 | ### Bot Names 5 | - DotNet 6 | - Consumers 7 | - BffnSimpleComposerHostBotDotNet 8 | - BffnSimpleHostBotDotNet 9 | - BffnSimpleHostBotDotNet31 10 | - BffnWaterfallHostBotDotNet 11 | - BffnComposerHostBotDotNet 12 | - Skills 13 | - BffnEchoComposerSkillBotDotNet 14 | - BffnEchoSkillBotDotNet 15 | - BffnEchoSkillBotDotNet31 16 | - BffnEchoSkillBotDotNetV3 17 | - BffnWaterfallSkillBotDotNet 18 | - BffnComposerSkillBotDotNet 19 | 20 | - JS 21 | - Consumers 22 | - BffnSimpleHostBotJS 23 | - BffnWaterfallHostBotJS 24 | - Skills 25 | - BffnEchoSkillBotJS 26 | - BffnEchoSkillBotJSV3 27 | - BffnWaterfallSkillBotJS 28 | 29 | - Python 30 | - Consumers 31 | - BffnSimpleHostBotPython 32 | - BffnWaterfallHostBotPython 33 | - Skills 34 | - BffnEchoSkillBotPython 35 | - BffnWaterfallSkillBotPython 36 | -------------------------------------------------------------------------------- /Docs/getServicePrincipalObjectID.md: -------------------------------------------------------------------------------- 1 | # Hot to get the Service Principal's Object ID 2 | 3 | The following steps will guide you on how to get the Service Principal's Object ID. 4 | 5 | ## Requirements 6 | 7 | - Access to a [Service Principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals). 8 | 9 | ## Steps 10 | 11 | - Go to `Azure subscription -> Access control -> Role assignments` and select the service principal used to configure the service connection. 12 | - Copy the value of the `Object ID`. 13 | 14 | ![getServicePrincipalObjectID](./media/getServicePrincipalObjectID.png) 15 | -------------------------------------------------------------------------------- /Docs/media/Diagrams.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/Diagrams.pptx -------------------------------------------------------------------------------- /Docs/media/addARMServiceConnection1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/addARMServiceConnection1.png -------------------------------------------------------------------------------- /Docs/media/addARMServiceConnection2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/addARMServiceConnection2.png -------------------------------------------------------------------------------- /Docs/media/branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/branching.png -------------------------------------------------------------------------------- /Docs/media/dependenciesParameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/dependenciesParameters.png -------------------------------------------------------------------------------- /Docs/media/dependenciesParametersTest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/dependenciesParametersTest.png -------------------------------------------------------------------------------- /Docs/media/getServicePrincipalObjectID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/getServicePrincipalObjectID.png -------------------------------------------------------------------------------- /Docs/media/setupAppRegistrations1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupAppRegistrations1.png -------------------------------------------------------------------------------- /Docs/media/setupAppRegistrations2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupAppRegistrations2.png -------------------------------------------------------------------------------- /Docs/media/setupAppRegistrations3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupAppRegistrations3.png -------------------------------------------------------------------------------- /Docs/media/setupAppRegistrations4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupAppRegistrations4.png -------------------------------------------------------------------------------- /Docs/media/setupAppRegistrations5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupAppRegistrations5.png -------------------------------------------------------------------------------- /Docs/media/setupPipelines1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupPipelines1.png -------------------------------------------------------------------------------- /Docs/media/setupPipelines2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupPipelines2.png -------------------------------------------------------------------------------- /Docs/media/setupPipelines3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupPipelines3.png -------------------------------------------------------------------------------- /Docs/media/setupPipelines4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupPipelines4.png -------------------------------------------------------------------------------- /Docs/media/setupPipelines5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupPipelines5.png -------------------------------------------------------------------------------- /Docs/media/setupPipelines6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Docs/media/setupPipelines6.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /Libraries/TranscriptConverter/Microsoft.Bot.Builder.Testing.TranscriptConverter.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net6.0 6 | true 7 | btc 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Libraries/TranscriptConverter/Program.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.CommandLine.Builder; 5 | using System.CommandLine.Parsing; 6 | 7 | namespace Microsoft.Bot.Builder.Testing.TranscriptConverter 8 | { 9 | public class Program 10 | { 11 | private static int Main(string[] args) 12 | { 13 | var cmd = new CommandLineBuilder() 14 | .AddCommand(new ConvertTranscriptHandler().Create()) 15 | .UseDefaults() 16 | .Build(); 17 | 18 | return cmd.Invoke(args); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Libraries/TranscriptConverter/TestScript.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using Newtonsoft.Json; 6 | 7 | namespace Microsoft.Bot.Builder.Testing.TranscriptConverter 8 | { 9 | /// 10 | /// A Test Script that can be used for functional testing of bots. 11 | /// 12 | public class TestScript 13 | { 14 | /// 15 | /// Initializes a new instance of the class. 16 | /// 17 | /// The sequence of test scripts to perform to validate the bots behavior. 18 | public TestScript(List items = default) 19 | { 20 | Items = items ?? new List(); 21 | } 22 | 23 | /// 24 | /// Gets the test script items. 25 | /// 26 | /// 27 | /// The sequence of test scripts to perform to validate the bots behavior. 28 | /// 29 | [JsonProperty("items")] 30 | public List Items { get; } = new List(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner.Tests/Microsoft.Bot.Builder.Testing.TestRunner.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner.Tests/TestRunnerTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Moq; 5 | using Xunit; 6 | 7 | namespace Microsoft.Bot.Builder.Testing.TestRunner.Tests 8 | { 9 | public class TestRunnerTests 10 | { 11 | [Fact] 12 | public void CreateTestRunnerTest() 13 | { 14 | var testClientMock = new Mock(); 15 | var testRunner = new TestRunner(testClientMock.Object); 16 | 17 | Assert.NotNull(testRunner); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner/Authentication/Session.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Newtonsoft.Json; 5 | 6 | namespace Microsoft.Bot.Builder.Testing.TestRunner.Authentication 7 | { 8 | /// 9 | /// Session definition. 10 | /// 11 | public class Session 12 | { 13 | /// 14 | /// Gets or sets the session ID. 15 | /// 16 | /// 17 | /// The session ID. 18 | /// 19 | [JsonProperty("sessionId")] 20 | public string SessionId { get; set; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner/Authentication/SessionInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Net; 5 | 6 | namespace Microsoft.Bot.Builder.Testing.TestRunner.Authentication 7 | { 8 | /// 9 | /// Session information definition. 10 | /// 11 | public class SessionInfo 12 | { 13 | /// 14 | /// Gets or sets the session ID. 15 | /// 16 | /// 17 | /// The session ID. 18 | /// 19 | public string SessionId { get; set; } 20 | 21 | /// 22 | /// Gets or sets the session cookie. 23 | /// 24 | /// 25 | /// The session cookie. 26 | /// 27 | public Cookie Cookie { get; set; } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner/Authentication/TokenInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Newtonsoft.Json; 5 | 6 | namespace Microsoft.Bot.Builder.Testing.TestRunner.Authentication 7 | { 8 | /// 9 | /// Token definition. 10 | /// 11 | public class TokenInfo 12 | { 13 | /// 14 | /// Gets or sets the token string. 15 | /// 16 | /// 17 | /// The token string. 18 | /// 19 | [JsonProperty("token")] 20 | public string Token { get; set; } 21 | 22 | /// 23 | /// Gets or sets the conversation ID. 24 | /// 25 | /// 26 | /// The conversation ID. 27 | /// 28 | [JsonProperty("conversationId")] 29 | public string ConversationId { get; set; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner/Microsoft.Bot.Builder.Testing.TestRunner.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Library 5 | netstandard2.0 6 | latest 7 | 8 | 9 | 10 | bin\$(Configuration)\netstandard2.0\TranscriptTestRunner.xml 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Libraries/TranscriptTestRunner/TestScript.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using Newtonsoft.Json; 6 | 7 | namespace Microsoft.Bot.Builder.Testing.TestRunner 8 | { 9 | /// 10 | /// A Test Script that can be used for functional testing of bots. 11 | /// 12 | public class TestScript 13 | { 14 | /// 15 | /// Gets the test script items. 16 | /// 17 | /// 18 | /// The sequence of test scripts to perform to validate the bots behavior. 19 | /// 20 | [JsonProperty("items")] 21 | public List Items { get; } = new List(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /PackageReferences.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Tests/Functional/Common/TestCase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | namespace Microsoft.Bot.Builder.Tests.Functional.Common 5 | { 6 | public class TestCase 7 | { 8 | public string Channel { get; set; } 9 | 10 | public TBot Bot { get; set; } 11 | 12 | public string Script { get; set; } 13 | 14 | public override string ToString() 15 | { 16 | return $"{Script}, {Bot}, {Channel}"; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Tests/Functional/README.md: -------------------------------------------------------------------------------- 1 | # Functional Tests 2 | 3 | ## Summary 4 | 5 | Skill functional testing aims to automate the testing of Host and Skill interactions through several scenarios in all available programming languages. 6 | 7 | Head to [Docs](../../Docs/) directory for more information. 8 | 9 | ## Available Test Cases 10 | ### Skills 11 | The following scenarios are being tested with the different host-skill bots combinations: 12 | - Single Turn (simple echo with MultiTenant apps) 13 | - Waterfall Bots: 14 | - Cards 15 | - File Upload 16 | - Message with Attachments 17 | - Proactive Messages 18 | - Sign in 19 | - Authentication (SingleTenant and MSI app types) 20 | 21 | ## Branching 22 | In this repository, there are branches with pinned versions of the SDK to test patch releases. 23 | From 4.9 to 4.15, each branch contains the yamls and tests adapted to run the current implementation of the pipelines against older versions of the BotBuilder packages. 24 | 25 | 26 | This image describes the bots included in the different branches. 27 | ![branching](/Docs/media/branching.png) 28 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/AnimationCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class AnimationCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Animation.json" 18 | }; 19 | 20 | public AnimationCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/AudioCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class AudioCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Audio.json" 18 | }; 19 | 20 | public AudioCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/BotActionCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class BotActionCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "BotAction.json" 18 | }; 19 | 20 | public BotActionCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/CarouselCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class CarouselCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Carousel.json" 18 | }; 19 | 20 | public CarouselCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/HeroCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class HeroCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Hero.json" 18 | }; 19 | 20 | public HeroCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/ListCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class ListCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "List.json" 18 | }; 19 | 20 | public ListCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/ReceiptCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class ReceiptCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Receipt.json" 18 | }; 19 | 20 | public ReceiptCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/SignInCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class SignInCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "SignIn.json" 18 | }; 19 | 20 | public SignInCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/SubmitActionCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class SubmitActionCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "SubmitAction.json" 18 | }; 19 | 20 | public SubmitActionCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/TaskModuleCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class TaskModuleCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "TaskModule.json" 18 | }; 19 | 20 | public TaskModuleCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/ThumbnailCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class ThumbnailCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Thumbnail.json" 18 | }; 19 | 20 | public ThumbnailCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/CardActions/VideoCardTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Tests.Functional.Common; 7 | using Microsoft.Bot.Builder.Tests.Functional.Skills.Common; 8 | using Xunit; 9 | using Xunit.Abstractions; 10 | 11 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.CardActions 12 | { 13 | public class VideoCardTests : CardBaseTests 14 | { 15 | private static readonly List Scripts = new List 16 | { 17 | "Video.json" 18 | }; 19 | 20 | public VideoCardTests(ITestOutputHelper output) 21 | : base(output) 22 | { 23 | } 24 | 25 | public static IEnumerable TestCases() => TestCases(scripts: Scripts); 26 | 27 | [Theory] 28 | [MemberData(nameof(TestCases))] 29 | public override Task RunTestCases(TestCaseDataObject testData) => base.RunTestCases(testData); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/Functional/Skills/Common/SkillsTestCase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.Bot.Builder.Tests.Functional.Common; 5 | 6 | namespace Microsoft.Bot.Builder.Tests.Functional.Skills.Common 7 | { 8 | public class SkillsTestCase : TestCase 9 | { 10 | public string DeliveryMode { get; set; } 11 | 12 | public SkillBot Skill { get; set; } 13 | 14 | public override string ToString() 15 | { 16 | return $"{Script}, {Bot}, {Skill}, {Channel}, {DeliveryMode}"; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Tests/Functional/Standalone/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Tests/Functional/Standalone/.gitkeep -------------------------------------------------------------------------------- /Tests/Functional/xunit.runner.json: -------------------------------------------------------------------------------- 1 | { 2 | "parallelizeAssembly": true 3 | } -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Cosmos/CosmosDbAttribute.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | 6 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Cosmos 7 | { 8 | [AttributeUsage(AttributeTargets.Class, Inherited = false)] 9 | public class CosmosDbAttribute : Attribute 10 | { 11 | public CosmosDbAttribute(string databaseId = "CosmosDatabase", string containerId = "CosmosContainer") 12 | { 13 | DatabaseId = databaseId; 14 | ContainerId = containerId; 15 | } 16 | 17 | public string DatabaseId { get; private set; } 18 | 19 | public string ContainerId { get; private set; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/AzureBlobStorageTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Xunit; 5 | 6 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 7 | { 8 | [Trait("TestCategory", "Deprecated")] 9 | public class AzureBlobStorageTests : StorageBaseTests, IClassFixture 10 | { 11 | public AzureBlobStorageTests(AzureBlobStorageFixture azureBlobFixture) 12 | { 13 | UseStorages(azureBlobFixture.Storages); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/AzureBlobTranscriptStoreFixture.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Azure; 7 | using Xunit; 8 | 9 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 10 | { 11 | [Blobs(containerId: "AzureBlobTranscriptStoreTests")] 12 | public class AzureBlobTranscriptStoreFixture : BlobsStorageBaseFixture, IAsyncLifetime 13 | { 14 | public IDictionary Storages { get; private set; } 15 | 16 | public new async Task InitializeAsync() 17 | { 18 | await base.InitializeAsync(); 19 | 20 | Storages = new Dictionary 21 | { 22 | { StorageCase.Default, new AzureBlobTranscriptStore(ConnectionString, ContainerId) }, 23 | }; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/AzureBlobTranscriptStoreTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Xunit; 5 | using Xunit.Abstractions; 6 | 7 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 8 | { 9 | [Trait("TestCategory", "Deprecated")] 10 | public class AzureBlobTranscriptStoreTests : BlobsTranscriptStoreBaseTests, IClassFixture 11 | { 12 | public AzureBlobTranscriptStoreTests(ITestOutputHelper outputHandler, AzureBlobTranscriptStoreFixture blobFixture) 13 | : base(outputHandler) 14 | { 15 | UseStorages(blobFixture.Storages); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/BlobsAttribute.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | 6 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 7 | { 8 | [AttributeUsage(AttributeTargets.Class, Inherited = false)] 9 | public class BlobsAttribute : Attribute 10 | { 11 | public BlobsAttribute(string containerId = "BlobsContainer") 12 | { 13 | ContainerId = containerId; 14 | } 15 | 16 | public string ContainerId { get; private set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/BlobsStorageFixture.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Azure.Blobs; 7 | using Newtonsoft.Json; 8 | using Xunit; 9 | 10 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 11 | { 12 | [Blobs(containerId: "BlobsStorageTests")] 13 | public class BlobsStorageFixture : BlobsStorageBaseFixture, IAsyncLifetime 14 | { 15 | public IDictionary Storages { get; private set; } 16 | 17 | public new async Task InitializeAsync() 18 | { 19 | await base.InitializeAsync(); 20 | 21 | Storages = new Dictionary 22 | { 23 | { StorageCase.Default, new BlobsStorage(ConnectionString, ContainerId) }, 24 | { StorageCase.TypeNameHandlingNone, new BlobsStorage(ConnectionString, ContainerId, new JsonSerializer() { TypeNameHandling = TypeNameHandling.None }) } 25 | }; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/BlobsStorageTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Xunit; 5 | 6 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 7 | { 8 | public class BlobsStorageTests : StorageBaseTests, IClassFixture 9 | { 10 | public BlobsStorageTests(BlobsStorageFixture blobFixture) 11 | { 12 | UseStorages(blobFixture.Storages); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/BlobsTranscriptStoreFixture.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading.Tasks; 6 | using Microsoft.Bot.Builder.Azure.Blobs; 7 | using Xunit; 8 | 9 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 10 | { 11 | [Blobs(containerId: "BlobsTranscriptStoreTests")] 12 | public class BlobsTranscriptStoreFixture : BlobsStorageBaseFixture, IAsyncLifetime 13 | { 14 | public IDictionary Storages { get; private set; } 15 | 16 | public new async Task InitializeAsync() 17 | { 18 | await base.InitializeAsync(); 19 | 20 | Storages = new Dictionary 21 | { 22 | { StorageCase.Default, new BlobsTranscriptStore(ConnectionString, ContainerId) }, 23 | }; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/Blobs/BlobsTranscriptStoreTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Xunit; 5 | using Xunit.Abstractions; 6 | 7 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage.Blobs 8 | { 9 | public class BlobsTranscriptStoreTests : BlobsTranscriptStoreBaseTests, IClassFixture 10 | { 11 | public BlobsTranscriptStoreTests(ITestOutputHelper outputHandler, BlobsTranscriptStoreFixture blobFixture) 12 | : base(outputHandler) 13 | { 14 | UseStorages(blobFixture.Storages); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/StorageCase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage 5 | { 6 | public enum StorageCase 7 | { 8 | /// 9 | /// Storage instance with default configuration. 10 | /// 11 | Default, 12 | 13 | /// 14 | /// Storage instance with JsonSerializer.TypeNameHandling equals to None configuration. 15 | /// 16 | TypeNameHandlingNone, 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/Azure/Storage/StorageItem.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Newtonsoft.Json; 5 | 6 | namespace Microsoft.Bot.Builder.Tests.Integration.Azure.Storage 7 | { 8 | public class StorageItem : IStoreItem 9 | { 10 | [JsonProperty(PropertyName = "messageList")] 11 | public string[] MessageList { get; set; } 12 | 13 | [JsonProperty(PropertyName = "city")] 14 | public string City { get; set; } 15 | 16 | public string ETag { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/ConfigurationFixture.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | using Microsoft.Extensions.Configuration; 6 | 7 | namespace Microsoft.Bot.Builder.Tests.Integration 8 | { 9 | public class ConfigurationFixture 10 | { 11 | public ConfigurationFixture() 12 | { 13 | Configuration = new ConfigurationBuilder() 14 | .AddJsonFile("appsettings.json") 15 | .AddJsonFile("appsettings.Development.json", true, true) 16 | .AddEnvironmentVariables() 17 | .Build(); 18 | 19 | Timeout = TimeSpan.FromSeconds(3); 20 | } 21 | 22 | public IConfigurationRoot Configuration { get; private set; } 23 | 24 | public TimeSpan Timeout { get; private set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Tests/Integration/DotNet/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Azure": { 3 | "Cosmos": { 4 | // Endpoint and Authkey for the CosmosDB Emulator running locally. 5 | // See https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#authenticate-requests for details on the well known key being used. 6 | "ServiceEndpoint": "https://localhost:8081", 7 | "AuthKey": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==" 8 | }, 9 | "Storage": { 10 | // Connection string shortcut to connect to the local Storage Emulator. 11 | // See https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string for details on how to configure the connection string. 12 | "ConnectionString": "UseDevelopmentStorage=true" 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Tests/Integration/JavaScript/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Tests/Integration/JavaScript/.gitkeep -------------------------------------------------------------------------------- /Tests/Integration/Python/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/Tests/Integration/Python/.gitkeep -------------------------------------------------------------------------------- /build/templates/template-container-registry-resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "containerRegistryName": { 6 | "type": "string", 7 | "defaultValue": "bffncontainerregistry", 8 | "metadata": { 9 | "description": "Specifies the name of the Container Registry." 10 | } 11 | }, 12 | "skuName": { 13 | "type": "string", 14 | "defaultValue": "Basic", 15 | "allowedValues": ["Basic", "Standard", "Premium"], 16 | "metadata": { 17 | "description": "Specifies whether the container registry is a Basic, Standard or Premium service tier." 18 | } 19 | } 20 | }, 21 | "variables": {}, 22 | "resources": [ 23 | { 24 | "type": "Microsoft.ContainerRegistry/registries", 25 | "apiVersion": "2020-11-01-preview", 26 | "name": "[parameters('containerRegistryName')]", 27 | "location": "westus", 28 | "sku": { 29 | "name": "[parameters('skuName')]", 30 | "tier": "[parameters('skuName')]" 31 | }, 32 | "properties": { 33 | "adminUserEnabled": true 34 | } 35 | } 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /build/yaml/common/tagBotBuilderVersion.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | - name: name 3 | displayName: Tag name 4 | type: string 5 | 6 | - name: version 7 | displayName: Version number 8 | type: string 9 | 10 | steps: 11 | - task: colinsalmcorner.colinsalmcorner-buildtasks.tag-build-task.tagBuildOrRelease@0 12 | displayName: "Tag BotBuilder Version" 13 | inputs: 14 | tags: "${{ parameters.name }} Version = ${{ parameters.version }}" 15 | continueOnError: true 16 | -------------------------------------------------------------------------------- /build/yaml/deployBotResources/common/prepareResources.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | - name: azureSubscription 3 | displayName: Azure Service Connection 4 | type: string 5 | 6 | - name: resourceGroups 7 | displayName: Resource Groups 8 | type: object 9 | 10 | stages: 11 | - ${{ each resourceGroup in parameters.resourceGroups }}: 12 | - stage: "${{ resourceGroup.id }}" 13 | displayName: "${{ resourceGroup.displayName }}" 14 | dependsOn: [] # Makes this run in parallel 15 | jobs: 16 | - job: "Prepare" 17 | displayName: "Prepare steps" 18 | steps: 19 | - checkout: none 20 | - template: ../../common/deleteResourceGroup.yml 21 | parameters: 22 | azureSubscription: "${{ parameters.azureSubscription }}" 23 | name: "${{ resourceGroup.name }}" 24 | 25 | - task: AzureCLI@1 26 | displayName: "Create Resource Group" 27 | inputs: 28 | azureSubscription: "${{ parameters.azureSubscription }}" 29 | scriptLocation: inlineScript 30 | inlineScript: az group create --location westus --name "${{ resourceGroup.name }}" 31 | -------------------------------------------------------------------------------- /build/yaml/functionalTests-CI.yml: -------------------------------------------------------------------------------- 1 | # This YAML runs all the CI pipelines Dot Net, python, JS in parallel 2 | variables: 3 | BuildConfiguration: "Debug" 4 | BuildPlatform: "Any CPU" 5 | 6 | jobs: 7 | - job: "BuildJSBots" 8 | steps: 9 | - template: jsBotsBuildCI.yml 10 | 11 | - job: "BuildPythonBots" 12 | steps: 13 | - template: pythonBotsBuild-CI.yml 14 | 15 | - job: "BuildDotnetBots" 16 | steps: 17 | - template: dotnetBotsBuild-CI.yml 18 | parameters: 19 | buildConfiguration: "$(BUILDCONFIGURATION)" 20 | buildPlatform: "$(BUILDPLATFORM)" 21 | solutionDir: "$(BUILD.SOURCESDIRECTORY)/Bots/DotNet/" 22 | 23 | - job: "BuildSkillsFunctionalTests" 24 | steps: 25 | - template: functionalTestsBuild-CI.yml 26 | parameters: 27 | buildConfiguration: "$(BUILDCONFIGURATION)" 28 | buildPlatform: "$(BUILDPLATFORM)" 29 | 30 | pool: 31 | vmImage: "windows-2022" 32 | -------------------------------------------------------------------------------- /build/yaml/jsBotsBuildCI.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - script: yarn prepareAndInstall 3 | workingDirectory: Bots/JavaScript 4 | displayName: "yarn prepare & install" 5 | 6 | - script: yarn lint 7 | workingDirectory: Bots/JavaScript 8 | displayName: "yarn lint" 9 | -------------------------------------------------------------------------------- /build/yaml/pythonBotsBuild-CI.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - task: UsePythonVersion@0 3 | displayName: "Use Python version" 4 | inputs: 5 | versionSpec: "3.8.x" 6 | 7 | - task: Bash@3 8 | displayName: "Install dependencies" 9 | inputs: 10 | targetType: "inline" 11 | script: | 12 | python -m pip install pip==21.0.1; 13 | find ./Bots -type f -name "requirements.txt" -exec pip install pip==21.0.1 -r "{}" \; 14 | 15 | -------------------------------------------------------------------------------- /specs/media/TestRunnerClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/specs/media/TestRunnerClassDiagram.png -------------------------------------------------------------------------------- /specs/media/TestRunnerClassDiagram2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/specs/media/TestRunnerClassDiagram2.png -------------------------------------------------------------------------------- /specs/media/src/TestRunnerDiagrams.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/BotFramework-FunctionalTests/e6ab44a37eeacf46d19569544cc392e9780b5e61/specs/media/src/TestRunnerDiagrams.vsdx --------------------------------------------------------------------------------