├── .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 | 
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 | 
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