From 660277bbf62707c226a8567bf8fdfe5d26f4da9f Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig <43043272+ryanlengel@users.noreply.github.com> Date: Mon, 7 Jun 2021 11:56:46 -0700 Subject: [PATCH 01/22] Update createSharedResources.yml Rename bffn instances to bfcfn to avoid overlap --- .../yaml/sharedResources/createSharedResources.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/functional/build/yaml/sharedResources/createSharedResources.yml b/tests/functional/build/yaml/sharedResources/createSharedResources.yml index cae6a936aa..320e403c91 100644 --- a/tests/functional/build/yaml/sharedResources/createSharedResources.yml +++ b/tests/functional/build/yaml/sharedResources/createSharedResources.yml @@ -18,13 +18,13 @@ variables: # ResourceSuffix: (optional) Suffix to add to the resources' name to avoid collitions. ## Internal variables - InternalAppInsightsName: "bffnappinsights$($env:RESOURCESUFFIX)" - InternalAppServicePlanDotNetName: "bffnbotsappservicedotnet$($env:RESOURCESUFFIX)" - InternalAppServicePlanJSName: "bffnbotsappservicejs$($env:RESOURCESUFFIX)" - InternalAppServicePlanPythonName: "bffnbotsappservicepython$($env:RESOURCESUFFIX)" - InternalCosmosDBName: "bffnbotstatedb$($env:RESOURCESUFFIX)" - InternalKeyVaultName: "bffnbotkeyvault$($env:RESOURCESUFFIX)" - InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUPNAME'], 'bffnshared')] + InternalAppInsightsName: "bfcfnappinsights$($env:RESOURCESUFFIX)" + InternalAppServicePlanDotNetName: "bfcfnbotsappservicedotnet$($env:RESOURCESUFFIX)" + InternalAppServicePlanJSName: "bfcfnbotsappservicejs$($env:RESOURCESUFFIX)" + InternalAppServicePlanPythonName: "bfcfnbotsappservicepython$($env:RESOURCESUFFIX)" + InternalCosmosDBName: "bfcfnbotstatedb$($env:RESOURCESUFFIX)" + InternalKeyVaultName: "bfcfnbotkeyvault$($env:RESOURCESUFFIX)" + InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUPNAME'], 'bfcfnshared')] stages: - stage: Create_Resource_Group_Windows From 377e0c72849d6435034da2a6e01e5fbde181aafe Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Mon, 7 Jun 2021 12:15:13 -0700 Subject: [PATCH 02/22] Move /tests/functional/build/templates to /build/templates --- .../templates/template-app-insights-resources.json | 0 .../build => build}/templates/template-bot-resources.json | 0 .../build => build}/templates/template-cosmosdb-resources.json | 0 .../build => build}/templates/template-key-vault-resources.json | 0 .../build => build}/templates/template-python-bot-resources.json | 0 .../templates/template-service-plan-linux-resources.json | 0 .../templates/template-service-plan-windows-resources.json | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {tests/functional/build => build}/templates/template-app-insights-resources.json (100%) rename {tests/functional/build => build}/templates/template-bot-resources.json (100%) rename {tests/functional/build => build}/templates/template-cosmosdb-resources.json (100%) rename {tests/functional/build => build}/templates/template-key-vault-resources.json (100%) rename {tests/functional/build => build}/templates/template-python-bot-resources.json (100%) rename {tests/functional/build => build}/templates/template-service-plan-linux-resources.json (100%) rename {tests/functional/build => build}/templates/template-service-plan-windows-resources.json (100%) diff --git a/tests/functional/build/templates/template-app-insights-resources.json b/build/templates/template-app-insights-resources.json similarity index 100% rename from tests/functional/build/templates/template-app-insights-resources.json rename to build/templates/template-app-insights-resources.json diff --git a/tests/functional/build/templates/template-bot-resources.json b/build/templates/template-bot-resources.json similarity index 100% rename from tests/functional/build/templates/template-bot-resources.json rename to build/templates/template-bot-resources.json diff --git a/tests/functional/build/templates/template-cosmosdb-resources.json b/build/templates/template-cosmosdb-resources.json similarity index 100% rename from tests/functional/build/templates/template-cosmosdb-resources.json rename to build/templates/template-cosmosdb-resources.json diff --git a/tests/functional/build/templates/template-key-vault-resources.json b/build/templates/template-key-vault-resources.json similarity index 100% rename from tests/functional/build/templates/template-key-vault-resources.json rename to build/templates/template-key-vault-resources.json diff --git a/tests/functional/build/templates/template-python-bot-resources.json b/build/templates/template-python-bot-resources.json similarity index 100% rename from tests/functional/build/templates/template-python-bot-resources.json rename to build/templates/template-python-bot-resources.json diff --git a/tests/functional/build/templates/template-service-plan-linux-resources.json b/build/templates/template-service-plan-linux-resources.json similarity index 100% rename from tests/functional/build/templates/template-service-plan-linux-resources.json rename to build/templates/template-service-plan-linux-resources.json diff --git a/tests/functional/build/templates/template-service-plan-windows-resources.json b/build/templates/template-service-plan-windows-resources.json similarity index 100% rename from tests/functional/build/templates/template-service-plan-windows-resources.json rename to build/templates/template-service-plan-windows-resources.json From 37d981b275f61733d30b470474022af1a5444ae5 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig <43043272+ryanlengel@users.noreply.github.com> Date: Mon, 7 Jun 2021 12:52:17 -0700 Subject: [PATCH 03/22] Set up CI with Azure Pipelines [skip ci] --- .../yaml/cleanupResources/cleanupResources.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/functional/build/yaml/cleanupResources/cleanupResources.yml b/tests/functional/build/yaml/cleanupResources/cleanupResources.yml index fb0fd3d206..ca5a9a6e05 100644 --- a/tests/functional/build/yaml/cleanupResources/cleanupResources.yml +++ b/tests/functional/build/yaml/cleanupResources/cleanupResources.yml @@ -14,14 +14,14 @@ variables: # SharedResourceGroup: (optional) Name of the Resource Group containing the shared resources. ## Internal variables - InternalAppInsightsName: "bffnappinsights$($env:RESOURCESUFFIX)" - InternalAppServicePlanDotNetName: "bffnbotsappservicedotnet$($env:RESOURCESUFFIX)" - InternalAppServicePlanJSName: "bffnbotsappservicejs$($env:RESOURCESUFFIX)" - InternalAppServicePlanPythonName: "bffnbotsappservicepython$($env:RESOURCESUFFIX)" - InternalCosmosDBName: "bffnbotstatedb$($env:RESOURCESUFFIX)" - InternalKeyVaultName: "bffnbotkeyvault$($env:RESOURCESUFFIX)" - InternalBotResourceGroupName: $[coalesce(variables['DEPLOYRESOURCEGROUP'], 'bffnbots')] - InternalSharedResourceGroupName: $[coalesce(variables['SHAREDRESOURCEGROUP'], 'bffnshared')] + InternalAppInsightsName: "bfcfnappinsights$($env:RESOURCESUFFIX)" + InternalAppServicePlanDotNetName: "bfcfnbotsappservicedotnet$($env:RESOURCESUFFIX)" + InternalAppServicePlanJSName: "bfcfnbotsappservicejs$($env:RESOURCESUFFIX)" + InternalAppServicePlanPythonName: "bfcfnbotsappservicepython$($env:RESOURCESUFFIX)" + InternalCosmosDBName: "bfcfnbotstatedb$($env:RESOURCESUFFIX)" + InternalKeyVaultName: "bfcfnbotkeyvault$($env:RESOURCESUFFIX)" + InternalBotResourceGroupName: $[coalesce(variables['DEPLOYRESOURCEGROUP'], 'bfcfnbots')] + InternalSharedResourceGroupName: $[coalesce(variables['SHAREDRESOURCEGROUP'], 'bfcfnshared')] pool: vmImage: "windows-2019" From 2e3c7b8e917b011b47b6b3b0d9dfb6b40dfa1f6c Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig <43043272+ryanlengel@users.noreply.github.com> Date: Tue, 8 Jun 2021 15:32:36 -0700 Subject: [PATCH 04/22] Remove DotnetComposer, JS, Python bots --- .../deployBotResources/deployBotResources.yml | 166 ------------------ 1 file changed, 166 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 61f31b8c58..ad18e0b512 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -320,172 +320,6 @@ stages: registry: ${{ parameters.dependenciesRegistryDotNetSkills }} version: ${{ parameters.dependenciesVersionDotNetSkills }} -# DotNet Composer - - template: dotnet/deployComposer.yml - parameters: - appInsight: "$(INTERNALAPPINSIGHTSNAME)" - appServicePlan: "$(INTERNALAPPSERVICEPLANDOTNETNAME)" - appServicePlanRG: "$(INTERNALAPPSERVICEPLANWINDOWSRESOURCEGROUP)" - azureSubscription: "$(AZURESUBSCRIPTION)" - botPricingTier: $env:BOTPRICINGTIER - keyVault: "$(INTERNALKEYVAULTNAME)" - resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-DotNet" - resourceSuffix: $(INTERNALRESOURCESUFFIX) - bots: - - name: "bffnsimplehostbotcomposerdotnet" - dependsOn: "Deploy_bffnechoskillbotdotnet" - type: "Host" - displayName: "DotNet Simple Composer Host Bot" - appId: $(BFFNSIMPLEHOSTBOTCOMPOSERDOTNETAPPID) - appSecret: $(BFFNSIMPLEHOSTBOTCOMPOSERDOTNETAPPSECRET) - project: - directory: 'Bots/DotNet/Consumers/Composer/SimpleHostBotComposer' - name: "SimpleHostBotComposer.csproj" - netCoreVersion: "3.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetHosts }} - version: ${{ parameters.dependenciesVersionDotNetHosts }} - - - name: "bffnechoskillbotcomposerdotnet" - dependsOn: "Deploy_bffnechoskillbotdotnet21" - type: "Skill" - displayName: "DotNet Echo Composer Skill Bot" - appId: $(BFFNECHOSKILLBOTCOMPOSERDOTNETAPPID) - appSecret: $(BFFNECHOSKILLBOTCOMPOSERDOTNETAPPSECRET) - project: - directory: 'Bots/DotNet/Skills/Composer/EchoSkillBotComposer' - name: "EchoSkillBotComposer.csproj" - netCoreVersion: "3.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetSkills }} - version: ${{ parameters.dependenciesVersionDotNetSkills }} - -# JS - - template: js/deploy.yml - parameters: - appInsight: "$(INTERNALAPPINSIGHTSNAME)" - appServicePlan: "$(INTERNALAPPSERVICEPLANJSNAME)" - appServicePlanRG: "$(INTERNALAPPSERVICEPLANWINDOWSRESOURCEGROUP)" - azureSubscription: "$(AZURESUBSCRIPTION)" - botPricingTier: $env:BOTPRICINGTIER - connectionName: $env:CONNECTIONNAME - dependsOn: "Prepare_JSGroup" - keyVault: "$(INTERNALKEYVAULTNAME)" - resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-JS" - resourceSuffix: $(INTERNALRESOURCESUFFIX) - bots: - - name: "bffnsimplehostbotjs" - type: "Host" - displayName: "JS Simple Host Bot" - appId: $(BFFNSIMPLEHOSTBOTJSAPPID) - appSecret: $(BFFNSIMPLEHOSTBOTJSAPPSECRET) - project: - directory: 'Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' - dependency: - registry: ${{ parameters.dependenciesRegistryJSHosts }} - version: ${{ parameters.dependenciesVersionJSHosts }} - - - name: "bffnechoskillbotjs" - type: "Skill" - displayName: "JS Echo Skill Bot" - appId: $(BFFNECHOSKILLBOTJSAPPID) - appSecret: $(BFFNECHOSKILLBOTJSAPPSECRET) - project: - directory: 'Bots/JavaScript/Skills/CodeFirst/EchoSkillBot' - dependency: - registry: ${{ parameters.dependenciesRegistryJSSkills }} - version: ${{ parameters.dependenciesVersionJSSkills }} - - - name: "bffnechoskillbotjsv3" - type: "SkillV3" - displayName: "JS Echo Skill Bot v3" - appId: $(BFFNECHOSKILLBOTJSV3APPID) - appSecret: $(BFFNECHOSKILLBOTJSV3APPSECRET) - project: - directory: 'Bots/JavaScript/Skills/CodeFirst/EchoSkillBot-v3' - dependency: - registry: ${{ parameters.dependenciesRegistryJSSkillsV3 }} - version: ${{ parameters.dependenciesVersionJSSkillsV3 }} - - - name: "bffnwaterfallhostbotjs" - type: "Host" - displayName: "JS Waterfall Host Bot" - appId: $(BFFNWATERFALLHOSTBOTJSAPPID) - appSecret: $(BFFNWATERFALLHOSTBOTJSAPPSECRET) - project: - directory: 'Bots/JavaScript/Consumers/CodeFirst/WaterfallHostBot' - dependency: - registry: ${{ parameters.dependenciesRegistryJSHosts }} - version: ${{ parameters.dependenciesVersionJSHosts }} - - - name: "bffnwaterfallskillbotjs" - type: "Skill" - displayName: "JS Waterfall Skill Bot" - appId: $(BFFNWATERFALLSKILLBOTJSAPPID) - appSecret: $(BFFNWATERFALLSKILLBOTJSAPPSECRET) - project: - directory: 'Bots/JavaScript/Skills/CodeFirst/WaterfallSkillBot' - dependency: - registry: ${{ parameters.dependenciesRegistryJSSkills }} - version: ${{ parameters.dependenciesVersionJSSkills }} - -# Python - - template: python/deploy.yml - parameters: - appServicePlan: "$(INTERNALAPPSERVICEPLANPYTHONNAME)" - appServicePlanRG: "$(INTERNALAPPSERVICEPLANLINUXRESOURCEGROUP)" - azureSubscription: "$(AZURESUBSCRIPTION)" - botPricingTier: $env:BOTPRICINGTIER - connectionName: $env:CONNECTIONNAME - dependsOn: "Prepare_PythonGroup" - keyVault: "$(INTERNALKEYVAULTNAME)" - resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-Python" - resourceSuffix: "$(INTERNALRESOURCESUFFIX)" - bots: - - name: "bffnsimplehostbotpython" - type: "Host" - displayName: "Python Simple Host Bot" - appId: $(BFFNSIMPLEHOSTBOTPYTHONAPPID) - appSecret: $(BFFNSIMPLEHOSTBOTPYTHONAPPSECRET) - project: - directory: 'Bots/Python/Consumers/CodeFirst/SimpleHostBot' - dependency: - registry: ${{ parameters.dependenciesRegistryPythonHosts }} - version: ${{ parameters.dependenciesVersionPythonHosts }} - - - name: "bffnechoskillbotpython" - type: "Skill" - displayName: "Python Echo Skill Bot" - appId: $(BFFNECHOSKILLBOTPYTHONAPPID) - appSecret: $(BFFNECHOSKILLBOTPYTHONAPPSECRET) - project: - directory: 'Bots/Python/Skills/CodeFirst/EchoSkillBot' - dependency: - registry: ${{ parameters.dependenciesRegistryPythonSkills }} - version: ${{ parameters.dependenciesVersionPythonSkills }} - - - name: "bffnwaterfallhostbotpython" - type: "Host" - displayName: "Python Waterfall Host Bot" - appId: $(BFFNWATERFALLHOSTBOTPYTHONAPPID) - appSecret: $(BFFNWATERFALLHOSTBOTPYTHONAPPSECRET) - project: - directory: 'Bots/Python/Consumers/CodeFirst/WaterfallHostBot' - dependency: - registry: ${{ parameters.dependenciesRegistryPythonHosts }} - version: ${{ parameters.dependenciesVersionPythonHosts }} - - - name: "bffnwaterfallskillbotpython" - type: "Skill" - displayName: "Python Waterfall Skill Bot" - appId: $(BFFNWATERFALLSKILLBOTPYTHONAPPID) - appSecret: $(BFFNWATERFALLSKILLBOTPYTHONAPPSECRET) - project: - directory: 'Bots/Python/Skills/CodeFirst/WaterfallSkillBot' - dependency: - registry: ${{ parameters.dependenciesRegistryPythonSkills }} - version: ${{ parameters.dependenciesVersionPythonSkills }} - # Publish variables - stage: "Publish_Variables" displayName: "Publish Variables" From 857584cb5bbf9a031267473546292fe59e1fe7fd Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig <43043272+ryanlengel@users.noreply.github.com> Date: Tue, 8 Jun 2021 15:35:17 -0700 Subject: [PATCH 05/22] Remove all DotNet bots except for Simple Host Bot --- .../deployBotResources/deployBotResources.yml | 83 ------------------- 1 file changed, 83 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index ad18e0b512..461aa12da4 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -237,89 +237,6 @@ stages: registry: ${{ parameters.dependenciesRegistryDotNetHosts }} version: ${{ parameters.dependenciesVersionDotNetHosts }} - - name: "bffnsimplehostbotdotnet21" - dependsOn: "Prepare_DotNetGroup" - type: "Host" - displayName: "DotNet Simple Host Bot 2.1" - appId: $(BFFNSIMPLEHOSTBOTDOTNET21APPID) - appSecret: $(BFFNSIMPLEHOSTBOTDOTNET21APPSECRET) - project: - directory: 'Bots/DotNet/Consumers/CodeFirst/SimpleHostBot-2.1' - name: "SimpleHostBot-2.1.csproj" - netCoreVersion: "2.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetHosts }} - version: ${{ parameters.dependenciesVersionDotNetHosts }} - - - name: "bffnechoskillbotdotnet" - dependsOn: "Prepare_DotNetGroup" - type: "Skill" - displayName: "DotNet Echo Skill Bot" - appId: $(BFFNECHOSKILLBOTDOTNETAPPID) - appSecret: $(BFFNECHOSKILLBOTDOTNETAPPSECRET) - project: - directory: 'Bots/DotNet/Skills/CodeFirst/EchoSkillBot' - name: "EchoSkillBot.csproj" - netCoreVersion: "3.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetSkills }} - version: ${{ parameters.dependenciesVersionDotNetSkills }} - - - name: "bffnechoskillbotdotnet21" - dependsOn: "Prepare_DotNetGroup" - type: "Skill" - displayName: "DotNet Echo Skill Bot 2.1" - appId: $(BFFNECHOSKILLBOTDOTNET21APPID) - appSecret: $(BFFNECHOSKILLBOTDOTNET21APPSECRET) - project: - directory: 'Bots/DotNet/Skills/CodeFirst/EchoSkillBot-2.1' - name: "EchoSkillBot-2.1.csproj" - netCoreVersion: "2.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetSkills }} - version: ${{ parameters.dependenciesVersionDotNetSkills }} - - - name: "bffnechoskillbotdotnetv3" - dependsOn: "Prepare_DotNetGroup" - type: "SkillV3" - displayName: "DotNet Echo Skill Bot v3" - appId: $(BFFNECHOSKILLBOTDOTNETV3APPID) - appSecret: $(BFFNECHOSKILLBOTDOTNETV3APPSECRET) - project: - directory: 'Bots/DotNet/Skills/CodeFirst/EchoSkillBot-v3' - name: "EchoSkillBot-v3.csproj" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetSkillsV3 }} - version: ${{ parameters.dependenciesVersionDotNetSkillsV3 }} - - - name: "bffnwaterfallhostbotdotnet" - dependsOn: "Deploy_bffnsimplehostbotdotnet" - type: "Host" - displayName: "DotNet Waterfall Host Bot" - appId: $(BFFNWATERFALLHOSTBOTDOTNETAPPID) - appSecret: $(BFFNWATERFALLHOSTBOTDOTNETAPPSECRET) - project: - directory: 'Bots/DotNet/Consumers/CodeFirst/WaterfallHostBot' - name: "WaterfallHostBot.csproj" - netCoreVersion: "3.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetHosts }} - version: ${{ parameters.dependenciesVersionDotNetHosts }} - - - name: "bffnwaterfallskillbotdotnet" - dependsOn: "Deploy_bffnsimplehostbotdotnet21" - type: "Skill" - displayName: "DotNet Waterfall Skill Bot" - appId: $(BFFNWATERFALLSKILLBOTDOTNETAPPID) - appSecret: $(BFFNWATERFALLSKILLBOTDOTNETAPPSECRET) - project: - directory: 'Bots/DotNet/Skills/CodeFirst/WaterfallSkillBot' - name: "WaterfallSkillBot.csproj" - netCoreVersion: "3.1.x" - dependency: - registry: ${{ parameters.dependenciesRegistryDotNetSkills }} - version: ${{ parameters.dependenciesVersionDotNetSkills }} - # Publish variables - stage: "Publish_Variables" displayName: "Publish Variables" From c31b9b53a25a23279e8944b97b5036b1622fb23f Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Tue, 8 Jun 2021 16:38:10 -0700 Subject: [PATCH 06/22] Remove additional other language references and rename variables to bfcfn --- .../deployBotResources/deployBotResources.yml | 163 +----------------- 1 file changed, 9 insertions(+), 154 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 461aa12da4..27e97baeb6 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -24,100 +24,6 @@ parameters: - MyGet - NuGet - - name: dependenciesVersionDotNetSkills - displayName: DotNet Skills Version - type: string - default: $env:DEPENDENCIESVERSIONDOTNETSKILLS - - - name: dependenciesRegistryDotNetSkills - displayName: DotNet Skills Registry - type: string - default: Artifacts - values: - - Artifacts - - MyGet - - NuGet - - - name: dependenciesVersionDotNetSkillsV3 - displayName: DotNet Skills V3 Version - type: string - default: $env:DEPENDENCIESVERSIONDOTNETSKILLSV3 - - - name: dependenciesRegistryDotNetSkillsV3 - displayName: DotNet Skills V3 Registry - type: string - default: MyGet - values: - - MyGet - - NuGet - - - name: dependenciesVersionJSHosts - displayName: JS Hosts Version - type: string - default: $env:DEPENDENCIESVERSIONJSHOSTS - - - name: dependenciesRegistryJSHosts - displayName: JS Hosts Registry - type: string - default: MyGet - values: - - MyGet - - Npm - - - name: dependenciesVersionJSSkills - displayName: JS Skills Version - type: string - default: $env:DEPENDENCIESVERSIONJSSKILLS - - - name: dependenciesRegistryJSSkills - displayName: JS Skills Registry - type: string - default: MyGet - values: - - MyGet - - Npm - - - name: dependenciesVersionJSSkillsV3 - displayName: JS Skills V3 Version - type: string - default: $env:DEPENDENCIESVERSIONJSSKILLSV3 - - - name: dependenciesRegistryJSSkillsV3 - displayName: JS Skills V3 Registry - type: string - default: MyGet - values: - - MyGet - - Npm - - - name: dependenciesVersionPythonHosts - displayName: Python Hosts Version - type: string - default: $env:DEPENDENCIESVERSIONPYTHONHOSTS - - - name: dependenciesRegistryPythonHosts - displayName: Python Hosts Registry - type: string - default: Artifacts - values: - - Artifacts - - Pypi - - Test.Pypi - - - name: dependenciesVersionPythonSkills - displayName: Python Skills Version - type: string - default: $env:DEPENDENCIESVERSIONPYTHONSKILLS - - - name: dependenciesRegistryPythonSkills - displayName: Python Skills Registry - type: string - default: Artifacts - values: - - Artifacts - - Pypi - - Test.Pypi - variables: BuildConfiguration: "Debug" BuildPlatform: "AnyCPU" @@ -133,63 +39,20 @@ variables: # ResourceSuffix: (optional) Suffix to add to the resources' name to avoid collitions. ## Bots Configuration (Define these variables in Azure) - # BffnEchoSkillBotComposerDotNetAppId: (optional) App Id for BffnEchoSkillBotComposerDotNet bot. - # BffnEchoSkillBotComposerDotNetAppSecret: (optional) App Secret for BffnEchoSkillBotComposerDotNet bot. - # BffnEchoSkillBotDotNet21AppId: (optional) App Id for BffnEchoSkillBotDotNet21 bot. - # BffnEchoSkillBotDotNet21AppSecret: (optional) App Secret for BffnEchoSkillBotDotNet21 bot. - # BffnEchoSkillBotDotNetAppId: (optional) App Id for BffnEchoSkillBotDotNet bot. - # BffnEchoSkillBotDotNetAppSecret: (optional) App Secret for BffnEchoSkillBotDotNet bot. - # BffnEchoSkillBotDotNetV3AppId: (optional) App Id for BffnEchoSkillBotDotNetV3 bot. - # BffnEchoSkillBotDotNetV3AppSecret: (optional) App Secret for BffnEchoSkillBotDotNetV3 bot. - # BffnEchoSkillBotJSAppId: (optional) App Id for BffnEchoSkillBotJS bot. - # BffnEchoSkillBotJSAppSecret: (optional) App Secret for BffnEchoSkillBotJS bot. - # BffnEchoSkillBotJSV3AppId: (optional) App Id for BffnEchoSkillBotJSV3 bot. - # BffnEchoSkillBotJSV3AppSecret: (optional) App Secret for BffnEchoSkillBotJSV3 bot. - # BffnEchoSkillBotPythonAppId: (optional) App Id for BffnEchoSkillBotPython bot. - # BffnEchoSkillBotPythonAppSecret: (optional) App Secret for BffnEchoSkillBotPython bot. - # BffnSimpleHostBotComposerDotNetAppId: (optional) App Id for BffnSimpleHostBotComposerDotNet bot. - # BffnSimpleHostBotComposerDotNetAppSecret: (optional) App Secret for BffnSimpleHostBotComposerDotNet bot. - # BffnSimpleHostBotDotNet21AppId: (optional) App Id for BffnSimpleHostBotDotNet21 bot. - # BffnSimpleHostBotDotNet21AppSecret: (optional) App Secret for BffnSimpleHostBotDotNet21 bot. - # BffnSimpleHostBotDotNetAppId: (optional) App Id for BffnSimpleHostBotDotNet bot. - # BffnSimpleHostBotDotNetAppSecret: (optional) App Secret for BffnSimpleHostBotDotNet bot. - # BffnSimpleHostBotJSAppId: (optional) App Id for BffnSimpleHostBotJS bot. - # BffnSimpleHostBotJSAppSecret: (optional) App Secret for BffnSimpleHostBotJS bot. - # BffnSimpleHostBotPythonAppId: (optional) App Id for BffnSimpleHostBotPython bot. - # BffnSimpleHostBotPythonAppSecret: (optional) App Secret for BffnSimpleHostBotPython bot. - # BffnWaterfallHostBotDotNetAppId: (optional) App Id for BffnWaterfallHostBotDotNet bot. - # BffnWaterfallHostBotDotNetAppSecret: (optional) App Secret for BffnWaterfallHostBotDotNet bot. - # BffnWaterfallSkillBotDotNetAppId: (optional) App Id for BffnWaterfallSkillBotDotNet bot. - # BffnWaterfallSkillBotDotNetAppSecret: (optional) App Secret for BffnWaterfallSkillBotDotNet bot. - # BffnWaterfallHostBotJSAppId: (optional) App Id for BffnWaterfallHostBotJS bot. - # BffnWaterfallHostBotJSAppSecret: (optional) App Secret for BffnWaterfallHostBotJS bot. - # BffnWaterfallSkillBotJSAppId: (optional) App Id for BffnWaterfallSkillBotJS bot. - # BffnWaterfallSkillBotJSAppSecret: (optional) App Secret for BffnWaterfallSkillBotJS bot. - # BffnWaterfallHostBotPythonAppId: (optional) App Id for BffnWaterfallHostBotPython bot. - # BffnWaterfallHostBotPythonAppSecret: (optional) App Secret for BffnWaterfallHostBotPython bot. - # BffnWaterfallSkillBotPythonAppId: (optional) App Id for BffnWaterfallSkillBotPython bot. - # BffnWaterfallSkillBotPythonAppSecret: (optional) App Secret for BffnWaterfallSkillBotPython bot. + # BfcfnSimpleHostBotDotNetAppId: (optional) App Id for BfcfnSimpleHostBotDotNet bot. + # BfcfnSimpleHostBotDotNetAppSecret: (optional) App Secret for BfcfnSimpleHostBotDotNet bot. # ConnectionName: (optional) Name for the OAuth connection to use in the skill bots. ## DependenciesVersion (Define these variables in Azure) Possible values are: Latest (default), Stable, or specific version numbers. # DependenciesVersionDotNetHosts: (optional) Bot Builder dependency version to use for DotNet host bots. - # DependenciesVersionDotNetSkills: (optional) Bot Builder dependency version to use for DotNet skill bots. - # DependenciesVersionDotNetSkillsV3: (optional) Bot Builder dependency version to use for DotNet skill V3 bots. - # DependenciesVersionJSHosts: (optional) Bot Builder dependency version to use for JS host bots. - # DependenciesVersionJSSkills: (optional) Bot Builder dependency version to use for JS skill bots. - # DependenciesVersionJSSkillsV3: (optional) Bot Builder dependency version to use for JS skill V3 bots. - # DependenciesVersionPythonHosts: (optional) Bot Builder dependency version to use for Python host bots. - # DependenciesVersionPythonSkills: (optional) Bot Builder dependency version to use for Python skill bots. ## Internal variables - InternalAppInsightsName: 'bffnappinsights$(INTERNALRESOURCESUFFIX)' - InternalAppServicePlanWindowsResourceGroup: $[coalesce(variables['APPSERVICEPLANGROUP'], 'bffnshared')] - InternalAppServicePlanLinuxResourceGroup: $[coalesce(variables['APPSERVICEPLANGROUPLINUX'], 'bffnshared-linux')] - InternalAppServicePlanDotNetName: $[coalesce(variables['APPSERVICEPLANDOTNETNAME'], 'bffnbotsappservicedotnet$(INTERNALRESOURCESUFFIX)')] - InternalAppServicePlanJSName: $[coalesce(variables['APPSERVICEPLANJSNAME'], 'bffnbotsappservicejs$(INTERNALRESOURCESUFFIX)')] - InternalAppServicePlanPythonName: $[coalesce(variables['APPSERVICEPLANPYTHONNAME'], 'bffnbotsappservicepython$(INTERNALRESOURCESUFFIX)')] - InternalKeyVaultName: 'bffnbotkeyvault$(INTERNALRESOURCESUFFIX)' - InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUP'], 'bffnbots')] + InternalAppInsightsName: 'bfcfnappinsights$(INTERNALRESOURCESUFFIX)' + InternalAppServicePlanWindowsResourceGroup: $[coalesce(variables['APPSERVICEPLANGROUP'], 'bfcfnshared')] + InternalAppServicePlanLinuxResourceGroup: $[coalesce(variables['APPSERVICEPLANGROUPLINUX'], 'bfcfnshared-linux')] + InternalAppServicePlanDotNetName: $[coalesce(variables['APPSERVICEPLANDOTNETNAME'], 'bfcfnbotsappservicedotnet$(INTERNALRESOURCESUFFIX)')] + InternalKeyVaultName: 'bfcfnbotkeyvault$(INTERNALRESOURCESUFFIX)' + InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUP'], 'bfcfnbots')] InternalResourceSuffix: $[coalesce(variables['RESOURCESUFFIX'], '')] stages: @@ -202,14 +65,6 @@ stages: name: "$(INTERNALRESOURCEGROUPNAME)-DotNet" displayName: "Prepare DotNet's Resource Group" - - id: "Prepare_JSGroup" - name: "$(INTERNALRESOURCEGROUPNAME)-JS" - displayName: "Prepare JS's Resource Group" - - - id: "Prepare_PythonGroup" - name: "$(INTERNALRESOURCEGROUPNAME)-Python" - displayName: "Prepare Python's Resource Group" - # DotNet - template: dotnet/deploy.yml parameters: @@ -223,7 +78,7 @@ stages: resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-DotNet" resourceSuffix: $(INTERNALRESOURCESUFFIX) bots: - - name: "bffnsimplehostbotdotnet" + - name: "bfcfnsimplehostbotdotnet" dependsOn: "Prepare_DotNetGroup" type: "Host" displayName: "DotNet Simple Host Bot" From b873d719decf792b9a0f0056fc8c36e12880bbaa Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Tue, 8 Jun 2021 19:11:20 -0700 Subject: [PATCH 07/22] Replace bffn with bfcfn --- .../build/yaml/deployBotResources/deployBotResources.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 27e97baeb6..99410c6354 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -82,8 +82,8 @@ stages: dependsOn: "Prepare_DotNetGroup" type: "Host" displayName: "DotNet Simple Host Bot" - appId: $(BFFNSIMPLEHOSTBOTDOTNETAPPID) - appSecret: $(BFFNSIMPLEHOSTBOTDOTNETAPPSECRET) + appId: $(BFCFNSIMPLEHOSTBOTDOTNETAPPID) + appSecret: $(BFCFNSIMPLEHOSTBOTDOTNETAPPSECRET) project: directory: 'Bots/DotNet/Consumers/CodeFirst/SimpleHostBot' name: "SimpleHostBot.csproj" From bfbe09ea505b1386fcecfd64121be47d3d397612 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Tue, 8 Jun 2021 19:47:17 -0700 Subject: [PATCH 08/22] Update directory of SimpleHostBot --- .../build/yaml/deployBotResources/deployBotResources.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 99410c6354..68cc837fbb 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -85,7 +85,7 @@ stages: appId: $(BFCFNSIMPLEHOSTBOTDOTNETAPPID) appSecret: $(BFCFNSIMPLEHOSTBOTDOTNETAPPSECRET) project: - directory: 'Bots/DotNet/Consumers/CodeFirst/SimpleHostBot' + directory: 'Tests/Functional/Bots/DotNet/Consumers/CodeFirst/SimpleHostBot' name: "SimpleHostBot.csproj" netCoreVersion: "3.1.x" dependency: From e04bfb134e7bba3580831b47dafdaee6aa1c3193 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Wed, 9 Jun 2021 13:35:42 -0700 Subject: [PATCH 09/22] Rename bot vars to empty bot --- .../yaml/testScenarios/runTestScenarios.yml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/functional/build/yaml/testScenarios/runTestScenarios.yml b/tests/functional/build/yaml/testScenarios/runTestScenarios.yml index ebb6a14b2d..6fac3d47ca 100644 --- a/tests/functional/build/yaml/testScenarios/runTestScenarios.yml +++ b/tests/functional/build/yaml/testScenarios/runTestScenarios.yml @@ -16,21 +16,21 @@ variables: # ResourceSuffix: (optional) Suffix to add to the resources' name to avoid collitions. ## Bots Configuration (Define these variables in Azure) - # BffnEchoSkillBotComposerDotNetAppId: (optional) App Id for BffnEchoSkillBotComposerDotNet bot. - # BffnEchoSkillBotDotNet21AppId: (optional) App Id for BffnEchoSkillBotDotNet21 bot. - # BffnEchoSkillBotDotNetAppId: (optional) App Id for BffnEchoSkillBotDotNet bot. - # BffnEchoSkillBotDotNetV3AppId: (optional) App Id for BffnEchoSkillBotDotNetV3 bot. - # BffnEchoSkillBotJSAppId: (optional) App Id for BffnEchoSkillBotJS bot. - # BffnEchoSkillBotJSV3AppId: (optional) App Id for BffnEchoSkillBotJSV3 bot. - # BffnEchoSkillBotPythonAppId: (optional) App Id for BffnEchoSkillBotPython bot. - # BffnWaterfallSkillBotDotNetAppId: (optional) App Id for BffnWaterfallSkillBotDotNet bot. - # BffnWaterfallSkillBotJSAppId: (optional) App Id for BffnWaterfallSkillBotJS bot. - # BffnWaterfallSkillBotPythonAppId: (optional) App Id for BffnWaterfallSkillBotPython bot. + # BfcfnEchoSkillBotComposerDotNetAppId: (optional) App Id for BfcfnEchoSkillBotComposerDotNet bot. + # BfcfnEchoSkillBotDotNet21AppId: (optional) App Id for BfcfnEchoSkillBotDotNet21 bot. + # BfcfnEchoSkillBotDotNetAppId: (optional) App Id for BfcfnEchoSkillBotDotNet bot. + # BfcfnEchoSkillBotDotNetV3AppId: (optional) App Id for BfcfnEchoSkillBotDotNetV3 bot. + # BfcfnEchoSkillBotJSAppId: (optional) App Id for BfcfnEchoSkillBotJS bot. + # BfcfnEchoSkillBotJSV3AppId: (optional) App Id for BfcfnEchoSkillBotJSV3 bot. + # BfcfnEchoSkillBotPythonAppId: (optional) App Id for BfcfnEchoSkillBotPython bot. + # BfcfnWaterfallSkillBotDotNetAppId: (optional) App Id for BfcfnWaterfallSkillBotDotNet bot. + # BfcfnWaterfallSkillBotJSAppId: (optional) App Id for BfcfnWaterfallSkillBotJS bot. + # BfcfnWaterfallSkillBotPythonAppId: (optional) App Id for BfcfnWaterfallSkillBotPython bot. # DeployBotResourcesGuid: (optional) Deploy Bot Resources pipeline GUID. ## Internal variables - InternalKeyVaultName: "bffnbotkeyvault$(INTERNALRESOURCESUFFIX)" - InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUP'], 'bffnbots')] + InternalKeyVaultName: "bfcfnbotkeyvault$(INTERNALRESOURCESUFFIX)" + InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUP'], 'bfcfnbots')] InternalResourceSuffix: $[coalesce(variables['RESOURCESUFFIX'], '')] pool: From cb0786a7fd67593c935522de997c11902ff1a15b Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Wed, 9 Jun 2021 13:36:59 -0700 Subject: [PATCH 10/22] rename additional refs --- .../yaml/deployBotResources/deployBotResources.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 68cc837fbb..5a99239fac 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -39,8 +39,8 @@ variables: # ResourceSuffix: (optional) Suffix to add to the resources' name to avoid collitions. ## Bots Configuration (Define these variables in Azure) - # BfcfnSimpleHostBotDotNetAppId: (optional) App Id for BfcfnSimpleHostBotDotNet bot. - # BfcfnSimpleHostBotDotNetAppSecret: (optional) App Secret for BfcfnSimpleHostBotDotNet bot. + # BfcfnEmptyBotDotNetWebAppAppId: (optional) App Id for BfcfnEmptyBotDotNetWebApp bot. + # BfcfnEmptyBotDotNetWebAppAppSecret: (optional) App Secret for BfcfnEmptyBotDotNetWebAppApp bot. # ConnectionName: (optional) Name for the OAuth connection to use in the skill bots. ## DependenciesVersion (Define these variables in Azure) Possible values are: Latest (default), Stable, or specific version numbers. @@ -78,12 +78,12 @@ stages: resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-DotNet" resourceSuffix: $(INTERNALRESOURCESUFFIX) bots: - - name: "bfcfnsimplehostbotdotnet" + - name: "bfcfnemptybotdotnetwebapp" dependsOn: "Prepare_DotNetGroup" type: "Host" - displayName: "DotNet Simple Host Bot" - appId: $(BFCFNSIMPLEHOSTBOTDOTNETAPPID) - appSecret: $(BFCFNSIMPLEHOSTBOTDOTNETAPPSECRET) + displayName: "DotNet Web App Empty Bot" + appId: $(BFCFNEMPTYBOTDOTNETWEBAPPAPPID) + appSecret: $(BFCFNEMPTYBOTDOTNETWEBAPPAPPSECRET) project: directory: 'Tests/Functional/Bots/DotNet/Consumers/CodeFirst/SimpleHostBot' name: "SimpleHostBot.csproj" From 6f12d2515c0381c21476fc7ca05397368e5d0ab7 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Wed, 9 Jun 2021 17:18:21 -0700 Subject: [PATCH 11/22] remove duplicate app in variables --- .../build/yaml/deployBotResources/deployBotResources.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 5a99239fac..64d5677cf2 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -40,7 +40,7 @@ variables: ## Bots Configuration (Define these variables in Azure) # BfcfnEmptyBotDotNetWebAppAppId: (optional) App Id for BfcfnEmptyBotDotNetWebApp bot. - # BfcfnEmptyBotDotNetWebAppAppSecret: (optional) App Secret for BfcfnEmptyBotDotNetWebAppApp bot. + # BfcfnEmptyBotDotNetWebAppAppSecret: (optional) App Secret for BfcfnEmptyBotDotNetWebApp bot. # ConnectionName: (optional) Name for the OAuth connection to use in the skill bots. ## DependenciesVersion (Define these variables in Azure) Possible values are: Latest (default), Stable, or specific version numbers. @@ -82,8 +82,8 @@ stages: dependsOn: "Prepare_DotNetGroup" type: "Host" displayName: "DotNet Web App Empty Bot" - appId: $(BFCFNEMPTYBOTDOTNETWEBAPPAPPID) - appSecret: $(BFCFNEMPTYBOTDOTNETWEBAPPAPPSECRET) + appId: $(BFCFNEMPTYBOTDOTNETWEBAPPID) + appSecret: $(BFCFNEMPTYBOTDOTNETWEBAPPSECRET) project: directory: 'Tests/Functional/Bots/DotNet/Consumers/CodeFirst/SimpleHostBot' name: "SimpleHostBot.csproj" From d9ec217ec4a4a545583e6eb26695a89125c3ffc4 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Wed, 9 Jun 2021 20:08:33 -0700 Subject: [PATCH 12/22] add functions to dotnet --- .../deployBotResources/deployBotResources.yml | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 64d5677cf2..9b79d5ca3f 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -39,8 +39,10 @@ variables: # ResourceSuffix: (optional) Suffix to add to the resources' name to avoid collitions. ## Bots Configuration (Define these variables in Azure) - # BfcfnEmptyBotDotNetWebAppAppId: (optional) App Id for BfcfnEmptyBotDotNetWebApp bot. - # BfcfnEmptyBotDotNetWebAppAppSecret: (optional) App Secret for BfcfnEmptyBotDotNetWebApp bot. + # BfcfnEmptyBotDotNetWebAppId: (optional) App Id for BfcfnEmptyBotDotNetWebApp bot. + # BfcfnEmptyBotDotNetWebAppSecret: (optional) App Secret for BfcfnEmptyBotDotNetWebApp bot. + # BfcfnEmptyBotDotNetFunctionsId: (optional) App Id for BfcfnEmptyBotDotNetFunctions bot. + # BfcfnEmptyBotDotNetFunctionsSecret: (optional) App Secret for BfcfnEmptyBotDotNetFunctions bot. # ConnectionName: (optional) Name for the OAuth connection to use in the skill bots. ## DependenciesVersion (Define these variables in Azure) Possible values are: Latest (default), Stable, or specific version numbers. @@ -92,6 +94,32 @@ stages: registry: ${{ parameters.dependenciesRegistryDotNetHosts }} version: ${{ parameters.dependenciesVersionDotNetHosts }} + - template: dotnet/deploy.yml + parameters: + appInsight: "$(INTERNALAPPINSIGHTSNAME)" + appServicePlan: "$(INTERNALAPPSERVICEPLANDOTNETNAME)" + appServicePlanRG: "$(INTERNALAPPSERVICEPLANWINDOWSRESOURCEGROUP)" + azureSubscription: "$(AZURESUBSCRIPTION)" + botPricingTier: $env:BOTPRICINGTIER + connectionName: $env:CONNECTIONNAME + keyVault: "$(INTERNALKEYVAULTNAME)" + resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-DotNet" + resourceSuffix: $(INTERNALRESOURCESUFFIX) + bots: + - name: "bfcfnemptybotdotnetfunctions" + dependsOn: "Prepare_DotNetGroup" + type: "Host" + displayName: "DotNet Functions Empty Bot" + appId: $(BFCFNEMPTYBOTDOTNETFUNCTIONSID) + appSecret: $(BFCFNEMPTYBOTDOTNETFUNCTIONSSECRET) + project: + directory: 'Tests/Functional/Bots/DotNet/Consumers/CodeFirst/SimpleHostBot' + name: "SimpleHostBot.csproj" + netCoreVersion: "3.1.x" + dependency: + registry: ${{ parameters.dependenciesRegistryDotNetHosts }} + version: ${{ parameters.dependenciesVersionDotNetHosts }} + # Publish variables - stage: "Publish_Variables" displayName: "Publish Variables" From 4fd4983e25e02a3cf4ffd8288ae37614db925c44 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Thu, 10 Jun 2021 10:40:23 -0700 Subject: [PATCH 13/22] add JS parameters and template for empty bot in webapp/functions --- .../deployBotResources/deployBotResources.yml | 65 +++++++++++++++---- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 9b79d5ca3f..b87fdf2bc5 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -24,6 +24,19 @@ parameters: - MyGet - NuGet + - name: dependenciesVersionJSHosts + displayName: JS Hosts Version + type: string + default: $env:DEPENDENCIESVERSIONJSHOSTS + + - name: dependenciesRegistryJSHosts + displayName: JS Hosts Registry + type: string + default: MyGet + values: + - MyGet + - Npm + variables: BuildConfiguration: "Debug" BuildPlatform: "AnyCPU" @@ -43,6 +56,10 @@ variables: # BfcfnEmptyBotDotNetWebAppSecret: (optional) App Secret for BfcfnEmptyBotDotNetWebApp bot. # BfcfnEmptyBotDotNetFunctionsId: (optional) App Id for BfcfnEmptyBotDotNetFunctions bot. # BfcfnEmptyBotDotNetFunctionsSecret: (optional) App Secret for BfcfnEmptyBotDotNetFunctions bot. + # BfcfnEmptyBotJSWebAppId: (optional) App Id for BfcfnEmptyBotJSWebApp bot. + # BfcfnEmptyBotJSWebAppSecret: (optional) App Secret for BfcfnEmptyBotJSWebApp bot. + # BfcfnEmptyBotJSFunctionsId: (optional) App Id for BfcfnEmptyBotJSFunctions bot. + # BfcfnEmptyBotJSFunctionsSecret: (optional) App Secret for BfcfnEmptyBotJSFunctions bot. # ConnectionName: (optional) Name for the OAuth connection to use in the skill bots. ## DependenciesVersion (Define these variables in Azure) Possible values are: Latest (default), Stable, or specific version numbers. @@ -94,18 +111,6 @@ stages: registry: ${{ parameters.dependenciesRegistryDotNetHosts }} version: ${{ parameters.dependenciesVersionDotNetHosts }} - - template: dotnet/deploy.yml - parameters: - appInsight: "$(INTERNALAPPINSIGHTSNAME)" - appServicePlan: "$(INTERNALAPPSERVICEPLANDOTNETNAME)" - appServicePlanRG: "$(INTERNALAPPSERVICEPLANWINDOWSRESOURCEGROUP)" - azureSubscription: "$(AZURESUBSCRIPTION)" - botPricingTier: $env:BOTPRICINGTIER - connectionName: $env:CONNECTIONNAME - keyVault: "$(INTERNALKEYVAULTNAME)" - resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-DotNet" - resourceSuffix: $(INTERNALRESOURCESUFFIX) - bots: - name: "bfcfnemptybotdotnetfunctions" dependsOn: "Prepare_DotNetGroup" type: "Host" @@ -120,6 +125,42 @@ stages: registry: ${{ parameters.dependenciesRegistryDotNetHosts }} version: ${{ parameters.dependenciesVersionDotNetHosts }} +# JS + - template: js/deploy.yml + parameters: + appInsight: "$(INTERNALAPPINSIGHTSNAME)" + appServicePlan: "$(INTERNALAPPSERVICEPLANJSNAME)" + appServicePlanRG: "$(INTERNALAPPSERVICEPLANWINDOWSRESOURCEGROUP)" + azureSubscription: "$(AZURESUBSCRIPTION)" + botPricingTier: $env:BOTPRICINGTIER + connectionName: $env:CONNECTIONNAME + dependsOn: "Prepare_JSGroup" + keyVault: "$(INTERNALKEYVAULTNAME)" + resourceGroup: "$(INTERNALRESOURCEGROUPNAME)-JS" + resourceSuffix: $(INTERNALRESOURCESUFFIX) + bots: + - name: "bfcfnemptybotjswebapp" + type: "Host" + displayName: "JS Web App Empty Bot" + appId: $(BFCFNEMPTYBOTJSWEBAPPID) + appSecret: $(BFCFNEMPTYBOTJSWEBAPPSECRET) + project: + directory: 'Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' + dependency: + registry: ${{ parameters.dependenciesRegistryJSHosts }} + version: ${{ parameters.dependenciesVersionJSHosts }} + + - name: "bfcfnemptybotjsfunctions" + type: "Host" + displayName: "JS Functions Empty Bot" + appId: $(BFCFNEMPTYBOTJSFUNCTIONSID) + appSecret: $(BFCFNEMPTYBOTJSFUNCTIONSSECRET) + project: + directory: 'Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' + dependency: + registry: ${{ parameters.dependenciesRegistryJSHosts }} + version: ${{ parameters.dependenciesVersionJSHosts }} + # Publish variables - stage: "Publish_Variables" displayName: "Publish Variables" From 8640874cdad1f4a462e0436fd7f6bc3356866e96 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Thu, 10 Jun 2021 10:53:33 -0700 Subject: [PATCH 14/22] add prepare_jsgroup step --- .../build/yaml/deployBotResources/deployBotResources.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index b87fdf2bc5..31fa82b35e 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -84,6 +84,10 @@ stages: name: "$(INTERNALRESOURCEGROUPNAME)-DotNet" displayName: "Prepare DotNet's Resource Group" + - id: "Prepare_JSGroup" + name: "$(INTERNALRESOURCEGROUPNAME)-JS" + displayName: "Prepare JS's Resource Group" + # DotNet - template: dotnet/deploy.yml parameters: From 90d21e0de9d3ed11e812c342cfa3db18a53aa781 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Thu, 10 Jun 2021 11:29:38 -0700 Subject: [PATCH 15/22] fix location to js simple host bot --- .../build/yaml/deployBotResources/deployBotResources.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 31fa82b35e..7f4c323903 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -149,7 +149,7 @@ stages: appId: $(BFCFNEMPTYBOTJSWEBAPPID) appSecret: $(BFCFNEMPTYBOTJSWEBAPPSECRET) project: - directory: 'Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' + directory: 'Tests/Functional/Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' dependency: registry: ${{ parameters.dependenciesRegistryJSHosts }} version: ${{ parameters.dependenciesVersionJSHosts }} @@ -160,7 +160,7 @@ stages: appId: $(BFCFNEMPTYBOTJSFUNCTIONSID) appSecret: $(BFCFNEMPTYBOTJSFUNCTIONSSECRET) project: - directory: 'Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' + directory: 'Tests/Functional/Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot' dependency: registry: ${{ parameters.dependenciesRegistryJSHosts }} version: ${{ parameters.dependenciesVersionJSHosts }} From 1ba018da37c2bc737292f723778dbbf51844d1da Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Thu, 10 Jun 2021 11:43:09 -0700 Subject: [PATCH 16/22] Remove python refs --- tests/functional/Bots/Python/.gitignore | 3 - .../Consumers/CodeFirst/SimpleHostBot/.env | 24 - .../adapter_with_error_handler.py | 141 ----- .../Consumers/CodeFirst/SimpleHostBot/app.py | 89 --- .../SimpleHostBot/authentication/__init__.py | 6 - .../allowed_skills_claims_validator.py | 44 -- .../CodeFirst/SimpleHostBot/bots/__init__.py | 7 - .../CodeFirst/SimpleHostBot/bots/host_bot.py | 186 ------ .../CodeFirst/SimpleHostBot/config.py | 71 --- .../SimpleHostBot/dialogs/__init__.py | 6 - .../SimpleHostBot/dialogs/setup_dialog.py | 129 ---- .../SimpleHostBot/helpers/dialog_helper.py | 19 - .../CodeFirst/SimpleHostBot/requirements.txt | 3 - .../skill_conversation_id_factory.py | 75 --- .../Consumers/CodeFirst/WaterfallHostBot/.env | 53 -- .../CodeFirst/WaterfallHostBot/.pylintrc | 590 ------------------ .../adapter_with_error_handler.py | 140 ----- .../CodeFirst/WaterfallHostBot/app.py | 101 --- .../authentication/__init__.py | 6 - .../allowed_skills_claims_validator.py | 33 - .../WaterfallHostBot/bots/__init__.py | 7 - .../WaterfallHostBot/bots/root_bot.py | 84 --- .../WaterfallHostBot/cards/welcomeCard.json | 29 - .../WaterfallHostBot/dialogs/__init__.py | 8 - .../WaterfallHostBot/dialogs/main_dialog.py | 456 -------------- .../WaterfallHostBot/dialogs/sso/__init__.py | 7 - .../dialogs/sso/sso_dialog.py | 137 ---- .../dialogs/sso/sso_signin_dialog.py | 57 -- .../dialogs/tangent_dialog.py | 51 -- .../WaterfallHostBot/helpers/dialog_helper.py | 19 - .../WaterfallHostBot/requirements.txt | 3 - .../skill_conversation_id_factory.py | 76 --- .../WaterfallHostBot/skills/echo_skill.py | 25 - .../skills/skill_definition.py | 25 - .../WaterfallHostBot/skills/teams_skill.py | 36 -- .../skills/waterfall_skill.py | 33 - .../WaterfallHostBot/skills_configuration.py | 88 --- .../token_exchange_skill_handler.py | 199 ------ .../Skills/CodeFirst/EchoSkillBot/app.py | 135 ---- .../EchoSkillBot/authentication/__init__.py | 6 - .../allowed_callers_claims_validator.py | 29 - .../CodeFirst/EchoSkillBot/bots/__init__.py | 6 - .../CodeFirst/EchoSkillBot/bots/echo_bot.py | 32 - .../Skills/CodeFirst/EchoSkillBot/config.py | 17 - .../manifests/echoskillbot-manifest-1.0.json | 23 - .../CodeFirst/EchoSkillBot/requirements.txt | 1 - .../Skills/CodeFirst/WaterfallSkillBot/.env | 11 - .../CodeFirst/WaterfallSkillBot/.pylintrc | 582 ----------------- .../Skills/CodeFirst/WaterfallSkillBot/app.py | 176 ------ .../authentication/__init__.py | 6 - .../allowed_callers_claims_validator.py | 50 -- .../WaterfallSkillBot/bots/__init__.py | 6 - .../WaterfallSkillBot/bots/skill_bot.py | 69 -- .../CodeFirst/WaterfallSkillBot/config.py | 34 - .../WaterfallSkillBot/dialogs/__init__.py | 6 - .../dialogs/activity_router_dialog.py | 166 ----- .../dialogs/auth/__init__.py | 6 - .../dialogs/auth/auth_dialog.py | 106 ---- .../dialogs/cards/__init__.py | 9 - .../dialogs/cards/card_dialog.py | 282 --------- .../dialogs/cards/card_options.py | 23 - .../dialogs/cards/card_sample_helper.py | 557 ----------------- .../dialogs/cards/channel_supported_cards.py | 33 - .../cards/files/buildreactionbotframework.jpg | Bin 65992 -> 0 bytes .../dialogs/cards/files/music.mp3 | Bin 647055 -> 0 bytes .../dialogs/cards/files/teams-logo.png | Bin 6412 -> 0 bytes .../dialogs/delete/__init__.py | 6 - .../dialogs/delete/delete_dialog.py | 44 -- .../dialogs/file_upload/__init__.py | 6 - .../dialogs/file_upload/file_upload_dialog.py | 86 --- .../message_with_attachment/__init__.py | 6 - .../message_with_attachment_dialog.py | 125 ---- .../dialogs/proactive/__init__.py | 7 - .../proactive/continuation_parameters.py | 16 - .../proactive/wait_for_proactive_dialog.py | 77 --- .../WaterfallSkillBot/dialogs/sso/__init__.py | 7 - .../dialogs/sso/sso_skill_dialog.py | 112 ---- .../dialogs/sso/sso_skill_signin_dialog.py | 56 -- .../dialogs/update/__init__.py | 6 - .../dialogs/update/update_dialog.py | 90 --- .../images/architecture-resize.png | Bin 137666 -> 0 bytes .../waterfallskillbot-manifest-1.0.json | 105 ---- .../WaterfallSkillBot/middleware/__init__.py | 6 - .../middleware/sso_save_state_middleware.py | 30 - .../WaterfallSkillBot/requirements.txt | 3 - .../skill_adapter_with_error_handler.py | 103 --- .../skill_conversation_id_factory.py | 75 --- .../yaml/deployBotResources/python/deploy.yml | 183 ------ .../python/evaluateDependenciesVariables.yml | 110 ---- 89 files changed, 6696 deletions(-) delete mode 100644 tests/functional/Bots/Python/.gitignore delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/.env delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/adapter_with_error_handler.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/app.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/allowed_skills_claims_validator.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/host_bot.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/config.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/setup_dialog.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/helpers/dialog_helper.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/requirements.txt delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/skill_conversation_id_factory.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.env delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.pylintrc delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/adapter_with_error_handler.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/app.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/allowed_skills_claims_validator.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/root_bot.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/cards/welcomeCard.json delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/main_dialog.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/__init__.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_dialog.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_signin_dialog.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/tangent_dialog.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/helpers/dialog_helper.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/requirements.txt delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skill_conversation_id_factory.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/echo_skill.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/skill_definition.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/teams_skill.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/waterfall_skill.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills_configuration.py delete mode 100644 tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/token_exchange_skill_handler.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/app.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/allowed_callers_claims_validator.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/echo_bot.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/config.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/manifests/echoskillbot-manifest-1.0.json delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/requirements.txt delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.env delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.pylintrc delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/app.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/allowed_callers_claims_validator.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/skill_bot.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/config.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/activity_router_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/auth_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_options.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_sample_helper.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/channel_supported_cards.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/music.mp3 delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/teams-logo.png delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/delete_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/file_upload_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/message_with_attachment_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/continuation_parameters.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/wait_for_proactive_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_signin_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/update_dialog.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/images/architecture-resize.png delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/manifests/waterfallskillbot-manifest-1.0.json delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/middleware/__init__.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/middleware/sso_save_state_middleware.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/requirements.txt delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_adapter_with_error_handler.py delete mode 100644 tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_conversation_id_factory.py delete mode 100644 tests/functional/build/yaml/deployBotResources/python/deploy.yml delete mode 100644 tests/functional/build/yaml/deployBotResources/python/evaluateDependenciesVariables.yml diff --git a/tests/functional/Bots/Python/.gitignore b/tests/functional/Bots/Python/.gitignore deleted file mode 100644 index 01e8a341d5..0000000000 --- a/tests/functional/Bots/Python/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -# Ignore .deployment files generated to deploy Python to linux from VSCode -**/.deployment \ No newline at end of file diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/.env b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/.env deleted file mode 100644 index 11aabb20f4..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/.env +++ /dev/null @@ -1,24 +0,0 @@ -MicrosoftAppId= -MicrosoftAppPassword= -SkillHostEndpoint=http://localhost:37000/api/skills - -skill_EchoSkillBotComposerDotNet_appId= -skill_EchoSkillBotComposerDotNet_endpoint=http://localhost:35410/api/messages - -skill_EchoSkillBotDotNet_appId= -skill_EchoSkillBotDotNet_endpoint=http://localhost:35400/api/messages - -skill_EchoSkillBotDotNet21_appId= -skill_EchoSkillBotDotNet21_endpoint=http://localhost:35405/api/messages - -skill_EchoSkillBotDotNetV3_appId= -skill_EchoSkillBotDotNetV3_endpoint=http://localhost:35407/api/messages - -skill_EchoSkillBotJS_appId= -skill_EchoSkillBotJS_endpoint=http://localhost:36400/api/messages - -skill_EchoSkillBotJSV3_appId= -skill_EchoSkillBotJSV3_endpoint=http://localhost:36407/api/messages - -skill_EchoSkillBotPython_appId= -skill_EchoSkillBotPython_endpoint=http://localhost:37400/api/messages diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/adapter_with_error_handler.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/adapter_with_error_handler.py deleted file mode 100644 index f8271d257a..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/adapter_with_error_handler.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. -import sys -import traceback - -from botbuilder.core import ( - BotFrameworkAdapter, - BotFrameworkAdapterSettings, - ConversationState, - MessageFactory, - TurnContext, -) -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from botbuilder.schema import ActivityTypes, Activity, InputHints - -from config import DefaultConfig, SkillConfiguration -from bots.host_bot import ACTIVE_SKILL_PROPERTY_NAME - - -class AdapterWithErrorHandler(BotFrameworkAdapter): - def __init__( - self, - settings: BotFrameworkAdapterSettings, - config: DefaultConfig, - conversation_state: ConversationState, - skill_client: SkillHttpClient = None, - skill_config: SkillConfiguration = None, - ): - super().__init__(settings) - self._config = config - - if not conversation_state: - raise TypeError( - "AdapterWithErrorHandler: `conversation_state` argument cannot be None." - ) - self._conversation_state = conversation_state - self._skill_client = skill_client - self._skill_config = skill_config - - self.on_turn_error = self._handle_turn_error - - async def _handle_turn_error(self, turn_context: TurnContext, error: Exception): - # This check writes out errors to console log - # NOTE: In production environment, you should consider logging this to Azure - # application insights. - print(f"\n [on_turn_error] unhandled error: {error}", file=sys.stderr) - traceback.print_exc() - await self._send_error_message(turn_context, error) - await self._end_skill_conversation(turn_context, error) - await self._clear_conversation_state(turn_context) - - async def _send_error_message(self, turn_context: TurnContext, error: Exception): - if not self._skill_client or not self._skill_config: - return - try: - exc_info = sys.exc_info() - stack = traceback.format_exception(*exc_info) - - # Send a message to the user. - error_message_text = "The bot encountered an error or bug." - error_message = MessageFactory.text( - error_message_text, error_message_text, InputHints.ignoring_input - ) - error_message.value = {"message": error, "stack": stack} - await turn_context.send_activity(error_message) - - await turn_context.send_activity(f"Exception: {error}") - await turn_context.send_activity(traceback.format_exc()) - - error_message_text = ( - "To continue to run this bot, please fix the bot source code." - ) - error_message = MessageFactory.text( - error_message_text, error_message_text, InputHints.ignoring_input - ) - await turn_context.send_activity(error_message) - - # Send a trace activity, which will be displayed in Bot Framework Emulator. - await turn_context.send_trace_activity( - label="TurnError", - name="on_turn_error Trace", - value=f"{error}", - value_type="https://www.botframework.com/schemas/error", - ) - except Exception as exception: - print( - f"\n Exception caught on _send_error_message : {exception}", - file=sys.stderr, - ) - traceback.print_exc() - - async def _end_skill_conversation( - self, turn_context: TurnContext, error: Exception - ): - if not self._skill_client or not self._skill_config: - return - - try: - # Inform the active skill that the conversation is ended so that it has a chance to clean up. - # Note: the root bot manages the ActiveSkillPropertyName, which has a value while the root bot - # has an active conversation with a skill. - active_skill = await self._conversation_state.create_property( - ACTIVE_SKILL_PROPERTY_NAME - ).get(turn_context) - - if active_skill: - bot_id = self._config.APP_ID - end_of_conversation = Activity(type=ActivityTypes.end_of_conversation) - end_of_conversation.code = "RootSkillError" - TurnContext.apply_conversation_reference( - end_of_conversation, - TurnContext.get_conversation_reference(turn_context.activity), - True, - ) - - await self._conversation_state.save_changes(turn_context, True) - await self._skill_client.post_activity_to_skill( - bot_id, - active_skill, - self._skill_config.SKILL_HOST_ENDPOINT, - end_of_conversation, - ) - except Exception as exception: - print( - f"\n Exception caught on _end_skill_conversation : {exception}", - file=sys.stderr, - ) - traceback.print_exc() - - async def _clear_conversation_state(self, turn_context: TurnContext): - try: - # Delete the conversationState for the current conversation to prevent the - # bot from getting stuck in a error-loop caused by being in a bad state. - # ConversationState should be thought of as similar to "cookie-state" for a Web page. - await self._conversation_state.delete(turn_context) - except Exception as exception: - print( - f"\n Exception caught on _clear_conversation_state : {exception}", - file=sys.stderr, - ) - traceback.print_exc() diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/app.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/app.py deleted file mode 100644 index 283492ff41..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/app.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from aiohttp import web -from aiohttp.web import Request, Response -from botbuilder.core import ( - BotFrameworkAdapterSettings, - ConversationState, - MemoryStorage, -) -from botbuilder.core.integration import ( - aiohttp_channel_service_routes, - aiohttp_error_middleware, -) -from botbuilder.core.skills import SkillHandler -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from botbuilder.schema import Activity -from botframework.connector.auth import ( - AuthenticationConfiguration, - SimpleCredentialProvider, -) - -from dialogs import SetupDialog -from skill_conversation_id_factory import SkillConversationIdFactory -from authentication import AllowedSkillsClaimsValidator -from bots import HostBot -from config import DefaultConfig, SkillConfiguration -from adapter_with_error_handler import AdapterWithErrorHandler - -CONFIG = DefaultConfig() -SKILL_CONFIG = SkillConfiguration() - -# Whitelist skills from SKILL_CONFIG -AUTH_CONFIG = AuthenticationConfiguration( - claims_validator=AllowedSkillsClaimsValidator(CONFIG).claims_validator -) -# Create adapter. -# See https://aka.ms/about-bot-adapter to learn more about how bots work. -SETTINGS = BotFrameworkAdapterSettings( - app_id=CONFIG.APP_ID, - app_password=CONFIG.APP_PASSWORD, - auth_configuration=AUTH_CONFIG, -) - -STORAGE = MemoryStorage() -CONVERSATION_STATE = ConversationState(STORAGE) - -ID_FACTORY = SkillConversationIdFactory(STORAGE) -CREDENTIAL_PROVIDER = SimpleCredentialProvider(CONFIG.APP_ID, CONFIG.APP_PASSWORD) -CLIENT = SkillHttpClient(CREDENTIAL_PROVIDER, ID_FACTORY) - -ADAPTER = AdapterWithErrorHandler( - SETTINGS, CONFIG, CONVERSATION_STATE, CLIENT, SKILL_CONFIG -) - -# Create the Bot -DIALOG = SetupDialog(CONVERSATION_STATE, SKILL_CONFIG) -BOT = HostBot(CONVERSATION_STATE, SKILL_CONFIG, CLIENT, CONFIG, DIALOG) - -SKILL_HANDLER = SkillHandler(ADAPTER, BOT, ID_FACTORY, CREDENTIAL_PROVIDER, AUTH_CONFIG) - - -# Listen for incoming requests on /api/messages -async def messages(req: Request) -> Response: - # Main bot message handler. - if "application/json" in req.headers["Content-Type"]: - body = await req.json() - else: - return Response(status=415) - - activity = Activity().deserialize(body) - auth_header = req.headers["Authorization"] if "Authorization" in req.headers else "" - - try: - await ADAPTER.process_activity(activity, auth_header, BOT.on_turn) - return Response(status=201) - except Exception as exception: - raise exception - - -APP = web.Application(middlewares=[aiohttp_error_middleware]) -APP.router.add_post("/api/messages", messages) -APP.router.add_routes(aiohttp_channel_service_routes(SKILL_HANDLER, "/api/skills")) - -if __name__ == "__main__": - try: - web.run_app(APP, host="localhost", port=CONFIG.PORT) - except Exception as error: - raise error diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/__init__.py deleted file mode 100644 index 550f9b54b6..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .allowed_skills_claims_validator import AllowedSkillsClaimsValidator - -__all__ = ["AllowedSkillsClaimsValidator"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/allowed_skills_claims_validator.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/allowed_skills_claims_validator.py deleted file mode 100644 index 7f0d26f087..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/authentication/allowed_skills_claims_validator.py +++ /dev/null @@ -1,44 +0,0 @@ -from typing import Awaitable, Callable, Dict, List - -from botframework.connector.auth import JwtTokenValidation, SkillValidation - -from config import DefaultConfig - - -class AllowedSkillsClaimsValidator: - - config_key = "ALLOWED_CALLERS" - - def __init__(self, config: DefaultConfig): - if not config: - raise TypeError( - "AllowedSkillsClaimsValidator: config object cannot be None." - ) - - # ALLOWED_CALLERS is the setting in config.py file - # that consists of the list of parent bot ids that are allowed to access the skill - # to add a new parent bot simply go to the AllowedCallers and add - # the parent bot's microsoft app id to the list - caller_list = getattr(config, self.config_key) - if caller_list is None: - raise TypeError(f'"{self.config_key}" not found in configuration.') - self._allowed_callers = caller_list - - @property - def claims_validator(self) -> Callable[[List[Dict]], Awaitable]: - async def allow_callers_claims_validator(claims: Dict[str, object]): - # if allowed_callers is None we allow all calls - if "*" not in self._allowed_callers and SkillValidation.is_skill_claim( - claims - ): - # Check that the appId claim in the skill request is in the list of skills configured for this bot. - app_id = JwtTokenValidation.get_app_id_from_claims(claims) - if app_id not in self._allowed_callers: - raise PermissionError( - f'Received a request from a bot with an app ID of "{app_id}".' - f" To enable requests from this caller, add the app ID to your configuration file." - ) - - return - - return allow_callers_claims_validator diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/__init__.py deleted file mode 100644 index acb6f75c35..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .host_bot import HostBot - - -__all__ = ["HostBot"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/host_bot.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/host_bot.py deleted file mode 100644 index ab1e383cc8..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/bots/host_bot.py +++ /dev/null @@ -1,186 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. -import copy -from typing import List -from botbuilder.core import ( - ActivityHandler, - ConversationState, - MessageFactory, - TurnContext, -) -from botbuilder.core.skills import BotFrameworkSkill -from botbuilder.dialogs import Dialog -from botbuilder.schema import ( - ActivityTypes, - ChannelAccount, - ExpectedReplies, - DeliveryModes, -) -from botbuilder.integration.aiohttp.skills import SkillHttpClient - -from config import DefaultConfig, SkillConfiguration -from helpers.dialog_helper import DialogHelper - -DELIVERY_MODE_PROPERTY_NAME = "deliveryModeProperty" -ACTIVE_SKILL_PROPERTY_NAME = "activeSkillProperty" - - -class HostBot(ActivityHandler): - def __init__( - self, - conversation_state: ConversationState, - skills_config: SkillConfiguration, - skill_client: SkillHttpClient, - config: DefaultConfig, - dialog: Dialog, - ): - self._bot_id = config.APP_ID - self._skill_client = skill_client - self._skills_config = skills_config - self._conversation_state = conversation_state - self._dialog = dialog - self._dialog_state_property = conversation_state.create_property("DialogState") - - # Create state property to track the delivery mode and active skill. - self._delivery_mode_property = conversation_state.create_property( - DELIVERY_MODE_PROPERTY_NAME - ) - self._active_skill_property = conversation_state.create_property( - ACTIVE_SKILL_PROPERTY_NAME - ) - - async def on_turn(self, turn_context): - # Forward all activities except EndOfConversation to the active skill. - if turn_context.activity.type != ActivityTypes.end_of_conversation: - # Try to get the active skill - active_skill: BotFrameworkSkill = await self._active_skill_property.get( - turn_context - ) - - if active_skill: - delivery_mode: str = await self._delivery_mode_property.get( - turn_context - ) - - # Send the activity to the skill - await self.__send_to_skill(turn_context, delivery_mode, active_skill) - return - - await super().on_turn(turn_context) - # Save any state changes that might have occurred during the turn. - await self._conversation_state.save_changes(turn_context) - - async def on_message_activity(self, turn_context: TurnContext): - if turn_context.activity.text in self._skills_config.SKILLS: - delivery_mode: str = await self._delivery_mode_property.get(turn_context) - selected_skill = self._skills_config.SKILLS[turn_context.activity.text] - v3_bots = ["EchoSkillBotDotNetV3", "EchoSkillBotJSV3"] - - if ( - selected_skill - and delivery_mode == DeliveryModes.expect_replies - and selected_skill.id.lower() in (id.lower() for id in v3_bots) - ): - message = MessageFactory.text( - "V3 Bots do not support 'expectReplies' delivery mode." - ) - await turn_context.send_activity(message) - - # Forget delivery mode and skill invocation. - await self._delivery_mode_property.delete(turn_context) - - # Restart setup dialog - await self._conversation_state.delete(turn_context) - - await DialogHelper.run_dialog( - self._dialog, - turn_context, - self._dialog_state_property, - ) - - async def on_end_of_conversation_activity(self, turn_context: TurnContext): - await self.end_conversation(turn_context.activity, turn_context) - - async def on_members_added_activity( - self, members_added: List[ChannelAccount], turn_context: TurnContext - ): - for member in members_added: - if member.id != turn_context.activity.recipient.id: - await turn_context.send_activity( - MessageFactory.text("Hello and welcome!") - ) - await DialogHelper.run_dialog( - self._dialog, - turn_context, - self._dialog_state_property, - ) - - async def end_conversation(self, activity, turn_context): - # Forget delivery mode and skill invocation. - await self._delivery_mode_property.delete(turn_context) - await self._active_skill_property.delete(turn_context) - - eoc_activity_message = ( - f"Received {ActivityTypes.end_of_conversation}.\n\nCode: {activity.code}." - ) - if activity.text: - eoc_activity_message = eoc_activity_message + f"\n\nText: {activity.text}" - if activity.value: - eoc_activity_message = eoc_activity_message + f"\n\nValue: {activity.value}" - await turn_context.send_activity(eoc_activity_message) - - # We are back - await turn_context.send_activity(MessageFactory.text("Back in the host bot.")) - - # Restart setup dialog. - await DialogHelper.run_dialog( - self._dialog, - turn_context, - self._dialog_state_property, - ) - - await self._conversation_state.save_changes(turn_context) - - async def __send_to_skill( - self, - turn_context: TurnContext, - delivery_mode: str, - target_skill: BotFrameworkSkill, - ): - # NOTE: Always SaveChanges() before calling a skill so that any activity generated by the skill - # will have access to current accurate state. - await self._conversation_state.save_changes(turn_context, force=True) - - if delivery_mode == "expectReplies": - # Clone activity and update its delivery mode. - activity = copy.copy(turn_context.activity) - activity.delivery_mode = delivery_mode - - # Route the activity to the skill. - expect_replies_response = await self._skill_client.post_activity_to_skill( - self._bot_id, - target_skill, - self._skills_config.SKILL_HOST_ENDPOINT, - activity, - ) - - # Route response activities back to the channel. - response_activities: ExpectedReplies = ( - ExpectedReplies().deserialize(expect_replies_response.body).activities - ) - - for response_activity in response_activities: - if response_activity.type == ActivityTypes.end_of_conversation: - await self.end_conversation(response_activity, turn_context) - - else: - await turn_context.send_activity(response_activity) - - else: - # Route the activity to the skill. - await self._skill_client.post_activity_to_skill( - self._bot_id, - target_skill, - self._skills_config.SKILL_HOST_ENDPOINT, - turn_context.activity, - ) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/config.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/config.py deleted file mode 100644 index 6e4da1d2a4..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/config.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os -from typing import Dict -from botbuilder.core.skills import BotFrameworkSkill -from dotenv import load_dotenv - -""" Bot Configuration """ - - -class DefaultConfig: - """ Bot Configuration """ - - load_dotenv() - - PORT = 37000 - APP_ID = os.getenv("MicrosoftAppId") - APP_PASSWORD = os.getenv("MicrosoftAppPassword") - SKILL_HOST_ENDPOINT = os.getenv("SkillHostEndpoint") - SKILLS = [] - - # Callers to only those specified, '*' allows any caller. - # Example: os.environ.get("AllowedCallers", ["54d3bb6a-3b6d-4ccd-bbfd-cad5c72fb53a"]) - ALLOWED_CALLERS = os.environ.get("AllowedCallers", ["*"]) - - @staticmethod - def configure_skills(): - skills = list() - env_skills = [x for x in os.environ if ((x.lower().startswith("skill_")) and ('group' not in x.lower()))] - - for envKey in env_skills: - keys = envKey.split("_") - bot_id = keys[1] - key = keys[2] - index = -1 - - for i, newSkill in enumerate(skills): - if newSkill["id"] == bot_id: - index = i - - if key.lower() == "appid": - attr = "app_id" - elif key.lower() == "endpoint": - attr = "skill_endpoint" - else: - raise ValueError( - f"[SkillsConfiguration]: Invalid environment variable declaration {key}" - ) - - env_val = os.getenv(envKey) - - if index == -1: - skill = {"id": bot_id, attr: env_val} - skills.append(skill) - else: - skills[index][attr] = env_val - pass - - DefaultConfig.SKILLS = skills - - -DefaultConfig.configure_skills() - - -class SkillConfiguration: - SKILL_HOST_ENDPOINT = DefaultConfig.SKILL_HOST_ENDPOINT - SKILLS: Dict[str, BotFrameworkSkill] = { - skill["id"]: BotFrameworkSkill(**skill) for skill in DefaultConfig.SKILLS - } diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/__init__.py deleted file mode 100644 index 0ea48d3bd7..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .setup_dialog import SetupDialog - -__all__ = ["SetupDialog"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/setup_dialog.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/setup_dialog.py deleted file mode 100644 index fe87c91941..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/dialogs/setup_dialog.py +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.dialogs import ( - ComponentDialog, - WaterfallDialog, - WaterfallStepContext, - DialogTurnResult, -) -from botbuilder.dialogs.choices.list_style import ListStyle -from botbuilder.dialogs.prompts import ( - TextPrompt, - ChoicePrompt, - PromptOptions, -) -from botbuilder.dialogs.choices import Choice -from botbuilder.core import MessageFactory, ConversationState -from botbuilder.schema import InputHints, DeliveryModes - -from bots.host_bot import ACTIVE_SKILL_PROPERTY_NAME, DELIVERY_MODE_PROPERTY_NAME -from config import SkillConfiguration - - -class SetupDialog(ComponentDialog): - def __init__( - self, conversation_state: ConversationState, skills_config: SkillConfiguration - ): - super(SetupDialog, self).__init__(SetupDialog.__name__) - - self._delivery_mode_property = conversation_state.create_property( - DELIVERY_MODE_PROPERTY_NAME - ) - self._active_skill_property = conversation_state.create_property( - ACTIVE_SKILL_PROPERTY_NAME - ) - self._delivery_mode = "" - - self._skills_config = skills_config - - # Define the setup dialog and its related components. - # Add ChoicePrompt to render available skills. - self.add_dialog(ChoicePrompt(self.select_delivery_mode_step.__name__)) - self.add_dialog(ChoicePrompt(self.select_skill_step.__name__)) - self.add_dialog(TextPrompt(self.final_step.__name__)) - # Add main waterfall dialog for this bot. - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self.select_delivery_mode_step, - self.select_skill_step, - self.final_step, - ], - ) - ) - self.initial_dialog_id = WaterfallDialog.__name__ - - # Render a prompt to select the delivery mode to use. - async def select_delivery_mode_step( - self, step_context: WaterfallStepContext - ) -> DialogTurnResult: - # Create the PromptOptions with the delivery modes supported. - message = "What delivery mode would you like to use?" - reprompt_message = ( - "That was not a valid choice, please select a valid delivery mode." - ) - options = PromptOptions( - prompt=MessageFactory.text(message, message, InputHints.expecting_input), - retry_prompt=MessageFactory.text( - reprompt_message, reprompt_message, InputHints.expecting_input - ), - choices=[Choice("normal"), Choice("expectReplies")], - ) - return await step_context.prompt( - self.select_delivery_mode_step.__name__, options - ) - - # Render a prompt to select the skill to call. - async def select_skill_step( - self, step_context: WaterfallStepContext - ) -> DialogTurnResult: - # Set delivery mode. - self._delivery_mode = step_context.result.value - await self._delivery_mode_property.set( - step_context.context, step_context.result.value - ) - - # Create the PromptOptions from the skill configuration which contains the list of configured skills. - message = "What skill would you like to call?" - reprompt_message = "That was not a valid choice, please select a valid skill." - options = PromptOptions( - prompt=MessageFactory.text(message, message, InputHints.expecting_input), - retry_prompt=MessageFactory.text(reprompt_message, reprompt_message), - choices=[ - Choice(value=skill.id) - for _, skill in sorted(self._skills_config.SKILLS.items()) - ], - style=ListStyle.suggested_action - ) - - return await step_context.prompt(self.select_skill_step.__name__, options) - - # The SetupDialog has ended, we go back to the HostBot to connect with the selected skill. - async def final_step(self, step_context: WaterfallStepContext) -> DialogTurnResult: - # Set active skill. - for i in self._skills_config.SKILLS.keys(): - if i.lower() == step_context.result.value.lower(): - selected_skill = self._skills_config.SKILLS.get(i) - - await self._active_skill_property.set(step_context.context, selected_skill) - - v3_bots = ['EchoSkillBotDotNetV3', 'EchoSkillBotJSV3'] - - if self._delivery_mode == DeliveryModes.expect_replies and selected_skill.id.lower() in (id.lower() for id in v3_bots): - message = MessageFactory.text("V3 Bots do not support 'expectReplies' delivery mode.") - await step_context.context.send_activity(message) - - # Forget delivery mode and skill invocation. - await self._delivery_mode_property.delete(step_context.context) - await self._active_skill_property.delete(step_context.context) - - # Restart setup dialog - return await step_context.replace_dialog(self.initial_dialog_id) - - await step_context.context.send_activity( - MessageFactory.text("Type anything to send to the skill.", "Type anything to send to the skill.", InputHints.expecting_input) - ) - - return await step_context.end_dialog() diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/helpers/dialog_helper.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/helpers/dialog_helper.py deleted file mode 100644 index 6b2646b0ba..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/helpers/dialog_helper.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.core import StatePropertyAccessor, TurnContext -from botbuilder.dialogs import Dialog, DialogSet, DialogTurnStatus - - -class DialogHelper: - @staticmethod - async def run_dialog( - dialog: Dialog, turn_context: TurnContext, accessor: StatePropertyAccessor - ): - dialog_set = DialogSet(accessor) - dialog_set.add(dialog) - - dialog_context = await dialog_set.create_context(turn_context) - results = await dialog_context.continue_dialog() - if results.status == DialogTurnStatus.Empty: - await dialog_context.begin_dialog(dialog.id) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/requirements.txt b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/requirements.txt deleted file mode 100644 index 47a60840f5..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -botbuilder-integration-aiohttp>=4.13.0 -botbuilder-dialogs>=4.13.0 -python-dotenv diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/skill_conversation_id_factory.py b/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/skill_conversation_id_factory.py deleted file mode 100644 index 8b3ab86d14..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/SimpleHostBot/skill_conversation_id_factory.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. -from typing import Union - -from botbuilder.core import Storage, TurnContext -from botbuilder.core.skills import ( - ConversationIdFactoryBase, - SkillConversationIdFactoryOptions, - SkillConversationReference, -) -from botbuilder.schema import ConversationReference - - -class SkillConversationIdFactory(ConversationIdFactoryBase): - def __init__(self, storage: Storage): - if not storage: - raise TypeError("storage can't be None") - - self._storage = storage - - async def create_skill_conversation_id( - self, - options_or_conversation_reference: Union[ - SkillConversationIdFactoryOptions, ConversationReference - ], - ) -> str: - if not options_or_conversation_reference: - raise TypeError("Need options or conversation reference") - - if not isinstance( - options_or_conversation_reference, SkillConversationIdFactoryOptions - ): - raise TypeError( - "This SkillConversationIdFactory can only handle SkillConversationIdFactoryOptions" - ) - - options = options_or_conversation_reference - - # Create the storage key based on the SkillConversationIdFactoryOptions. - conversation_reference = TurnContext.get_conversation_reference( - options.activity - ) - skill_conversation_id = ( - f"{conversation_reference.conversation.id}" - f"-{options.bot_framework_skill.id}" - f"-{conversation_reference.channel_id}" - f"-skillconvo" - ) - - # Create the SkillConversationReference instance. - skill_conversation_reference = SkillConversationReference( - conversation_reference=conversation_reference, - oauth_scope=options.from_bot_oauth_scope, - ) - - # Store the SkillConversationReference using the skill_conversation_id as a key. - skill_conversation_info = {skill_conversation_id: skill_conversation_reference} - await self._storage.write(skill_conversation_info) - - # Return the generated skill_conversation_id (that will be also used as the conversation ID to call the skill). - return skill_conversation_id - - async def get_conversation_reference( - self, skill_conversation_id: str - ) -> Union[SkillConversationReference, ConversationReference]: - if not skill_conversation_id: - raise TypeError("skill_conversation_id can't be None") - - # Get the SkillConversationReference from storage for the given skill_conversation_id. - skill_conversation_info = await self._storage.read([skill_conversation_id]) - - return skill_conversation_info.get(skill_conversation_id) - - async def delete_conversation_reference(self, skill_conversation_id: str): - await self._storage.delete([skill_conversation_id]) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.env b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.env deleted file mode 100644 index 382c7b2790..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.env +++ /dev/null @@ -1,53 +0,0 @@ -MicrosoftAppId= -MicrosoftAppPassword= -SkillHostEndpoint=http://localhost:37020/api/skills -SsoConnectionName= -SsoConnectionNameTeams= - -skill_EchoSkillBotDotNet_group=Echo -skill_EchoSkillBotDotNet_appId= -skill_EchoSkillBotDotNet_endpoint=http://localhost:35400/api/messages - -skill_EchoSkillBotDotNet21_group=Echo -skill_EchoSkillBotDotNet21_appId= -skill_EchoSkillBotDotNet21_endpoint=http://localhost:35405/api/messages - -skill_EchoSkillBotDotNetV3_group=Echo -skill_EchoSkillBotDotNetV3_appId= -skill_EchoSkillBotDotNetV3_endpoint=http://localhost:35407/api/messages - -skill_EchoSkillBotJS_group=Echo -skill_EchoSkillBotJS_appId= -skill_EchoSkillBotJS_endpoint=http://localhost:36400/api/messages - -skill_EchoSkillBotJSV3_group=Echo -skill_EchoSkillBotJSV3_appId= -skill_EchoSkillBotJSV3_endpoint=http://localhost:36407/api/messages - -skill_EchoSkillBotPython_group=Echo -skill_EchoSkillBotPython_appId= -skill_EchoSkillBotPython_endpoint=http://localhost:37400/api/messages - -skill_WaterfallSkillBotDotNet_group=Waterfall -skill_WaterfallSkillBotDotNet_appId= -skill_WaterfallSkillBotDotNet_endpoint=http://localhost:35420/api/messages - -skill_WaterfallSkillBotJS_group=Waterfall -skill_WaterfallSkillBotJS_appId= -skill_WaterfallSkillBotJS_endpoint=http://localhost:36420/api/messages - -skill_WaterfallSkillBotPython_group=Waterfall -skill_WaterfallSkillBotPython_appId= -skill_WaterfallSkillBotPython_endpoint=http://localhost:37420/api/messages - -skill_TeamsSkillBotDotNet_group=Teams -skill_TeamsSkillBotDotNet_appId= -skill_TeamsSkillBotDotNet_endpoint=http://localhost:35430/api/messages - -skill_TeamsSkillBotJS_group=Teams -skill_TeamsSkillBotJS_appId= -skill_TeamsSkillBotJS_endpoint=http://localhost:36430/api/messages - -skill_TeamsSkillBotPython_group=Teams -skill_TeamsSkillBotPython_appId= -skill_TeamsSkillBotPython_endpoint=http://localhost:37430/api/messages diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.pylintrc b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.pylintrc deleted file mode 100644 index 0eb8d1d4f6..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/.pylintrc +++ /dev/null @@ -1,590 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-whitelist= - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore= - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=1 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Specify a configuration file. -#rcfile= - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape, - bad-continuation, - duplicate-code, - redefined-outer-name, - missing-docstring, - too-many-instance-attributes, - too-few-public-methods, - redefined-builtin, - too-many-arguments, - no-self-use, - fixme, - broad-except, - bare-except, - too-many-public-methods, - cyclic-import, - too-many-locals, - too-many-function-args, - too-many-return-statements, - import-error, - no-name-in-module, - too-many-branches - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit - - -[LOGGING] - -# Format style used to check logging format string. `old` means using % -# formatting, while `new` is for `{}` formatting. -logging-format-style=old - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package.. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. -spelling-store-unknown-words=no - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=120 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma, - dict-separator - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. -#class-attribute-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=no - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. -#variable-rgx= - - -[STRING] - -# This flag controls whether the implicit-str-concat-in-sequence should -# generate a warning on implicit string concatenation in sequences defined over -# several lines. -check-str-concat-over-line-jumps=no - - -[IMPORTS] - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules=optparse,tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled). -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled). -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[DESIGN] - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement. -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "BaseException, Exception". -overgeneral-exceptions=BaseException, - Exception diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/adapter_with_error_handler.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/adapter_with_error_handler.py deleted file mode 100644 index d2fc861c15..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/adapter_with_error_handler.py +++ /dev/null @@ -1,140 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import sys -import traceback - -from botbuilder.core import ( - BotFrameworkAdapter, - BotFrameworkAdapterSettings, - ConversationState, - MessageFactory, - TurnContext, -) -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from botbuilder.schema import ActivityTypes, Activity, InputHints - -from skills_configuration import DefaultConfig, SkillsConfiguration -from bots.root_bot import ACTIVE_SKILL_PROPERTY_NAME - - -class AdapterWithErrorHandler(BotFrameworkAdapter): - def __init__( - self, - settings: BotFrameworkAdapterSettings, - config: DefaultConfig, - conversation_state: ConversationState, - skill_client: SkillHttpClient = None, - skill_config: SkillsConfiguration = None, - ): - super().__init__(settings) - self._config = config - - if not conversation_state: - raise TypeError( - "AdapterWithErrorHandler: `conversation_state` argument cannot be None." - ) - self._conversation_state = conversation_state - self._skill_client = skill_client - self._skill_config = skill_config - - self.on_turn_error = self._handle_turn_error - - async def _handle_turn_error(self, turn_context: TurnContext, error: Exception): - # This check writes out errors to console log - # NOTE: In production environment, you should consider logging this to Azure - # application insights. - print(f"\n [on_turn_error] unhandled error: {error}", file=sys.stderr) - traceback.print_exc() - await self._send_error_message(turn_context, error) - await self._end_skill_conversation(turn_context, error) - await self._clear_conversation_state(turn_context) - - async def _send_error_message(self, turn_context: TurnContext, error: Exception): - if not self._skill_client or not self._skill_config: - return - try: - exc_info = sys.exc_info() - stack = traceback.format_exception(*exc_info) - - # Send a message to the user. - error_message_text = "The bot encountered an error or bug." - error_message = MessageFactory.text( - error_message_text, error_message_text, InputHints.ignoring_input - ) - error_message.value = {"message": error, "stack": stack} - await turn_context.send_activity(error_message) - - await turn_context.send_activity(f"Exception: {error}") - await turn_context.send_activity(traceback.format_exc()) - - error_message_text = ( - "To continue to run this bot, please fix the bot source code." - ) - error_message = MessageFactory.text( - error_message_text, error_message_text, InputHints.ignoring_input - ) - await turn_context.send_activity(error_message) - - # Send a trace activity, which will be displayed in Bot Framework Emulator. - await turn_context.send_trace_activity( - label="TurnError", - name="on_turn_error Trace", - value=f"{error}", - value_type="https://www.botframework.com/schemas/error", - ) - except Exception as exception: - print( - f"\n Exception caught in _send_error_message : {exception}", - file=sys.stderr, - ) - traceback.print_exc() - - async def _end_skill_conversation(self, turn_context: TurnContext): - if not self._skill_client or not self._skill_config: - return - - try: - # Inform the active skill that the conversation is ended so that it has a chance to clean up. - # Note: the root bot manages the ActiveSkillPropertyName, which has a value while the root bot - # has an active conversation with a skill. - active_skill = await self._conversation_state.create_property( - ACTIVE_SKILL_PROPERTY_NAME - ).get(turn_context) - - if active_skill: - bot_id = self._config.APP_ID - end_of_conversation = Activity(type=ActivityTypes.end_of_conversation) - end_of_conversation.code = "RootSkillError" - TurnContext.apply_conversation_reference( - end_of_conversation, - TurnContext.get_conversation_reference(turn_context.activity), - True, - ) - - await self._conversation_state.save_changes(turn_context, True) - await self._skill_client.post_activity_to_skill( - bot_id, - active_skill, - self._skill_config.SKILL_HOST_ENDPOINT, - end_of_conversation, - ) - except Exception as exception: - print( - f"\n Exception caught on _end_skill_conversation : {exception}", - file=sys.stderr, - ) - traceback.print_exc() - - async def _clear_conversation_state(self, turn_context: TurnContext): - try: - # Delete the conversationState for the current conversation to prevent the - # bot from getting stuck in an error-loop caused by being in a bad state. - # ConversationState should be thought of as similar to "cookie-state" for a Web page. - await self._conversation_state.delete(turn_context) - except Exception as exception: - print( - f"\n Exception caught on _clear_conversation_state : {exception}", - file=sys.stderr, - ) - traceback.print_exc() diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/app.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/app.py deleted file mode 100644 index 63bdfd6db7..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/app.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from http import HTTPStatus - -from aiohttp import web -from aiohttp.web import Request, Response -from aiohttp.web_response import json_response -from botbuilder.core import ( - BotFrameworkAdapterSettings, - ConversationState, - MemoryStorage, - UserState, -) -from botbuilder.core.integration import ( - aiohttp_channel_service_routes, - aiohttp_error_middleware, -) -from botbuilder.schema import Activity -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from botframework.connector.auth import ( - AuthenticationConfiguration, - SimpleCredentialProvider, -) - -from authentication import AllowedSkillsClaimsValidator -from bots import RootBot -from dialogs import MainDialog -from skills_configuration import DefaultConfig, SkillsConfiguration -from adapter_with_error_handler import AdapterWithErrorHandler -from skill_conversation_id_factory import SkillConversationIdFactory -from token_exchange_skill_handler import TokenExchangeSkillHandler - -CONFIG = DefaultConfig() -SKILL_CONFIG = SkillsConfiguration() - -# Create MemoryStorage, UserState and ConversationState -MEMORY = MemoryStorage() -USER_STATE = UserState(MEMORY) -CONVERSATION_STATE = ConversationState(MEMORY) -ID_FACTORY = SkillConversationIdFactory(MEMORY) - -CREDENTIAL_PROVIDER = SimpleCredentialProvider(CONFIG.APP_ID, CONFIG.APP_PASSWORD) -CLIENT = SkillHttpClient(CREDENTIAL_PROVIDER, ID_FACTORY) - -# Whitelist skills from SKILLS_CONFIG -AUTH_CONFIG = AuthenticationConfiguration( - claims_validator=AllowedSkillsClaimsValidator(SKILL_CONFIG).claims_validator -) - -# Create adapter. -# See https://aka.ms/about-bot-adapter to learn more about how bots work. -SETTINGS = BotFrameworkAdapterSettings(CONFIG.APP_ID, CONFIG.APP_PASSWORD) -ADAPTER = AdapterWithErrorHandler( - SETTINGS, CONFIG, CONVERSATION_STATE, CLIENT, SKILL_CONFIG -) - -DIALOG = MainDialog(CONVERSATION_STATE, ID_FACTORY, CLIENT, SKILL_CONFIG, CONFIG) - -# Create the Bot -BOT = RootBot(CONVERSATION_STATE, DIALOG) - -SKILL_HANDLER = TokenExchangeSkillHandler( - ADAPTER, - BOT, - CONFIG, - ID_FACTORY, - SKILL_CONFIG, - CLIENT, - CREDENTIAL_PROVIDER, - AUTH_CONFIG, -) - - -# Listen for incoming requests on /api/messages -async def messages(req: Request) -> Response: - # Main bot message handler. - if "application/json" in req.headers["Content-Type"]: - body = await req.json() - else: - return Response(status=HTTPStatus.UNSUPPORTED_MEDIA_TYPE) - - activity = Activity().deserialize(body) - auth_header = req.headers["Authorization"] if "Authorization" in req.headers else "" - - invoke_response = await ADAPTER.process_activity(activity, auth_header, BOT.on_turn) - if invoke_response: - return json_response(data=invoke_response.body, status=invoke_response.status) - return Response(status=HTTPStatus.OK) - - -APP = web.Application(middlewares=[aiohttp_error_middleware]) -APP.router.add_post("/api/messages", messages) -APP.router.add_get("/api/messages", messages) -APP.router.add_routes(aiohttp_channel_service_routes(SKILL_HANDLER, "/api/skills")) - -if __name__ == "__main__": - try: - web.run_app(APP, host="localhost", port=CONFIG.PORT) - except Exception as error: - raise error diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/__init__.py deleted file mode 100644 index 550f9b54b6..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .allowed_skills_claims_validator import AllowedSkillsClaimsValidator - -__all__ = ["AllowedSkillsClaimsValidator"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/allowed_skills_claims_validator.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/allowed_skills_claims_validator.py deleted file mode 100644 index 69bfddabc8..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/authentication/allowed_skills_claims_validator.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import Awaitable, Callable, Dict, List -from botframework.connector.auth import JwtTokenValidation, SkillValidation -from skills_configuration import SkillsConfiguration - - -class AllowedSkillsClaimsValidator: - def __init__(self, skills_config: SkillsConfiguration): - if not skills_config: - raise TypeError( - "AllowedSkillsClaimsValidator: config object cannot be None." - ) - - skills_list = [skill.app_id for skill in skills_config.SKILLS.values()] - self._allowed_skills = frozenset(skills_list) - - @property - def claims_validator(self) -> Callable[[List[Dict]], Awaitable]: - async def allow_callers_claims_validator(claims: Dict[str, object]): - if SkillValidation.is_skill_claim(claims): - # Check that the appId claim in the skill request is in the list of skills configured for this bot. - app_id = JwtTokenValidation.get_app_id_from_claims(claims) - if app_id not in self._allowed_skills: - raise PermissionError( - f'Received a request from a bot with an app ID of "{app_id}".' - f" To enable requests from this caller, add the app ID to your configuration file." - ) - - return - - return allow_callers_claims_validator diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/__init__.py deleted file mode 100644 index 6a5060f62f..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .root_bot import RootBot - - -__all__ = ["RootBot"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/root_bot.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/root_bot.py deleted file mode 100644 index 3ad5213c8a..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/bots/root_bot.py +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import json -import os.path -from typing import List -from botbuilder.core import ( - ActivityHandler, - ConversationState, - MessageFactory, - TurnContext, -) -from botbuilder.dialogs import Dialog, DialogExtensions -from botbuilder.schema import ActivityTypes, ChannelAccount, Attachment - -DELIVERY_MODE_PROPERTY_NAME = "deliveryModeProperty" -ACTIVE_SKILL_PROPERTY_NAME = "activeSkillProperty" - - -class RootBot(ActivityHandler): - def __init__( - self, - conversation_state: ConversationState, - main_dialog: Dialog, - ): - self._conversation_state = conversation_state - self._main_dialog = main_dialog - - self._dialog_state_property = conversation_state.create_property("DialogState") - - # Create state property to track the delivery mode and active skill. - self._delivery_mode_property = conversation_state.create_property( - DELIVERY_MODE_PROPERTY_NAME - ) - self._active_skill_property = conversation_state.create_property( - ACTIVE_SKILL_PROPERTY_NAME - ) - - async def on_turn(self, turn_context: TurnContext): - if turn_context.activity.type != ActivityTypes.conversation_update: - # Run the Dialog with the Activity. - await DialogExtensions.run_dialog( - self._main_dialog, - turn_context, - self._dialog_state_property, - ) - else: - # Let the base class handle the activity. - await super().on_turn(turn_context) - - # Save any state changes that might have occurred during the turn. - await self._conversation_state.save_changes(turn_context) - - async def on_members_added_activity( - self, members_added: List[ChannelAccount], turn_context: TurnContext - ): - # Greet anyone that was not the target (recipient) of this message. - # To learn more about Adaptive Cards, see https://aka.ms/msbot-adaptivecards. - for member in members_added: - if member.id != turn_context.activity.recipient.id: - welcome_card = self._create_adaptive_card_attachment() - activity = MessageFactory.attachment(welcome_card) - activity.speak = "Welcome to the waterfall host bot" - await turn_context.send_activity(activity) - await DialogExtensions.run_dialog( - self._main_dialog, - turn_context, - self._dialog_state_property, - ) - - @staticmethod - def _create_adaptive_card_attachment() -> Attachment: - """ - Load attachment from embedded resource. - """ - - relative_path = os.path.abspath(os.path.dirname(__file__)) - path = os.path.join(relative_path, "../cards/welcomeCard.json") - with open(path) as in_file: - card = json.load(in_file) - - return Attachment( - content_type="application/vnd.microsoft.card.adaptive", content=card - ) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/cards/welcomeCard.json b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/cards/welcomeCard.json deleted file mode 100644 index 0cb25e2570..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/cards/welcomeCard.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "type": "AdaptiveCard", - "version": "1.0", - "body": [ - { - "type": "Image", - "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU", - "size": "stretch" - }, - { - "type": "TextBlock", - "spacing": "Medium", - "size": "Medium", - "weight": "Bolder", - "text": "Welcome to the Skill Dialog Sample!", - "wrap": true, - "maxLines": 0, - "color": "Accent" - }, - { - "type": "TextBlock", - "size": "default", - "text": "This sample allows you to connect to a skill using a SkillDialog and invoke several actions.", - "wrap": true, - "maxLines": 0 - } - ] -} \ No newline at end of file diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/__init__.py deleted file mode 100644 index 3f3a5f6f9a..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .main_dialog import MainDialog -from .tangent_dialog import TangentDialog -from .sso import SsoDialog, SsoSignInDialog - -__all__ = ["MainDialog", "TangentDialog", "SsoDialog", "SsoSignInDialog"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/main_dialog.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/main_dialog.py deleted file mode 100644 index 46981efa20..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/main_dialog.py +++ /dev/null @@ -1,456 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import copy -import json - -from botbuilder.dialogs import ( - ComponentDialog, - DialogContext, - WaterfallDialog, - WaterfallStepContext, - DialogTurnResult, - ListStyle, -) -from botbuilder.dialogs.choices import Choice, FoundChoice -from botbuilder.dialogs.prompts import ( - PromptOptions, - ChoicePrompt, -) -from botbuilder.dialogs.skills import ( - SkillDialogOptions, - SkillDialog, - BeginSkillDialogOptions, -) -from botbuilder.core import ConversationState, MessageFactory, TurnContext -from botbuilder.core.skills import ConversationIdFactoryBase -from botbuilder.schema import Activity, ActivityTypes, InputHints, DeliveryModes -from botbuilder.integration.aiohttp.skills import SkillHttpClient - -from skills_configuration import SkillsConfiguration, DefaultConfig - -from dialogs.tangent_dialog import TangentDialog -from dialogs.sso.sso_dialog import SsoDialog - -SSO_DIALOG_PREFIX = "Sso" -ACTIVE_SKILL_PROPERTY_NAME = "MainDialog.ActiveSkillProperty" -DELIVERY_MODE_NAME = "MainDialog.DeliveryMode" -SELECTED_SKILL_KEY_NAME = "MainDialog.SelectedSkillKey" -JUST_FORWARD_THE_ACTIVITY = "JustForwardTurnContext.Activity" - -DELIVERY_MODE_PROMPT = "DeliveryModePrompt" -SKILL_GROUP_PROMPT = "SkillGroupPrompt" -SKILL_PROMPT = "SkillPrompt" -SKILL_ACTION_PROMPT = "SkillActionPrompt" - - -class MainDialog(ComponentDialog): - def __init__( - self, - conversation_state: ConversationState, - conversation_id_factory: ConversationIdFactoryBase, - skill_client: SkillHttpClient, - skills_config: SkillsConfiguration, - configuration: DefaultConfig, - ): - super().__init__(MainDialog.__name__) - - self._configuration = configuration - if not self._configuration: - raise TypeError( - "[MainDialog]: Missing parameter. configuration is required" - ) - - bot_id = self._configuration.APP_ID - - self._skills_config = skills_config - if not self._skills_config: - raise TypeError( - "[MainDialog]: Missing parameter. skills_config is required" - ) - - if not skill_client: - raise TypeError("[MainDialog]: Missing parameter. skill_client is required") - - if not conversation_state: - raise TypeError( - "[MainDialog]: Missing parameter. conversation_state is required" - ) - - if not conversation_id_factory: - raise TypeError( - "[MainDialog]: Missing parameter. conversation_id_factory is required" - ) - - # Use helper method to add SkillDialog instances for the configured skills. - self._add_skill_dialogs( - conversation_state, - conversation_id_factory, - skill_client, - skills_config, - bot_id, - ) - - # Create state property to track the active skill. - self.active_skill_property = conversation_state.create_property( - ACTIVE_SKILL_PROPERTY_NAME - ) - - # Register the tangent dialog for testing tangents and resume. - self.add_dialog(TangentDialog()) - - # Add ChoicePrompt to render available delivery modes. - self.add_dialog(ChoicePrompt(DELIVERY_MODE_PROMPT)) - - # Add ChoicePrompt to render available types of skill. - self.add_dialog(ChoicePrompt(SKILL_GROUP_PROMPT)) - - # Add ChoicePrompt to render available skills. - self.add_dialog(ChoicePrompt(SKILL_PROMPT)) - - # Add ChoicePrompt to render skill actions. - self.add_dialog(ChoicePrompt(SKILL_ACTION_PROMPT)) - - # Special case: register SSO dialogs for skills that support SSO actions. - self._add_sso_dialogs(self._configuration) - - # Add main waterfall dialog for this bot. - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self._select_delivery_mode_step, - self._select_skill_group_step, - self._select_skill_step, - self._select_skill_action_step, - self._call_skill_action_step, - self._final_step, - ], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def on_continue_dialog(self, inner_dc: DialogContext): - """ - This override is used to test the "abort" command to interrupt skills from the parent and - also to test the "tangent" command to start a tangent and resume a skill. - """ - - # This is an example on how to cancel a SkillDialog that is currently in progress from the parent bot. - active_skill = await self.active_skill_property.get(inner_dc.context) - activity = inner_dc.context.activity - - if ( - active_skill - and activity.type == ActivityTypes.message - and activity.text - and "abort" in activity.text.lower() - ): - # Cancel all dialogs when the user says abort. - # The SkillDialog automatically sends an EndOfConversation message to the skill to let the - # skill know that it needs to end its current dialogs, too. - await inner_dc.cancel_all_dialogs() - return await inner_dc.replace_dialog( - self.initial_dialog_id, - "Canceled! \n\n What delivery mode would you like to use?", - ) - - # Sample to test a tangent when in the middle of a skill conversation. - if ( - active_skill - and activity.type == ActivityTypes.message - and activity.text - and activity.text.lower() == "tangent" - ): - # Start tangent. - return await inner_dc.begin_dialog(TangentDialog.__name__) - - return await super().on_continue_dialog(inner_dc) - - async def _select_delivery_mode_step( - self, step_context: WaterfallStepContext - ) -> DialogTurnResult: - """ - Render a prompt to select the delivery mode to use. - """ - - # Create the PromptOptions with the delivery modes supported. - message_text = ( - str(step_context.options) - if step_context.options - else "What delivery mode would you like to use?" - ) - retry_message_text = ( - "That was not a valid choice, please select a valid delivery mode." - ) - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - retry_message_text, retry_message_text, InputHints.expecting_input - ), - choices=[ - Choice(DeliveryModes.normal.value), - Choice(DeliveryModes.expect_replies.value), - ], - ) - - # Prompt the user to select a delivery mode. - return await step_context.prompt(DELIVERY_MODE_PROMPT, options) - - async def _select_skill_group_step(self, step_context: WaterfallStepContext): - """ - Render a prompt to select the group of skills to use. - """ - - # Remember the delivery mode selected by the user. - step_context.values[DELIVERY_MODE_NAME] = step_context.result.value - - # Create the PromptOptions with the types of supported skills. - message_text = "What group of skills would you like to use?" - retry_message_text = ( - "That was not a valid choice, please select a valid skill group." - ) - - choices = [] - groups = [] - for skill in self._skills_config.SKILLS.values(): - if skill.group not in groups: - groups.append(skill.group) - choices.append(Choice(skill.group)) - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - retry_message_text, retry_message_text, InputHints.expecting_input - ), - choices=choices, - ) - - # Prompt the user to select a type of skill. - return await step_context.prompt(SKILL_GROUP_PROMPT, options) - - async def _select_skill_step( - self, step_context: WaterfallStepContext - ) -> DialogTurnResult: - """ - Render a prompt to select the skill to call. - """ - - skill_group = step_context.result.value - - # Create the PromptOptions from the skill configuration which contain the list of configured skills. - message_text = "What skill would you like to call?" - retry_message_text = "That was not a valid choice, please select a valid skill." - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - retry_message_text, retry_message_text, InputHints.expecting_input - ), - style=ListStyle.list_style, - choices=[ - Choice(skill.id) - for skill in self._skills_config.SKILLS.values() - if skill.group.lower().startswith(skill_group.lower()) - ], - ) - - # Prompt the user to select a skill. - return await step_context.prompt(SKILL_PROMPT, options) - - async def _select_skill_action_step(self, step_context: WaterfallStepContext): - """ - Render a prompt to select the begin action for the skill. - """ - - # Get the skill info based on the selected skill. - selected_skill_id = step_context.result.value - delivery_mode = str(step_context.values[DELIVERY_MODE_NAME]) - v3_bots = ["EchoSkillBotDotNetV3", "EchoSkillBotJSV3"] - - # Exclude v3 bots from ExpectReplies - if ( - delivery_mode == DeliveryModes.expect_replies - and selected_skill_id in v3_bots - ): - await step_context.context.send_activity( - MessageFactory.text( - "V3 Bots do not support 'expectReplies' delivery mode." - ) - ) - - # Restart setup dialog - return await step_context.replace_dialog(self.initial_dialog_id) - - selected_skill = next( - val - for key, val in self._skills_config.SKILLS.items() - if val.id == selected_skill_id - ) - - # Remember the skill selected by the user. - step_context.values[SELECTED_SKILL_KEY_NAME] = selected_skill - - skill_action_choices = [ - Choice(action) for action in selected_skill.get_actions() - ] - if len(skill_action_choices) == 1: - # The skill only supports one action (e.g. Echo), skip the prompt. - return await step_context.next( - FoundChoice(value=skill_action_choices[0].value, index=0, score=0) - ) - - # Create the PromptOptions with the actions supported by the selected skill. - message_text = f"Select an action to send to **{selected_skill.id}**." - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - choices=skill_action_choices, - ) - - # Prompt the user to select a skill action. - return await step_context.prompt(SKILL_ACTION_PROMPT, options) - - async def _call_skill_action_step(self, step_context: WaterfallStepContext): - """ - Starts the SkillDialog based on the user's selections. - """ - - selected_skill = step_context.values[SELECTED_SKILL_KEY_NAME] - - # Save active skill in state. - await self.active_skill_property.set(step_context.context, selected_skill) - - # Create the initial activity to call the skill. - skill_activity = self._create_begin_activity( - step_context.context, selected_skill.id, step_context.result.value - ) - - if skill_activity.name == "Sso": - # Special case, we start the SSO dialog to prepare the host to call the skill. - return await step_context.begin_dialog( - f"{SSO_DIALOG_PREFIX}{selected_skill.id}" - ) - - # We are manually creating the activity to send to the skill; ensure we add the ChannelData and Properties - # from the original activity so the skill gets them. - # Note: this is not necessary if we are just forwarding the current activity from context. - skill_activity.channel_data = step_context.context.activity.channel_data - skill_activity.additional_properties = ( - step_context.context.activity.additional_properties - ) - - # Create the BeginSkillDialogOptions and assign the activity to send. - skill_dialog_args = BeginSkillDialogOptions(activity=skill_activity) - if str(step_context.values[DELIVERY_MODE_NAME]) == DeliveryModes.expect_replies: - skill_dialog_args.activity.delivery_mode = DeliveryModes.expect_replies - - # Start the skillDialog instance with the arguments. - return await step_context.begin_dialog(selected_skill.id, skill_dialog_args) - - async def _final_step(self, step_context: WaterfallStepContext): - """ - The SkillDialog has ended, render the results (if any) and restart MainDialog. - """ - - active_skill = await self.active_skill_property.get(step_context.context) - - # Check if the skill returned any results and display them. - if step_context.result: - message = f'Skill "{active_skill.id}" invocation complete.' - message += f" Result: {json.dumps(step_context.result)}" - await step_context.context.send_activity( - MessageFactory.text(message, message, InputHints.ignoring_input) - ) - - # Clear the delivery mode selected by the user. - step_context.values[DELIVERY_MODE_NAME] = None - - # Clear the skill selected by the user. - step_context.values[SELECTED_SKILL_KEY_NAME] = None - - # Clear active skill in state. - await self.active_skill_property.delete(step_context.context) - - # Restart the main dialog with a different message the second time around. - return await step_context.replace_dialog( - self.initial_dialog_id, - f'Done with "{active_skill.id}". \n\n What delivery mode would you ' - f"like to use?", - ) - - def _add_skill_dialogs( - self, - conversation_state: ConversationState, - conversation_id_factory: ConversationIdFactoryBase, - skill_client: SkillHttpClient, - skills_config: SkillsConfiguration, - bot_id: str, - ): - """ - Helper method that creates and adds SkillDialog instances for the configured skills. - """ - - for skill_info in self._skills_config.SKILLS.values(): - # Create the dialog options. - skill_dialog_options = SkillDialogOptions( - bot_id=bot_id, - conversation_id_factory=conversation_id_factory, - skill_client=skill_client, - skill_host_endpoint=skills_config.SKILL_HOST_ENDPOINT, - conversation_state=conversation_state, - skill=skill_info, - ) - - # Add a SkillDialog for the selected skill. - self.add_dialog(SkillDialog(skill_dialog_options, skill_info.id)) - - def _create_begin_activity( - self, context: TurnContext, skill_id: str, selected_option: str - ): - if selected_option.lower() == JUST_FORWARD_THE_ACTIVITY.lower(): - # Note message activities also support input parameters but we are not using them in this example. - # Return a deep clone of the activity so we don't risk altering the original one - return copy.deepcopy(context.activity) - - # Get the begin activity from the skill instance. - activity: Activity = self._skills_config.SKILLS[skill_id].create_begin_activity( - selected_option - ) - - # We are manually creating the activity to send to the skill; ensure we add the ChannelData and Properties - # from the original activity so the skill gets them. - # Note: this is not necessary if we are just forwarding the current activity from context. - activity.channel_data = context.activity.channel_data - activity.additional_properties = context.activity.additional_properties - - return activity - - # Special case. - # SSO needs a dialog in the host to allow the user to sign in. - # We create and several SsoDialog instances for each skill that supports SSO. - def _add_sso_dialogs(self, configuration: DefaultConfig): - connection_name = configuration.SSO_CONNECTION_NAME - - for sso_skill_dialog in [ - skill_dialog - for skill_dialog in self._dialogs._dialogs.values() # pylint: disable=W0212 - if skill_dialog.id.startswith("WATERFALLSKILL") - ]: - self.add_dialog( - SsoDialog( - f"{SSO_DIALOG_PREFIX}{sso_skill_dialog.id}", - sso_skill_dialog, - connection_name, - ) - ) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/__init__.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/__init__.py deleted file mode 100644 index f489fd4fae..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .sso_dialog import SsoDialog -from .sso_signin_dialog import SsoSignInDialog - -__all__ = ["SsoDialog", "SsoSignInDialog"] diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_dialog.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_dialog.py deleted file mode 100644 index 1145358a33..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_dialog.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.dialogs import ( - ComponentDialog, - WaterfallDialog, - WaterfallStepContext, - Choice, - ChoicePrompt, - PromptOptions, - Dialog, - BeginSkillDialogOptions, -) -from botbuilder.core import MessageFactory -from botbuilder.dialogs.dialog_turn_result import DialogTurnResult -from botbuilder.dialogs.dialog_turn_status import DialogTurnStatus -from botbuilder.schema import Activity, ActivityTypes, InputHints - -from .sso_signin_dialog import SsoSignInDialog - - -class SsoDialog(ComponentDialog): - """ - Helps prepare the host for SSO operations and provides helpers to check the status and invoke the skill. - """ - - def __init__(self, dialog_id: str, sso_skill_dialog: Dialog, connection_name): - super().__init__(dialog_id) - - self._connection_name = connection_name - self.skill_dialog_id = sso_skill_dialog.id - - self.add_dialog(ChoicePrompt(ChoicePrompt.__name__)) - self.add_dialog(SsoSignInDialog(self._connection_name)) - self.add_dialog(sso_skill_dialog) - - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self.prompt_action_step, - self.handle_action_step, - self.prompt_final_step, - ], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def prompt_action_step(self, step_context: WaterfallStepContext): - message_text = "What SSO action do you want to perform?" - reprompt_message_text = ( - "That was not a valid choice, please select a valid choice." - ) - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text, InputHints.expecting_input - ), - choices=await self.get_prompt_choices(step_context), - ) - - # Prompt the user to select an SSO action. - return await step_context.prompt(ChoicePrompt.__name__, options) - - async def get_prompt_choices(self, step_context: WaterfallStepContext): - """ - Create the prompt choices based on the current sign in status - """ - - prompt_choices = list() - token = await step_context.context.adapter.get_user_token( - step_context.context, self._connection_name - ) - - if token is None: - prompt_choices.append(Choice("Login")) - - # Token exchange will fail when the host is not logged on and the skill should - # show a regular OAuthPrompt - prompt_choices.append(Choice("Call Skill (without SSO)")) - else: - prompt_choices.append(Choice("Logout")) - prompt_choices.append(Choice("Show token")) - prompt_choices.append(Choice("Call Skill (with SSO)")) - - prompt_choices.append(Choice("Back")) - - return prompt_choices - - async def handle_action_step(self, step_context: WaterfallStepContext): - action = str(step_context.result.value).lower() - - if action == "login": - return await step_context.begin_dialog(SsoSignInDialog.__name__) - - if action == "logout": - await step_context.context.adapter.sign_out_user( - step_context.context, self._connection_name - ) - await step_context.context.send_activity("You have been signed out.") - return await step_context.next(step_context.result) - - if action == "show token": - token = await step_context.context.adapter.get_user_token( - step_context.context, self._connection_name - ) - - if token is None: - await step_context.context.send_activity("User has no cached token.") - else: - await step_context.context.send_activity( - f"Here is your current SSO token: { token.token }" - ) - - return await step_context.next(step_context.result) - - if action in ["call skill (with sso)", "call skill (without sso)"]: - begin_skill_activity = Activity(type=ActivityTypes.event, name="Sso") - - return await step_context.begin_dialog( - self.skill_dialog_id, - BeginSkillDialogOptions(activity=begin_skill_activity), - ) - - if action == "back": - return DialogTurnResult(DialogTurnStatus.Complete) - - # This should never be hit since the previous prompt validates the choice - raise Exception(f"Unrecognized action: {action}") - - async def prompt_final_step(self, step_context: WaterfallStepContext): - # Restart the dialog (we will exit when the user says end) - return await step_context.replace_dialog(self.initial_dialog_id) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_signin_dialog.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_signin_dialog.py deleted file mode 100644 index 242679dc36..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/sso/sso_signin_dialog.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.dialogs import ( - ComponentDialog, - WaterfallDialog, - WaterfallStepContext, - OAuthPrompt, - OAuthPromptSettings, -) - - -class SsoSignInDialog(ComponentDialog): - def __init__(self, connection_name: str): - super().__init__(SsoSignInDialog.__name__) - - self.add_dialog( - OAuthPrompt( - OAuthPrompt.__name__, - OAuthPromptSettings( - connection_name=connection_name, - text=f"Sign in to the host bot using AAD for SSO and connection {connection_name}", - title="Sign In", - timeout=60000, - ), - ) - ) - - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self.signin_step, - self.display_token, - ], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def signin_step(self, step_context: WaterfallStepContext): - return await step_context.begin_dialog(OAuthPrompt.__name__) - - async def display_token(self, step_context: WaterfallStepContext): - sso_token = step_context.result - if sso_token: - if isinstance(sso_token, dict): - token = sso_token.get("token") - else: - token = sso_token.token - - await step_context.context.send_activity(f"Here is your token: {token}") - - else: - await step_context.context.send_activity("No token was provided.") - - return await step_context.end_dialog() diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/tangent_dialog.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/tangent_dialog.py deleted file mode 100644 index 957aba021b..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/dialogs/tangent_dialog.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.dialogs import ( - ComponentDialog, - WaterfallDialog, - WaterfallStepContext, - TextPrompt, - PromptOptions, -) -from botbuilder.core import MessageFactory -from botbuilder.schema import InputHints - - -class TangentDialog(ComponentDialog): - """ - A simple waterfall dialog used to test triggering tangents from "MainDialog". - """ - - def __init__(self): - super().__init__(TangentDialog.__name__) - - self.add_dialog(TextPrompt(TextPrompt.__name__)) - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, [self._step_1, self._step_2, self._end_step] - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def _step_1(self, step_context: WaterfallStepContext): - message_text = "Tangent step 1 of 2, say something." - prompt_message = MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ) - return await step_context.prompt( - TextPrompt.__name__, PromptOptions(prompt=prompt_message) - ) - - async def _step_2(self, step_context: WaterfallStepContext): - message_text = "Tangent step 2 of 2, say something." - prompt_message = MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ) - return await step_context.prompt( - TextPrompt.__name__, PromptOptions(prompt=prompt_message) - ) - - async def _end_step(self, step_context: WaterfallStepContext): - return await step_context.end_dialog() diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/helpers/dialog_helper.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/helpers/dialog_helper.py deleted file mode 100644 index 6b2646b0ba..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/helpers/dialog_helper.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.core import StatePropertyAccessor, TurnContext -from botbuilder.dialogs import Dialog, DialogSet, DialogTurnStatus - - -class DialogHelper: - @staticmethod - async def run_dialog( - dialog: Dialog, turn_context: TurnContext, accessor: StatePropertyAccessor - ): - dialog_set = DialogSet(accessor) - dialog_set.add(dialog) - - dialog_context = await dialog_set.create_context(turn_context) - results = await dialog_context.continue_dialog() - if results.status == DialogTurnStatus.Empty: - await dialog_context.begin_dialog(dialog.id) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/requirements.txt b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/requirements.txt deleted file mode 100644 index 02460b14f9..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -botbuilder-integration-aiohttp>=4.13.0 -botbuilder-dialogs>=4.13.0 -python-dotenv~=0.15.0 diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skill_conversation_id_factory.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skill_conversation_id_factory.py deleted file mode 100644 index 06c5e5a2f5..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skill_conversation_id_factory.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import Union - -from botbuilder.core import Storage, TurnContext -from botbuilder.core.skills import ( - ConversationIdFactoryBase, - SkillConversationIdFactoryOptions, - SkillConversationReference, -) -from botbuilder.schema import ConversationReference - - -class SkillConversationIdFactory(ConversationIdFactoryBase): - def __init__(self, storage: Storage): - if not storage: - raise TypeError("storage can't be None") - - self._storage = storage - - async def create_skill_conversation_id( - self, - options_or_conversation_reference: Union[ - SkillConversationIdFactoryOptions, ConversationReference - ], - ) -> str: - if not options_or_conversation_reference: - raise TypeError("Need options or conversation reference") - - if not isinstance( - options_or_conversation_reference, SkillConversationIdFactoryOptions - ): - raise TypeError( - "This SkillConversationIdFactory can only handle SkillConversationIdFactoryOptions" - ) - - options = options_or_conversation_reference - - # Create the storage key based on the SkillConversationIdFactoryOptions. - conversation_reference = TurnContext.get_conversation_reference( - options.activity - ) - skill_conversation_id = ( - f"{conversation_reference.conversation.id}" - f"-{options.bot_framework_skill.id}" - f"-{conversation_reference.channel_id}" - f"-skillconvo" - ) - - # Create the SkillConversationReference instance. - skill_conversation_reference = SkillConversationReference( - conversation_reference=conversation_reference, - oauth_scope=options.from_bot_oauth_scope, - ) - - # Store the SkillConversationReference using the skill_conversation_id as a key. - skill_conversation_info = {skill_conversation_id: skill_conversation_reference} - await self._storage.write(skill_conversation_info) - - # Return the generated skill_conversation_id (that will be also used as the conversation ID to call the skill). - return skill_conversation_id - - async def get_conversation_reference( - self, skill_conversation_id: str - ) -> Union[SkillConversationReference, ConversationReference]: - if not skill_conversation_id: - raise TypeError("skill_conversation_id can't be None") - - # Get the SkillConversationReference from storage for the given skill_conversation_id. - skill_conversation_info = await self._storage.read([skill_conversation_id]) - - return skill_conversation_info.get(skill_conversation_id) - - async def delete_conversation_reference(self, skill_conversation_id: str): - await self._storage.delete([skill_conversation_id]) diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/echo_skill.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/echo_skill.py deleted file mode 100644 index 560f0adb14..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/echo_skill.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from enum import Enum -from botbuilder.schema import Activity -from skills.skill_definition import SkillDefinition - - -class EchoSkill(SkillDefinition): - class SkillAction(str, Enum): - MESSAGE = "Message" - - def get_actions(self): - return self.SkillAction - - def create_begin_activity(self, action_id: str): - if action_id not in self.SkillAction: - raise Exception(f'Unable to create begin activity for "${action_id}".') - - # We only support one activity for Echo so no further checks are needed - activity = Activity.create_message_activity() - activity.name = self.SkillAction.MESSAGE.value - activity.text = "Begin the Echo Skill" - - return activity diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/skill_definition.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/skill_definition.py deleted file mode 100644 index 3e0d43e498..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/skill_definition.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.core.skills import BotFrameworkSkill - - -class SkillDefinition(BotFrameworkSkill): - """ - Extends BotFrameworkSkill and provides methods to return the actions and the begin activity - to start a skill. - This class also exposes a group property to render skill groups and narrow down the available - options. - Remarks: This is just a temporary implementation, ideally, this should be replaced by logic that - parses a manifest and creates what's needed. - """ - - def __init__(self, id: str = None, group: str = None): - super().__init__(id=id) - self.group = group - - def get_actions(self): - raise NotImplementedError("[SkillDefinition]: Method not implemented") - - def create_begin_activity(self, action_id: str): - raise NotImplementedError("[SkillDefinition]: Method not implemented") diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/teams_skill.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/teams_skill.py deleted file mode 100644 index 6631c869ea..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/teams_skill.py +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from enum import Enum -from botbuilder.schema import Activity -from skills.skill_definition import SkillDefinition - - -class TeamsSkill(SkillDefinition): - class SkillAction(str, Enum): - TEAMS_TASK_MODULE = "TeamsTaskModule" - TEAMS_CARD_ACTION = "TeamsCardAction" - TEAMS_CONVERSATION = "TeamsConversation" - CARDS = "Cards" - PROACTIVE = "Proactive" - ATTACHMENT = "Attachment" - AUTH = "Auth" - SSO = "Sso" - ECHO = "Echo" - FILE_UPLOAD = "FileUpload" - DELETE = "Delete" - UPDATE = "Update" - - def get_actions(self): - return self.SkillAction - - def create_begin_activity(self, action_id: str): - if action_id not in self.SkillAction: - raise Exception(f'Unable to create begin activity for "${action_id}".') - - # We don't support special parameters in these skills so a generic event with the - # right name will do in this case. - activity = Activity.create_event_activity() - activity.name = action_id - - return activity diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/waterfall_skill.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/waterfall_skill.py deleted file mode 100644 index 34db3b6abc..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills/waterfall_skill.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from enum import Enum -from botbuilder.schema import Activity -from skills.skill_definition import SkillDefinition - - -class WaterfallSkill(SkillDefinition): - class SkillAction(str, Enum): - CARDS = "Cards" - PROACTIVE = "Proactive" - AUTH = "Auth" - MESSAGE_WITH_ATTACHMENT = "MessageWithAttachment" - SSO = "Sso" - FILE_UPLOAD = "FileUpload" - ECHO = "Echo" - DELETE = "Delete" - UPDATE = "Update" - - def get_actions(self): - return self.SkillAction - - def create_begin_activity(self, action_id: str): - if action_id not in self.SkillAction: - raise Exception(f'Unable to create begin activity for "${action_id}".') - - # We don't support special parameters in these skills so a generic event with the - # right name will do in this case. - activity = Activity.create_event_activity() - activity.name = action_id - - return activity diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills_configuration.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills_configuration.py deleted file mode 100644 index 1b29374ffb..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/skills_configuration.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os -from typing import Dict - -from botbuilder.dialogs import ObjectPath -from dotenv import load_dotenv - -from skills.skill_definition import SkillDefinition -from skills.waterfall_skill import WaterfallSkill -from skills.echo_skill import EchoSkill -from skills.teams_skill import TeamsSkill - -load_dotenv() - - -class DefaultConfig: - """ - Bot Default Configuration - """ - - PORT = 37020 - APP_ID = os.getenv("MicrosoftAppId") - APP_PASSWORD = os.getenv("MicrosoftAppPassword") - SSO_CONNECTION_NAME = os.getenv("SsoConnectionName") - SSO_CONNECTION_NAME_TEAMS = os.getenv("SsoConnectionNameTeams") - - -class SkillsConfiguration: - """ - Bot Skills Configuration - A helper class that loads Skills information from configuration - Remarks: This class loads the skill settings from env and casts them into derived - types of SkillDefinition so we can render prompts with the skills and in their - groups. - """ - - SKILL_HOST_ENDPOINT = os.getenv("SkillHostEndpoint") - SKILLS: Dict[str, SkillDefinition] = dict() - - def __init__(self): - skills_data = dict() - skill_variable = [x for x in os.environ if x.lower().startswith("skill_")] - - for val in skill_variable: - names = val.split("_") - bot_id = names[1] - attr = names[2] - - if bot_id not in skills_data: - skills_data[bot_id] = dict() - - if attr.lower() == "appid": - skills_data[bot_id]["app_id"] = os.getenv(val) - elif attr.lower() == "endpoint": - skills_data[bot_id]["skill_endpoint"] = os.getenv(val) - elif attr.lower() == "group": - skills_data[bot_id]["group"] = os.getenv(val) - else: - raise ValueError( - f"[SkillsConfiguration]: Invalid environment variable declaration {attr}" - ) - - for skill_id, skill_value in skills_data.items(): - definition = SkillDefinition(id=skill_id, group=skill_value["group"]) - definition.app_id = skill_value["app_id"] - definition.skill_endpoint = skill_value["skill_endpoint"] - self.SKILLS[skill_id] = self.create_skill_definition(definition) - - # Note: we hard code this for now, we should dynamically create instances based on the manifests. - # For now, this code creates a strong typed version of the SkillDefinition based on the skill group - # and copies the info from env into it. - @staticmethod - def create_skill_definition(skill: SkillDefinition): - if skill.group.lower() == ("echo"): - skill_definition = ObjectPath.assign(EchoSkill(), skill) - - elif skill.group.lower() == ("waterfall"): - skill_definition = ObjectPath.assign(WaterfallSkill(), skill) - - elif skill.group.lower() == ("teams"): - skill_definition = ObjectPath.assign(TeamsSkill(), skill) - - else: - raise Exception(f"Unable to find definition class for {skill.id}.") - - return skill_definition diff --git a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/token_exchange_skill_handler.py b/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/token_exchange_skill_handler.py deleted file mode 100644 index 1da847ef5f..0000000000 --- a/tests/functional/Bots/Python/Consumers/CodeFirst/WaterfallHostBot/token_exchange_skill_handler.py +++ /dev/null @@ -1,199 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import traceback -from uuid import uuid4 -from typing import Union - -from botbuilder.core import Bot, TurnContext -from botbuilder.core.card_factory import ContentTypes -from botbuilder.core.skills import ( - SkillHandler, - BotFrameworkSkill, -) -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from botbuilder.schema import ( - ResourceResponse, - ActivityTypes, - SignInConstants, - TokenExchangeInvokeRequest, -) -from botframework.connector.auth import ( - CredentialProvider, - AuthenticationConfiguration, - ClaimsIdentity, - Activity, - JwtTokenValidation, -) -from botframework.connector.token_api.models import TokenExchangeRequest - -from adapter_with_error_handler import AdapterWithErrorHandler -from skill_conversation_id_factory import SkillConversationIdFactory -from skills.skill_definition import SkillDefinition -from skills_configuration import SkillsConfiguration, DefaultConfig - - -class TokenExchangeSkillHandler(SkillHandler): - def __init__( - self, - adapter: AdapterWithErrorHandler, - bot: Bot, - configuration: DefaultConfig, - conversation_id_factory: SkillConversationIdFactory, - skills_config: SkillsConfiguration, - skill_client: SkillHttpClient, - credential_provider: CredentialProvider, - auth_configuration: AuthenticationConfiguration, - ): - super().__init__( - adapter, - bot, - conversation_id_factory, - credential_provider, - auth_configuration, - ) - self._token_exchange_provider = adapter - if not self._token_exchange_provider: - raise ValueError( - f"{self._token_exchange_provider} does not support token exchange" - ) - - self._configuration = configuration - self._skills_config = skills_config - self._skill_client = skill_client - self._conversation_id_factory = conversation_id_factory - self._bot_id = configuration.APP_ID - - async def on_send_to_conversation( - self, claims_identity: ClaimsIdentity, conversation_id: str, activity: Activity, - ) -> ResourceResponse: - if await self._intercept_oauth_cards(claims_identity, activity): - return ResourceResponse(id=str(uuid4())) - - return await super().on_send_to_conversation( - claims_identity, conversation_id, activity - ) - - async def on_reply_to_activity( - self, - claims_identity: ClaimsIdentity, - conversation_id: str, - activity_id: str, - activity: Activity, - ) -> ResourceResponse: - if await self._intercept_oauth_cards(claims_identity, activity): - return ResourceResponse(id=str(uuid4())) - - return await super().on_reply_to_activity( - claims_identity, conversation_id, activity_id, activity - ) - - def _get_calling_skill( - self, claims_identity: ClaimsIdentity - ) -> Union[SkillDefinition, None]: - app_id = JwtTokenValidation.get_app_id_from_claims(claims_identity.claims) - - if not app_id: - return None - - return next( - skill - for skill in self._skills_config.SKILLS.values() - if skill.app_id == app_id - ) - - async def _intercept_oauth_cards( - self, claims_identity: ClaimsIdentity, activity: Activity - ) -> bool: - if activity.attachments: - oauth_card_attachment = next( - ( - attachment - for attachment in activity.attachments - if attachment.content_type == ContentTypes.oauth_card - ), - None, - ) - - if oauth_card_attachment: - target_skill = self._get_calling_skill(claims_identity) - if target_skill: - oauth_card = oauth_card_attachment.content - token_exchange_resource = oauth_card.get( - "TokenExchangeResource" - ) or oauth_card.get("tokenExchangeResource") - if token_exchange_resource: - context = TurnContext(self._adapter, activity) - context.turn_state["BotIdentity"] = claims_identity - - # We need to know what connection name to use for the token exchange so we figure that out here - connection_name = ( - self._configuration.SSO_CONNECTION_NAME - if target_skill.group == "Waterfall" - else self._configuration.SSO_CONNECTION_NAME_TEAMS - ) - - if not connection_name: - raise ValueError("The SSO connection name cannot be null.") - - # AAD token exchange - try: - uri = token_exchange_resource.get("uri") - result = await self._token_exchange_provider.exchange_token( - context, - connection_name, - activity.recipient.id, - TokenExchangeRequest(uri=uri), - ) - - if result.token: - # If token above is null, then SSO has failed and hence we return false. - # If not, send an invoke to the skill with the token. - return await self._send_token_exchange_invoke_to_skill( - incoming_activity=activity, - connection_name=oauth_card.get("connectionName"), - resource_id=token_exchange_resource.get("id"), - token=result.token, - target_skill=target_skill, - ) - - except Exception as exception: - print(f"Unable to exchange token: {exception}") - traceback.print_exc() - return False - - return False - - async def _send_token_exchange_invoke_to_skill( - self, - incoming_activity: Activity, - resource_id: str, - token: str, - connection_name: str, - target_skill: BotFrameworkSkill, - ) -> bool: - activity = incoming_activity.create_reply() - activity.type = ActivityTypes.invoke - activity.name = SignInConstants.token_exchange_operation_name - activity.value = TokenExchangeInvokeRequest( - id=resource_id, token=token, connection_name=connection_name - ) - skill_conversation_reference = await self._conversation_id_factory.get_conversation_reference( - incoming_activity.conversation.id - ) - activity.conversation = ( - skill_conversation_reference.conversation_reference.conversation - ) - activity.service_url = ( - skill_conversation_reference.conversation_reference.service_url - ) - - # Route the activity to the skill - response = await self._skill_client.post_activity_to_skill( - from_bot_id=self._bot_id, - to_skill=target_skill, - service_url=self._skills_config.SKILL_HOST_ENDPOINT, - activity=activity, - ) - - return 200 <= response.status <= 299 diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/app.py b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/app.py deleted file mode 100644 index 5a87c33513..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/app.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import json -import sys -import traceback -from datetime import datetime - -from aiohttp import web -from aiohttp.web import Request, Response -from botbuilder.core import ( - BotFrameworkAdapter, - BotFrameworkAdapterSettings, - TurnContext, - MessageFactory, -) -from botbuilder.schema import Activity, ActivityTypes, InputHints -from botframework.connector.auth import AuthenticationConfiguration - -from bots import EchoBot -from config import DefaultConfig -from authentication import AllowedCallersClaimsValidator -from http import HTTPStatus - -CONFIG = DefaultConfig() -CLAIMS_VALIDATOR = AllowedCallersClaimsValidator(frozenset(CONFIG.ALLOWED_CALLERS)) -AUTH_CONFIG = AuthenticationConfiguration( - claims_validator=CLAIMS_VALIDATOR.validate_claims -) -# Create adapter. -# See https://aka.ms/about-bot-adapter to learn more about how bots work. -SETTINGS = BotFrameworkAdapterSettings( - app_id=CONFIG.APP_ID, - app_password=CONFIG.APP_PASSWORD, - auth_configuration=AUTH_CONFIG, -) -ADAPTER = BotFrameworkAdapter(SETTINGS) - -# Catch-all for errors. -async def on_error(context: TurnContext, error: Exception): - # This check writes out errors to console log .vs. app insights. - # NOTE: In production environment, you should consider logging this to Azure - # application insights. - print(f"\n [on_turn_error] unhandled error: {error}", file=sys.stderr) - traceback.print_exc() - - try: - exc_info = sys.exc_info() - stack = traceback.format_exception(*exc_info) - - # Send a message to the user - error_message_text = "The skill encountered an error or bug." - error_message = MessageFactory.text( - f"{error_message_text}\r\n{error}\r\n{stack}", - error_message_text, - InputHints.ignoring_input, - ) - error_message.value = {"message": error, "stack": stack} - await context.send_activity(error_message) - - error_message_text = ( - "To continue to run this bot, please fix the bot source code." - ) - error_message = MessageFactory.text( - error_message_text, error_message_text, InputHints.expecting_input - ) - await context.send_activity(error_message) - - # Send a trace activity, which will be displayed in Bot Framework Emulator - if context.activity.channel_id == "emulator": - # Create a trace activity that contains the error object - trace_activity = Activity( - label="TurnError", - name="on_turn_error Trace", - timestamp=datetime.utcnow(), - type=ActivityTypes.trace, - value=f"{error}", - value_type="https://www.botframework.com/schemas/error", - ) - await context.send_activity(trace_activity) - - # Send and EndOfConversation activity to the skill caller with the error to end the conversation and let the - # caller decide what to do. Send a trace activity if we're talking to the Bot Framework Emulator - end_of_conversation = Activity( - type=ActivityTypes.end_of_conversation, code="SkillError", text=f"{error}" - ) - await context.send_activity(end_of_conversation) - except Exception as exception: - print( - f"\n Exception caught on on_error : {exception}", file=sys.stderr, - ) - traceback.print_exc() - - -ADAPTER.on_turn_error = on_error - -# Create Bot -BOT = EchoBot() - -# Listen for incoming requests on /api/messages -async def messages(req: Request) -> Response: - # Main bot message handler. - if "application/json" in req.headers["Content-Type"]: - body = await req.json() - else: - return Response(status=HTTPStatus.UNSUPPORTED_MEDIA_TYPE) - - activity = Activity().deserialize(body) - auth_header = req.headers["Authorization"] if "Authorization" in req.headers else "" - - try: - response = await ADAPTER.process_activity(activity, auth_header, BOT.on_turn) - # DeliveryMode => Expected Replies - if response: - body = json.dumps(response.body) - return Response(status=response.status, body=body) - - # DeliveryMode => Normal - return Response(status=HTTPStatus.CREATED) - except Exception as exception: - raise exception - - -APP = web.Application() -APP.router.add_post("/api/messages", messages) - -# simple way of exposing the manifest for dev purposes. -APP.router.add_static("/manifests", "./manifests/") - - -if __name__ == "__main__": - try: - web.run_app(APP, host="localhost", port=CONFIG.PORT) - except Exception as error: - raise error diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/__init__.py deleted file mode 100644 index b6383973c8..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .allowed_callers_claims_validator import AllowedCallersClaimsValidator - -__all__ = ["AllowedCallersClaimsValidator"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/allowed_callers_claims_validator.py b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/allowed_callers_claims_validator.py deleted file mode 100644 index d790e36f34..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/authentication/allowed_callers_claims_validator.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botframework.connector.auth import JwtTokenValidation, SkillValidation - - -class AllowedCallersClaimsValidator(): - """ - Sample claims validator that loads an allowed list from configuration if present and checks - that requests are coming from allowed parent bots. - """ - - def __init__(self, allowed_callers: frozenset): - self.allowed_callers = allowed_callers - - # Load the AppIds for the configured callers (we will only allow responses from parent bots we have configured). - # DefaultConfig.ALLOWED_CALLERS is the list of parent bot Ids that are allowed to access the skill. - # To add a new parent bot simply go to the config.py file and add - # the parent bot's Microsoft AppId to the array under AllowedCallers, e.g.: - # AllowedCallers=["195bd793-4319-4a84-a800-386770c058b2","38c74e7a-3d01-4295-8e66-43dd358920f8"] - async def validate_claims(self, claims: dict): - if SkillValidation.is_skill_claim(claims) and self.allowed_callers: - # Check that the appId claim in the skill request is in the list of skills configured for this bot. - app_id = JwtTokenValidation.get_app_id_from_claims(claims) - if app_id not in self.allowed_callers: - raise ValueError( - f'Received a request from an application with an appID of "{ app_id }". To enable requests' - ' from this bot, add the id to your configuration file.' - ) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/__init__.py deleted file mode 100644 index f95fbbbadd..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .echo_bot import EchoBot - -__all__ = ["EchoBot"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/echo_bot.py b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/echo_bot.py deleted file mode 100644 index 4c69deb366..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/bots/echo_bot.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.core import ActivityHandler, MessageFactory, TurnContext -from botbuilder.schema import Activity, ActivityTypes, EndOfConversationCodes - -class EchoBot(ActivityHandler): - async def on_message_activity(self, turn_context: TurnContext): - if "end" in turn_context.activity.text or "stop" in turn_context.activity.text: - # Send End of conversation at the end. - await turn_context.send_activity( - MessageFactory.text("Ending conversation from the skill...") - ) - - end_of_conversation = Activity(type=ActivityTypes.end_of_conversation) - end_of_conversation.code = EndOfConversationCodes.completed_successfully - await turn_context.send_activity(end_of_conversation) - else: - await turn_context.send_activity( - MessageFactory.text(f"Echo: {turn_context.activity.text}") - ) - await turn_context.send_activity( - MessageFactory.text( - f'Say "end" or "stop" and I\'ll end the conversation and back to the parent.' - ) - ) - - async def on_end_of_conversation_activity(self, turn_context: TurnContext): - # This will be called if the host bot is ending the conversation. Sending additional messages should be - # avoided as the conversation may have been deleted. - # Perform cleanup of resources if needed. - pass diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/config.py b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/config.py deleted file mode 100644 index 8de1e0a9b4..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/config.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os - -""" Bot Configuration """ - -class DefaultConfig: - """ Bot Configuration """ - - PORT = 37400 - APP_ID = os.environ.get("MicrosoftAppId", "") - APP_PASSWORD = os.environ.get("MicrosoftAppPassword", "") - # If ALLOWED_CALLERS is empty, any bot can call this Skill. Add MicrosoftAppIds to restrict callers to only those specified. - # Example: os.environ.get("AllowedCallers", ["54d3bb6a-3b6d-4ccd-bbfd-cad5c72fb53a", "3851a47b-53ed-4d29-b878-6e941da61e98"]) - ALLOWED_CALLERS = os.environ.get("AllowedCallers", []) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/manifests/echoskillbot-manifest-1.0.json b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/manifests/echoskillbot-manifest-1.0.json deleted file mode 100644 index 9e995c0101..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/manifests/echoskillbot-manifest-1.0.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "https://schemas.botframework.com/schemas/skills/v2.1/skill-manifest.json", - "$id": "EchoSkillBotPython", - "name": "EchoSkillBotPython", - "version": "1.0", - "description": "This is a skill for echoing what the user sent to the bot (using Python).", - "publisherName": "Microsoft", - "privacyUrl": "https://microsoft.com/privacy", - "copyright": "Copyright (c) Microsoft Corporation. All rights reserved.", - "license": "https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE", - "tags": [ - "echo" - ], - "endpoints": [ - { - "name": "default", - "protocol": "BotFrameworkV3", - "description": "Localhost endpoint for the skill (on port 37400)", - "endpointUrl": "http://localhost:37400/api/messages", - "msAppId": "00000000-0000-0000-0000-000000000000" - } - ] -} diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/requirements.txt b/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/requirements.txt deleted file mode 100644 index 3658c09bb6..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/EchoSkillBot/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -botbuilder-integration-aiohttp>=4.13.0 diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.env b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.env deleted file mode 100644 index e83f3f1d74..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.env +++ /dev/null @@ -1,11 +0,0 @@ -MicrosoftAppId= -MicrosoftAppPassword= -ConnectionName=TestOAuthProvider -SsoConnectionName= -ChannelService= -AllowedCallers=* -SkillHostEndpoint=http://localhost:37420/api/skills - -EchoSkillInfo_id=EchoSkillBot -EchoSkillInfo_appId= -EchoSkillInfo_skillEndpoint=http://localhost:37400/api/messages diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.pylintrc b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.pylintrc deleted file mode 100644 index 6e8d5976b6..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/.pylintrc +++ /dev/null @@ -1,582 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-whitelist= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=1 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Specify a configuration file. -#rcfile= - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape, - bad-continuation, - duplicate-code, - redefined-outer-name, - missing-docstring, - too-many-instance-attributes, - too-few-public-methods, - redefined-builtin, - too-many-arguments, - no-self-use, - fixme, - broad-except, - bare-except, - too-many-public-methods, - cyclic-import, - too-many-locals, - too-many-function-args, - too-many-return-statements, - import-error, - no-name-in-module, - too-many-branches - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit - - -[LOGGING] - -# Format style used to check logging format string. `old` means using % -# formatting, while `new` is for `{}` formatting. -logging-format-style=old - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package.. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. -spelling-store-unknown-words=no - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=120 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma, - dict-separator - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. -#class-attribute-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=no - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. -#variable-rgx= - - -[STRING] - -# This flag controls whether the implicit-str-concat-in-sequence should -# generate a warning on implicit string concatenation in sequences defined over -# several lines. -check-str-concat-over-line-jumps=no - - -[IMPORTS] - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules=optparse,tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled). -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled). -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[DESIGN] - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement. -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "BaseException, Exception". -overgeneral-exceptions=BaseException, - Exception diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/app.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/app.py deleted file mode 100644 index 354fe400a8..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/app.py +++ /dev/null @@ -1,176 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os -from datetime import datetime -from http import HTTPStatus -from typing import Dict -from aiohttp import web -from aiohttp.web import Request, Response, json_response -from botbuilder.core import ( - BotFrameworkAdapterSettings, - ConversationState, - MemoryStorage, - TurnContext, -) -from botbuilder.core.skills import SkillHandler -from botbuilder.core.integration import ( - aiohttp_channel_service_routes, - aiohttp_error_middleware, -) -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from botbuilder.schema import Activity -from botframework.connector.auth import ( - AuthenticationConfiguration, - SimpleCredentialProvider, -) -from authentication import AllowedCallersClaimsValidator -from bots import SkillBot -from config import DefaultConfig -from dialogs import ActivityRouterDialog -from dialogs.proactive import ContinuationParameters -from middleware import SsoSaveStateMiddleware -from skill_conversation_id_factory import SkillConversationIdFactory -from skill_adapter_with_error_handler import AdapterWithErrorHandler - -CONFIG = DefaultConfig() - -# Create MemoryStorage and ConversationState. -MEMORY = MemoryStorage() -CONVERSATION_STATE = ConversationState(MEMORY) - -# Create the conversationIdFactory. -CONVERSATION_ID_FACTORY = SkillConversationIdFactory(MEMORY) - -# Create the credential provider. -CREDENTIAL_PROVIDER = SimpleCredentialProvider(CONFIG.APP_ID, CONFIG.APP_PASSWORD) - -VALIDATOR = AllowedCallersClaimsValidator(CONFIG).claims_validator -AUTH_CONFIG = AuthenticationConfiguration(claims_validator=VALIDATOR) - -# Create adapter. -# See https://aka.ms/about-bot-adapter to learn more about how bots work. -SETTINGS = BotFrameworkAdapterSettings( - app_id=CONFIG.APP_ID, - app_password=CONFIG.APP_PASSWORD, - auth_configuration=AUTH_CONFIG, -) -ADAPTER = AdapterWithErrorHandler(SETTINGS, CONVERSATION_STATE) - -ADAPTER.use(SsoSaveStateMiddleware(CONVERSATION_STATE)) - -# Create the skill client. -SKILL_CLIENT = SkillHttpClient(CREDENTIAL_PROVIDER, CONVERSATION_ID_FACTORY) - -CONTINUATION_PARAMETERS_STORE: Dict[str, ContinuationParameters] = dict() - -# Create the main dialog. -DIALOG = ActivityRouterDialog( - configuration=CONFIG, - conversation_state=CONVERSATION_STATE, - conversation_id_factory=CONVERSATION_ID_FACTORY, - skill_client=SKILL_CLIENT, - continuation_parameters_store=CONTINUATION_PARAMETERS_STORE, -) - -# Create the bot that will handle incoming messages. -BOT = SkillBot(CONFIG, CONVERSATION_STATE, DIALOG) -SKILL_HANDLER = SkillHandler( - ADAPTER, BOT, CONVERSATION_ID_FACTORY, CREDENTIAL_PROVIDER, AUTH_CONFIG -) - -# Listen for incoming requests on /api/messages -async def messages(req: Request) -> Response: - # Main bot message handler. - if "application/json" in req.headers["Content-Type"]: - body = await req.json() - else: - return Response(status=HTTPStatus.UNSUPPORTED_MEDIA_TYPE) - - activity = Activity().deserialize(body) - auth_header = req.headers["Authorization"] if "Authorization" in req.headers else "" - - try: - website_hostname = os.getenv("WEBSITE_HOSTNAME") - if website_hostname: - CONFIG.SERVER_URL = f"https://{website_hostname}" - else: - CONFIG.SERVER_URL = f"{req.scheme}://{req.host}" - - response = await ADAPTER.process_activity(activity, auth_header, BOT.on_turn) - # DeliveryMode => Expected Replies - if response: - return json_response(data=response.body, status=response.status) - - # DeliveryMode => Normal - return Response(status=HTTPStatus.CREATED) - except Exception as exception: - raise exception - - -# Listen for incoming requests on /api/notify -async def notify(req: Request) -> Response: - error = "" - user = req.query.get("user") - - continuation_parameters = CONTINUATION_PARAMETERS_STORE.get(user) - - if not continuation_parameters: - return Response( - content_type="text/html", - status=HTTPStatus.OK, - body=f"

No messages sent

" - f"
There are no conversations registered to receive proactive messages for { user }.", - ) - - try: - - async def callback(context: TurnContext): - await context.send_activity(f"Got proactive message for user: { user }") - await BOT.on_turn(context) - - await ADAPTER.continue_conversation( - continuation_parameters.conversation_reference, - callback, - CONFIG.APP_ID, - continuation_parameters.claims_identity, - continuation_parameters.oauth_scope, - ) - except Exception as err: - error = err - - return Response( - content_type="text/html", - status=HTTPStatus.OK, - body=f"

Proactive messages have been sent

" - f"
Timestamp: { datetime.utcnow() }
Exception: { error }", - ) - - -# Listen for incoming requests on /api/music -async def music(req: Request) -> web.FileResponse: # pylint: disable=unused-argument - file_path = os.path.join(os.getcwd(), "dialogs/cards/files/music.mp3") - return web.FileResponse(file_path) - - -APP = web.Application(middlewares=[aiohttp_error_middleware]) -APP.router.add_post("/api/messages", messages) -APP.router.add_routes(aiohttp_channel_service_routes(SKILL_HANDLER, "/api/skills")) - -# Simple way of exposing the manifest for dev purposes. -APP.router.add_static("/manifests", "./manifests/") - -# Simple way of exposing images folder. -APP.router.add_static("/images", "./images/") - -# Listen for incoming requests. -APP.router.add_get("/api/music", music) - -# Listen for incoming notifications and send proactive messages to users. -APP.router.add_get("/api/notify", notify) - -if __name__ == "__main__": - try: - web.run_app(APP, host="localhost", port=CONFIG.PORT) - except Exception as error: - raise error diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/__init__.py deleted file mode 100644 index b6383973c8..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .allowed_callers_claims_validator import AllowedCallersClaimsValidator - -__all__ = ["AllowedCallersClaimsValidator"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/allowed_callers_claims_validator.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/allowed_callers_claims_validator.py deleted file mode 100644 index b2ca42c61f..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/authentication/allowed_callers_claims_validator.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import Awaitable, Callable, Dict, List -from botframework.connector.auth import JwtTokenValidation, SkillValidation -from config import DefaultConfig - - -class AllowedCallersClaimsValidator: - """ - Sample claims validator that loads an allowed list from configuration if present - and checks that requests are coming from allowed parent bots. - """ - - config_key = "ALLOWED_CALLERS" - - def __init__(self, config: DefaultConfig): - if not config: - raise TypeError( - "AllowedCallersClaimsValidator: config object cannot be None." - ) - - # AllowedCallers is the setting in the appsettings.json file - # that consists of the list of parent bot IDs that are allowed to access the skill. - # To add a new parent bot, simply edit the AllowedCallers and add - # the parent bot's Microsoft app ID to the list. - # In this sample, we allow all callers if AllowedCallers contains an "*". - caller_list = getattr(config, self.config_key) - if caller_list is None: - raise TypeError(f'"{self.config_key}" not found in configuration.') - self._allowed_callers = frozenset(caller_list) - - @property - def claims_validator(self) -> Callable[[List[Dict]], Awaitable]: - async def allow_callers_claims_validator(claims: Dict[str, object]): - # If _allowed_callers contains an "*", we allow all callers. - if "*" not in self._allowed_callers and SkillValidation.is_skill_claim( - claims - ): - # Check that the appId claim in the skill request is in the list of callers configured for this bot. - app_id = JwtTokenValidation.get_app_id_from_claims(claims) - if app_id not in self._allowed_callers: - raise PermissionError( - f'Received a request from a bot with an app ID of "{app_id}".' - f" To enable requests from this caller, add the app ID to your configuration file." - ) - - return - - return allow_callers_claims_validator diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/__init__.py deleted file mode 100644 index b58a3b0653..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .skill_bot import SkillBot - -__all__ = ["SkillBot"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/skill_bot.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/skill_bot.py deleted file mode 100644 index 542423fd3a..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/bots/skill_bot.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import List -from botbuilder.core import ( - ActivityHandler, - TurnContext, - ConversationState, -) -from botbuilder.dialogs import Dialog, DialogExtensions -from botbuilder.schema import Activity, ActivityTypes, ChannelAccount -from config import DefaultConfig - - -class SkillBot(ActivityHandler): - def __init__( - self, - config: DefaultConfig, - conversation_state: ConversationState, - dialog: Dialog, - ): - if config is None: - raise Exception("[SkillBot]: Missing parameter. config is required") - if conversation_state is None: - raise Exception( - "[SkillBot]: Missing parameter. conversation_state is required" - ) - if dialog is None: - raise Exception("[SkillBot]: Missing parameter. dialog is required") - - self.config = config - self.conversation_state = conversation_state - self.dialog = dialog - - async def on_turn(self, turn_context: TurnContext): - if turn_context.activity.type == ActivityTypes.conversation_update: - await super().on_turn(turn_context) - - else: - await DialogExtensions.run_dialog( - self.dialog, - turn_context, - self.conversation_state.create_property("DialogState"), - ) - - # Save any state changes that might have occurred during the turn. - await self.conversation_state.save_changes(turn_context) - - async def on_members_added_activity( - self, members_added: List[ChannelAccount], turn_context: TurnContext - ): - text = ( - "Welcome to the waterfall skill bot. \n\n" - "This is a skill, you will need to call it from another bot to use it." - ) - - for member in members_added: - if member.id != turn_context.activity.recipient.id: - await turn_context.send_activity( - Activity( - type=ActivityTypes.message, - text=text, - speak=text.replace("\n\n", ""), - ) - ) - await turn_context.send_activity( - f"You can check the skill manifest to see what it supports here: " - f"{self.config.SERVER_URL}/manifests/waterfallskillbot-manifest-1.0.json" - ) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/config.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/config.py deleted file mode 100644 index c688cb431d..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/config.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os -from botbuilder.core.skills import BotFrameworkSkill -from dotenv import load_dotenv - -load_dotenv() - - -class DefaultConfig: - """ - Bot Configuration - """ - - SERVER_URL = "" # pylint: disable=invalid-name - PORT = os.getenv("Port", "37420") - APP_ID = os.getenv("MicrosoftAppId") - APP_PASSWORD = os.getenv("MicrosoftAppPassword") - CONNECTION_NAME = os.getenv("ConnectionName") - SSO_CONNECTION_NAME = os.getenv("SsoConnectionName") - CHANNEL_SERVICE = os.getenv("ChannelService") - SKILL_HOST_ENDPOINT = os.getenv("SkillHostEndpoint") - # If ALLOWED_CALLERS is empty, any bot can call this Skill. - # Add MicrosoftAppIds to restrict callers to only those specified. - # Example: - # os.getenv("AllowedCallers", ["54d3bb6a-3b6d-4ccd-bbfd-cad5c72fb53a", "3851a47b-53ed-4d29-b878-6e941da61e98"]) - ALLOWED_CALLERS = os.getenv("AllowedCallers") - ECHO_SKILL_INFO = BotFrameworkSkill( - id=os.getenv("EchoSkillInfo_id"), - app_id=os.getenv("EchoSkillInfo_appId"), - skill_endpoint=os.getenv("EchoSkillInfo_skillEndpoint"), - ) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/__init__.py deleted file mode 100644 index 80d6165e54..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .activity_router_dialog import ActivityRouterDialog - -__all__ = ["ActivityRouterDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/activity_router_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/activity_router_dialog.py deleted file mode 100644 index 1c38f4d7f2..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/activity_router_dialog.py +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import json -from typing import Dict -from datetime import datetime - -from botbuilder.core import MessageFactory, ConversationState -from botbuilder.dialogs import ( - WaterfallDialog, - WaterfallStepContext, - DialogTurnResult, - DialogTurnStatus, - ComponentDialog, -) -from botbuilder.dialogs.skills import ( - SkillDialogOptions, - SkillDialog, - BeginSkillDialogOptions, -) -from botbuilder.schema import Activity, ActivityTypes, InputHints -from botbuilder.integration.aiohttp.skills import SkillHttpClient -from config import DefaultConfig -from skill_conversation_id_factory import SkillConversationIdFactory -from dialogs.cards import CardDialog -from dialogs.delete import DeleteDialog -from dialogs.proactive import WaitForProactiveDialog -from dialogs.message_with_attachment import MessageWithAttachmentDialog -from dialogs.auth import AuthDialog -from dialogs.sso import SsoSkillDialog -from dialogs.file_upload import FileUploadDialog -from dialogs.update import UpdateDialog - -ECHO_SKILL = "EchoSkill" - - -class ActivityRouterDialog(ComponentDialog): - def __init__( - self, - configuration: DefaultConfig, - conversation_state: ConversationState, - conversation_id_factory: SkillConversationIdFactory, - skill_client: SkillHttpClient, - continuation_parameters_store: Dict, - ): - super().__init__(ActivityRouterDialog.__name__) - - self.add_dialog(CardDialog(configuration)) - self.add_dialog(MessageWithAttachmentDialog(configuration)) - - self.add_dialog( - WaitForProactiveDialog(configuration, continuation_parameters_store) - ) - - self.add_dialog(AuthDialog(configuration)) - self.add_dialog(SsoSkillDialog(configuration)) - self.add_dialog(FileUploadDialog()) - self.add_dialog(DeleteDialog()) - self.add_dialog(UpdateDialog()) - - self.add_dialog( - self.create_echo_skill_dialog( - configuration, conversation_state, conversation_id_factory, skill_client - ) - ) - self.add_dialog( - WaterfallDialog(WaterfallDialog.__name__, [self.process_activity]) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - def create_echo_skill_dialog( - self, - configuration: DefaultConfig, - conversation_state: ConversationState, - conversation_id_factory: SkillConversationIdFactory, - skill_client: SkillHttpClient, - ) -> SkillDialog: - if configuration.SKILL_HOST_ENDPOINT is None: - raise Exception("SkillHostEndpoint is not in configuration") - - if configuration.ECHO_SKILL_INFO is None: - raise Exception("EchoSkillInfo is not set in configuration") - - options = SkillDialogOptions( - bot_id=configuration.APP_ID, - conversation_id_factory=conversation_id_factory, - skill_client=skill_client, - skill_host_endpoint=configuration.SKILL_HOST_ENDPOINT, - conversation_state=conversation_state, - skill=configuration.ECHO_SKILL_INFO, - ) - - return SkillDialog(options, ECHO_SKILL) - - async def process_activity(self, step_context: WaterfallStepContext): - # A skill can send trace activities, if needed. - await step_context.context.send_activity( - Activity( - type=ActivityTypes.trace, - timestamp=datetime.utcnow(), - name="ActivityRouterDialog.process_activity()", - label=f"Got ActivityType: {step_context.context.activity.type}", - ) - ) - - if step_context.context.activity.type == ActivityTypes.event: - return await self.on_event_activity(step_context) - - # We didn't get an activity type we can handle. - await step_context.context.send_activity( - activity_or_text=f'Unrecognized ActivityType: "{step_context.context.activity.type}".', - input_hint=InputHints.ignoring_input, - ) - return DialogTurnResult(DialogTurnStatus.Complete) - - async def on_event_activity(self, step_context: WaterfallStepContext): - activity = step_context.context.activity - await step_context.context.send_activity( - Activity( - type=ActivityTypes.trace, - timestamp=datetime.utcnow(), - name="ActivityRouterDialog.on_event_activity()", - label=f"Name: {activity.name}. Value: {json.dumps(activity.value)}", - ) - ) - - if activity.name == "Cards": - return await step_context.begin_dialog(CardDialog.__name__) - - if activity.name == "Proactive": - return await step_context.begin_dialog(WaitForProactiveDialog.__name__) - - if activity.name == "MessageWithAttachment": - return await step_context.begin_dialog(MessageWithAttachmentDialog.__name__) - - if activity.name == "Auth": - return await step_context.begin_dialog(AuthDialog.__name__) - - if activity.name == "Sso": - return await step_context.begin_dialog(SsoSkillDialog.__name__) - - if activity.name == "FileUpload": - return await step_context.begin_dialog(FileUploadDialog.__name__) - - if activity.name == "Echo": - # Start the EchoSkillBot - message_activity = MessageFactory.text("I'm the echo skill bot") - message_activity.delivery_mode = activity.delivery_mode - dialog = await self.find_dialog(ECHO_SKILL) - return await step_context.begin_dialog( - dialog.id, BeginSkillDialogOptions(activity=message_activity) - ) - - if activity.name == "Delete": - return await step_context.begin_dialog(DeleteDialog.__name__) - - if activity.name == "Update": - return await step_context.begin_dialog(UpdateDialog.__name__) - - # We didn't get an event name we can handle. - await step_context.context.send_activity( - activity_or_text=f'Unrecognized EventName: "{step_context.context.activity.name}".', - input_hint=InputHints.ignoring_input, - ) - return DialogTurnResult(DialogTurnStatus.Complete) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/__init__.py deleted file mode 100644 index 938f3d16ea..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .auth_dialog import AuthDialog - -__all__ = ["AuthDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/auth_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/auth_dialog.py deleted file mode 100644 index 2957371462..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/auth/auth_dialog.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.core import MessageFactory -from botbuilder.dialogs import ( - WaterfallDialog, - WaterfallStepContext, - PromptOptions, - ComponentDialog, -) -from botbuilder.dialogs.prompts import OAuthPrompt, OAuthPromptSettings, ConfirmPrompt -from botbuilder.schema import InputHints -from config import DefaultConfig - - -class AuthDialog(ComponentDialog): - def __init__(self, configuration: DefaultConfig): - super().__init__(AuthDialog.__name__) - - self.connection_name = configuration.CONNECTION_NAME - - self.add_dialog(ConfirmPrompt(ConfirmPrompt.__name__)) - self.add_dialog( - OAuthPrompt( - OAuthPrompt.__name__, - OAuthPromptSettings( - connection_name=self.connection_name, - text=f"Please Sign In to connection: '{self.connection_name}'", - title="Sign In", - timeout=300000, # User has 5 minutes to login (1000 * 60 * 5) - ), - ) - ) - - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self.prompt_step, - self.login_step, - self.display_token, - ], - ) - ) - - # The initial child Dialog to run. - self.initial_dialog_id = WaterfallDialog.__name__ - - async def prompt_step(self, step_context: WaterfallStepContext): - return await step_context.begin_dialog(OAuthPrompt.__name__) - - async def login_step(self, step_context: WaterfallStepContext): - # Get the token from the previous step. - token_response = step_context.result - - if token_response: - # Workaround, step_context.result value using DirectLine returns a 'dict' instead of TokenResponse - if isinstance(token_response, dict): - step_context.values["token"] = token_response.get("token") - else: - step_context.values["token"] = token_response.token - - # Show the token - logged_in_message = "You are now logged in." - await step_context.context.send_activity( - MessageFactory.text( - logged_in_message, logged_in_message, InputHints.ignoring_input - ) - ) - - options = PromptOptions( - prompt=MessageFactory.text("Would you like to view your token?") - ) - return await step_context.prompt(ConfirmPrompt.__name__, options) - - try_again_message = "Login was not successful please try again." - await step_context.context.send_activity( - MessageFactory.text( - try_again_message, try_again_message, InputHints.ignoring_input - ) - ) - return await step_context.replace_dialog(self.initial_dialog_id) - - async def display_token(self, step_context: WaterfallStepContext): - if step_context.result: - show_token_message = "Here is your token:" - await step_context.context.send_activity( - MessageFactory.text( - f'{show_token_message} {step_context.values["token"]}', - show_token_message, - InputHints.ignoring_input, - ) - ) - - # Sign out - await step_context.context.adapter.sign_out_user( - step_context.context, self.connection_name - ) - sign_out_message = "I have signed you out." - await step_context.context.send_activity( - MessageFactory.text( - sign_out_message, sign_out_message, InputHints.ignoring_input - ) - ) - - return await step_context.end_dialog() diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/__init__.py deleted file mode 100644 index 465fe91fee..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .card_dialog import CardDialog -from .card_options import CardOptions -from .card_sample_helper import CardSampleHelper -from .channel_supported_cards import ChannelSupportedCards - -__all__ = ["CardDialog", "CardOptions", "CardSampleHelper", "ChannelSupportedCards"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_dialog.py deleted file mode 100644 index 519bc77fb7..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_dialog.py +++ /dev/null @@ -1,282 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import json - -from botbuilder.core import MessageFactory, CardFactory -from botbuilder.dialogs import ( - ComponentDialog, - DialogTurnResult, - DialogTurnStatus, - WaterfallDialog, - WaterfallStepContext, - Choice, - ListStyle, -) -from botbuilder.dialogs.prompts import ( - ChoicePrompt, - PromptOptions, - PromptValidatorContext, -) -from botbuilder.schema import ( - InputHints, - HeroCard, - CardAction, - ActionTypes, -) -from config import DefaultConfig -from dialogs.cards.card_options import CardOptions -from dialogs.cards.channel_supported_cards import ChannelSupportedCards -from dialogs.cards.card_sample_helper import CardSampleHelper - - -CORGI_ON_CAROUSEL_VIDEO = "https://www.youtube.com/watch?v=LvqzubPZjHE" -MIND_BLOWN_GIF = ( - "https://media3.giphy.com/media/xT0xeJpnrWC4XWblEk/giphy.gif?" - "cid=ecf05e47mye7k75sup6tcmadoom8p1q8u03a7g2p3f76upp9&rid=giphy.gif" -) -MUSIC_API = "api/music" -TEAMS_LOGO_FILE_NAME = "teams-logo.png" - - -class CardDialog(ComponentDialog): - def __init__(self, configuration: DefaultConfig): - super().__init__(CardDialog.__name__) - self.configuration = configuration - - self.add_dialog(ChoicePrompt(ChoicePrompt.__name__, self.card_prompt_validator)) - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [self.select_card_step, self.display_card_step], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - def make_update_hero_card(self, step_context: WaterfallStepContext): - hero_card = HeroCard(title="Newly updated card.", buttons=[]) - - data = step_context.context.activity.value - data["count"] = data["count"].value + 1 - hero_card.text = f"Update count - {data['count'].value}" - - hero_card.buttons.push( - CardAction( - type=ActionTypes.message_back, - title="Update Card", - text="UpdateCardAction", - value=data, - ) - ) - - return CardFactory.hero_card(hero_card) - - async def select_card_step(self, step_context: WaterfallStepContext): - # Create the PromptOptions from the skill configuration which contain the list of configured skills. - message_text = "What card do you want?" - reprompt_message_text = "This message will be created in the validation code" - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text, InputHints.expecting_input - ), - choices=[Choice(card.value) for card in CardOptions], - style=ListStyle.list_style, - ) - - return await step_context.prompt(ChoicePrompt.__name__, options) - - async def display_card_step(self, step_context: WaterfallStepContext): - if step_context.context.activity.value is not None: - await self.handle_special_activity(step_context) - else: - # Check to see if the activity is an adaptive card or a bot action response - card_type = CardOptions(step_context.result.value) - - if ChannelSupportedCards.is_card_supported( - step_context.context.activity.channel_id, card_type - ): - if card_type == CardOptions.ADAPTIVE_CARD_BOT_ACTION: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_adaptive_card_bot_action() - ) - ) - - elif card_type == CardOptions.ADAPTIVE_CARD_TEAMS_TASK_MODULE: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_adaptive_card_task_module() - ) - ) - - elif card_type == CardOptions.ADAPTIVE_CARD_SUBMIT_ACTION: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_adaptive_card_submit() - ) - ) - - elif card_type == CardOptions.HERO: - await step_context.context.send_activity( - MessageFactory.attachment(CardSampleHelper.create_hero_card()) - ) - - elif card_type == CardOptions.THUMBNAIL: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_thumbnail_card() - ) - ) - - elif card_type == CardOptions.RECEIPT: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_receipt_card() - ) - ) - - elif card_type == CardOptions.SIGN_IN: - await step_context.context.send_activity( - MessageFactory.attachment(CardSampleHelper.create_signin_card()) - ) - - elif card_type == CardOptions.CAROUSEL: - # NOTE if cards are NOT the same height in a carousel, - # Teams will instead display as AttachmentLayoutTypes.List - await step_context.context.send_activity( - MessageFactory.carousel( - [ - CardSampleHelper.create_hero_card(), - CardSampleHelper.create_hero_card(), - CardSampleHelper.create_hero_card(), - ] - ) - ) - - elif card_type == CardOptions.LIST: - await step_context.context.send_activity( - MessageFactory.list( - [ - CardSampleHelper.create_hero_card(), - CardSampleHelper.create_hero_card(), - CardSampleHelper.create_hero_card(), - ] - ) - ) - - elif card_type == CardOptions.O365: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_o365_connector_card() - ) - ) - - elif card_type == CardOptions.TEAMS_FILE_CONSENT: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_teams_file_consent_card( - TEAMS_LOGO_FILE_NAME - ) - ) - ) - - elif card_type == CardOptions.ANIMATION: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_animation_card(MIND_BLOWN_GIF) - ) - ) - - elif card_type == CardOptions.AUDIO: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_audio_card( - f"{self.configuration.SERVER_URL}/{MUSIC_API}" - ) - ) - ) - - elif card_type == CardOptions.VIDEO: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_video_card(CORGI_ON_CAROUSEL_VIDEO) - ) - ) - - elif card_type == CardOptions.ADAPTIVE_UPDATE: - await step_context.context.send_activity( - MessageFactory.attachment( - CardSampleHelper.create_adaptive_update_card() - ) - ) - - elif card_type == CardOptions.END: - return DialogTurnResult(DialogTurnStatus.Complete) - - else: - await step_context.context.send_activity( - f"{card_type.value} cards are not supported in the " - f"{step_context.context.activity.channel_id} channel." - ) - - return await step_context.replace_dialog( - self.initial_dialog_id, "What card would you want?" - ) - - async def handle_special_activity(self, step_context: WaterfallStepContext): - if step_context.context.activity.text is None: - await step_context.context.send_activity( - MessageFactory.text( - f"I received an activity with this data in the value field {step_context.context.activity.value}" - ) - ) - else: - if "update" in step_context.context.activity.text.lower(): - if step_context.context.activity.reply_to_id is None: - await step_context.context.send_activity( - MessageFactory.text( - f"Update activity is not supported in the " - f"{step_context.context.activity.channel_id} channel" - ) - ) - else: - hero_card = self.make_update_hero_card(step_context) - - activity = MessageFactory.attachment(hero_card) - activity.id = step_context.context.activity.reply_to_id - - await step_context.context.update_activity(activity) - - else: - await step_context.context.send_activity( - MessageFactory.text( - f"I received an activity with this data in the text field {step_context.context.activity.text} " - f"and this data in the value field {step_context.context.activity.value}" - ) - ) - - @staticmethod - async def card_prompt_validator(prompt_context: PromptValidatorContext) -> bool: - if not prompt_context.recognized.succeeded: - # This checks to see if this response is the user clicking the update button on the card - if prompt_context.context.activity.value is not None: - return True - - if prompt_context.context.activity.attachments: - return True - - # Render the activity so we can assert in tests. - # We may need to simplify the json if it gets too complicated to test. - activity_json = json.dumps( - prompt_context.context.activity.__dict__, indent=4, default=str - ).replace("\n", "\r\n") - prompt_context.options.retry_prompt.text = ( - f"Got {activity_json}\n\n{prompt_context.options.prompt.text}" - ) - return False - return True diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_options.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_options.py deleted file mode 100644 index 99b98e5b66..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_options.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from enum import Enum - - -class CardOptions(str, Enum): - ADAPTIVE_CARD_BOT_ACTION = "AdaptiveCardBotAction" - ADAPTIVE_CARD_TEAMS_TASK_MODULE = "AdaptiveCardTeamsTaskModule" - ADAPTIVE_CARD_SUBMIT_ACTION = "AdaptiveCardSubmitAction" - HERO = "Hero" - THUMBNAIL = "Thumbnail" - RECEIPT = "Receipt" - SIGN_IN = "Signin" - CAROUSEL = "Carousel" - LIST = "List" - O365 = "O365" - TEAMS_FILE_CONSENT = "TeamsFileConsent" - ANIMATION = "Animation" - AUDIO = "Audio" - VIDEO = "Video" - ADAPTIVE_UPDATE = "AdaptiveUpdate" - END = "End" diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_sample_helper.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_sample_helper.py deleted file mode 100644 index 8ef19fe7ae..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/card_sample_helper.py +++ /dev/null @@ -1,557 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os -from botbuilder.core import CardFactory -from botbuilder.schema.teams import ( - FileConsentCard, - O365ConnectorCard, - O365ConnectorCardActionCard, - O365ConnectorCardDateInput, - O365ConnectorCardFact, - O365ConnectorCardHttpPOST, - O365ConnectorCardImage, - O365ConnectorCardMultichoiceInput, - O365ConnectorCardMultichoiceInputChoice, - O365ConnectorCardOpenUri, - O365ConnectorCardOpenUriTarget, - O365ConnectorCardSection, - O365ConnectorCardTextInput, - O365ConnectorCardViewAction, -) -from botbuilder.schema import ( - ActionTypes, - Attachment, - AnimationCard, - AudioCard, - HeroCard, - VideoCard, - ReceiptCard, - SigninCard, - ThumbnailCard, - MediaUrl, - CardAction, - CardImage, - Fact, - ReceiptItem, -) -from botbuilder.schema.teams.additional_properties import ContentType - - -class CardSampleHelper: - @staticmethod - def create_adaptive_card_bot_action(): - return CardFactory.adaptive_card( - { - "type": "AdaptiveCard", - "version": "1.2", - "body": [ - { - "text": "Bot Builder actions", - "type": "TextBlock", - } - ], - "actions": [ - { - "type": "Action.Submit", - "title": "imBack", - "data": { - "msteams": { - "type": ActionTypes.im_back.value, - "value": "text", - } - }, - }, - { - "type": "Action.Submit", - "title": "message back", - "data": { - "msteams": { - "type": ActionTypes.message_back.value, - "value": {"key": "value"}, - } - }, - }, - { - "type": "Action.Submit", - "title": "message back local echo", - "data": { - "msteams": { - "type": ActionTypes.message_back.value, - "text": "text received by bots", - "displayText": "display text message back", - "value": {"key": "value"}, - } - }, - }, - { - "type": "Action.Submit", - "title": "invoke", - "data": { - "msteams": {"type": "invoke", "value": {"key": "value"}} - }, - }, - ], - } - ) - - @staticmethod - def create_adaptive_card_task_module(): - return CardFactory.adaptive_card( - { - "type": "AdaptiveCard", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "Task Module Adaptive Card", - } - ], - "actions": [ - { - "type": "Action.Submit", - "title": "Launch Task Module", - "data": { - "msteams": { - "type": "invoke", - "value": '{\r\n "hiddenKey": ' - '"hidden value from task module launcher",\r\n "type": "task/fetch"\r\n}', - } - }, - } - ], - } - ) - - @staticmethod - def create_adaptive_card_submit(): - return CardFactory.adaptive_card( - { - "type": "AdaptiveCard", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "Bot Builder actions", - }, - { - "type": "Input.Text", - "id": "x", - }, - ], - "actions": [ - { - "type": "Action.Submit", - "title": "Action.Submit", - "data": { - "key": "value", - }, - } - ], - } - ) - - @staticmethod - def create_adaptive_update_card() -> Attachment: - card = HeroCard(title="Update card", text="Update Card Action", buttons=[]) - - action = CardAction( - type=ActionTypes.message_back, - title="Update card title", - text="Update card text", - value={"count": 0}, - ) - - card.buttons.push(action) - - return CardFactory.hero_card(card) - - @staticmethod - def create_hero_card() -> Attachment: - card = HeroCard( - title="BotFramework Hero Card", - subtitle="Microsoft Bot Framework", - text="Build and connect intelligent bots to interact with your users naturally wherever they are, " - "from text/sms to Skype, Slack, Office 365 mail and other popular services.", - images=[ - CardImage( - url="https://sec.ch9.ms/ch9/7ff5/e07cfef0-aa3b-40bb-9baa-7c9ef8ff7ff5/" - "buildreactionbotframework_960.jpg", - ) - ], - buttons=[ - CardAction( - type=ActionTypes.open_url, - title="Get Started", - value="https://docs.microsoft.com/bot-framework", - ) - ], - ) - return CardFactory.hero_card(card) - - @staticmethod - def create_thumbnail_card() -> Attachment: - card = ThumbnailCard( - title="BotFramework Thumbnail Card", - subtitle="Microsoft Bot Framework", - text="Build and connect intelligent bots to interact with your users naturally wherever they are, " - "from text/sms to Skype, Slack, Office 365 mail and other popular services.", - images=[ - CardImage( - url="https://sec.ch9.ms/ch9/7ff5/e07cfef0-aa3b-40bb-9baa-7c9ef8ff7ff5/" - "buildreactionbotframework_960.jpg", - ) - ], - buttons=[ - CardAction( - type=ActionTypes.open_url, - title="Get Started", - value="https://docs.microsoft.com/bot-framework", - ) - ], - ) - return CardFactory.thumbnail_card(card) - - @staticmethod - def create_receipt_card() -> Attachment: - card = ReceiptCard( - title="John Doe", - facts=[ - Fact( - key="Order Number", - value="1234", - ), - Fact( - key="Payment Method", - value="VISA 5555-****", - ), - ], - items=[ - ReceiptItem( - title="Data Transfer", - image=CardImage( - url="https://github.com/amido/azure-vector-icons/raw/master/renders/traffic-manager.png", - ), - price="$ 38.45", - quantity="368", - ), - ReceiptItem( - title="App Service", - image=CardImage( - url="https://github.com/amido/azure-vector-icons/raw/master/renders/cloud-service.png", - ), - price="$ 45.00", - quantity="720", - ), - ], - total="$ 90.95", - tax="$ 7.50", - buttons=[ - CardAction( - type=ActionTypes.open_url, - title="More information", - image="https://account.windowsazure.com/content/6.10.1.38-.8225.160809-1618/aux-pre/" - "images/offer-icon-freetrial.png", - value="https://azure.microsoft.com/en-us/pricing/", - ) - ], - ) - return CardFactory.receipt_card(card) - - @staticmethod - def create_signin_card() -> Attachment: - card = SigninCard( - text="BotFramework Sign-in Card", - buttons=[ - CardAction( - type=ActionTypes.signin, - title="Sign-in", - value="https://login.microsoftonline.com/", - ) - ], - ) - - return CardFactory.signin_card(card) - - @staticmethod - def create_o365_connector_card() -> Attachment: - section = O365ConnectorCardSection( - title="**section title**", - text="section text", - activity_title="activity title", - activity_subtitle="activity subtitle", - activity_text="activity text", - activity_image="http://connectorsdemo.azurewebsites.net/images/MSC12_Oscar_002.jpg", - activity_image_type="avatar", - markdown=True, - facts=[ - O365ConnectorCardFact(name="Fact name 1", value="Fact value 1"), - O365ConnectorCardFact(name="Fact name 2", value="Fact value 2"), - ], - images=[ - O365ConnectorCardImage( - image="http://connectorsdemo.azurewebsites.net/images/" - "MicrosoftSurface_024_Cafe_OH-06315_VS_R1c.jpg", - title="image 1", - ), - O365ConnectorCardImage( - image="http://connectorsdemo.azurewebsites.net/images/WIN12_Scene_01.jpg", - title="image 2", - ), - O365ConnectorCardImage( - image="http://connectorsdemo.azurewebsites.net/images/WIN12_Anthony_02.jpg", - title="image 3", - ), - ], - ) - - action_card1 = O365ConnectorCardActionCard( - type="ActionCard", - name="Multiple Choice", - id="card-1", - inputs=[ - O365ConnectorCardMultichoiceInput( - type="MultichoiceInput", - id="list-1", - is_required=True, - title="Pick multiple options", - choices=[ - O365ConnectorCardMultichoiceInputChoice( - display="Choice 1", value="1" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice 2", value="2" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice 3", value="3" - ), - ], - style="expanded", - is_multi_select=True, - ), - O365ConnectorCardMultichoiceInput( - type="MultichoiceInput", - id="list-2", - is_required=True, - title="Pick multiple options", - choices=[ - O365ConnectorCardMultichoiceInputChoice( - display="Choice 4", value="4" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice 5", value="5" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice 6", value="6" - ), - ], - style="compact", - is_multi_select=True, - ), - O365ConnectorCardMultichoiceInput( - type="MultichoiceInput", - id="list-3", - is_required=False, - title="Pick an option", - choices=[ - O365ConnectorCardMultichoiceInputChoice( - display="Choice a", value="a" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice b", value="b" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice c", value="c" - ), - ], - style="expanded", - is_multi_select=False, - ), - O365ConnectorCardMultichoiceInput( - type="MultichoiceInput", - id="list-4", - is_required=False, - title="Pick an option", - choices=[ - O365ConnectorCardMultichoiceInputChoice( - display="Choice x", value="x" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice y", value="y" - ), - O365ConnectorCardMultichoiceInputChoice( - display="Choice z", value="z" - ), - ], - style="compact", - is_multi_select=False, - ), - ], - actions=[ - O365ConnectorCardHttpPOST( - type="HttpPOST", - name="Send", - id="card-1-btn-1", - body='{"list1":"{{list-1.value}}", "list2":"{{list-2.value}}", ' - '"list3":"{{list-3.value}}", "list4":"{{list-4.value}}"}', - ) - ], - ) - - action_card2 = O365ConnectorCardActionCard( - type="ActionCard", - name="Text Input", - id="card-2", - inputs=[ - O365ConnectorCardTextInput( - type="TextInput", - id="text-1", - is_required=False, - title="multiline, no maxLength", - is_multiline=True, - ), - O365ConnectorCardTextInput( - type="TextInput", - id="text-2", - is_required=False, - title="single line, no maxLength", - is_multiline=False, - ), - O365ConnectorCardTextInput( - type="TextInput", - id="text-3", - is_required=True, - title="multiline, max len = 10, isRequired", - is_multiline=True, - max_length=10, - ), - O365ConnectorCardTextInput( - type="TextInput", - id="text-4", - is_required=True, - title="single line, max len = 10, isRequired", - is_multiline=False, - max_length=10, - ), - ], - actions=[ - O365ConnectorCardHttpPOST( - type="HttpPOST", - name="Send", - id="card-2-btn-1", - body='{"text1":"{{text-1.value}}", "text2":"{{text-2.value}}", ' - '"text3":"{{text-3.value}}", "text4":"{{text-4.value}}"}', - ) - ], - ) - - action_card3 = O365ConnectorCardActionCard( - type="ActionCard", - name="Date Input", - id="card-3", - inputs=[ - O365ConnectorCardDateInput( - type="DateInput", - id="date-1", - is_required=True, - title="date with time", - include_time=True, - ), - O365ConnectorCardDateInput( - type="DateInput", - id="date-2", - is_required=False, - title="date only", - include_time=False, - ), - ], - actions=[ - O365ConnectorCardHttpPOST( - type="HttpPOST", - name="Send", - id="card-3-btn-1", - body='{"date1":"{{date-1.value}}", "date2":"{{date-2.value}}"}', - ) - ], - ) - - card = O365ConnectorCard( - summary="O365 card summary", - theme_color="#E67A9E", - title="card title", - text="card text", - sections=[section], - potential_action=[ - action_card1, - action_card2, - action_card3, - O365ConnectorCardViewAction( - type="ViewAction", - name="View Action", - target=["http://microsoft.com"], - ), - O365ConnectorCardOpenUri( - type="OpenUri", - name="Open Uri", - id="open-uri", - targets=[ - O365ConnectorCardOpenUriTarget( - os="default", uri="http://microsoft.com" - ), - O365ConnectorCardOpenUriTarget( - os="iOS", uri="http://microsoft.com" - ), - O365ConnectorCardOpenUriTarget( - os="android", uri="http://microsoft.com" - ), - O365ConnectorCardOpenUriTarget( - os="windows", uri="http://microsoft.com" - ), - ], - ), - ], - ) - - return Attachment(content=card, content_type=ContentType.O365_CONNECTOR_CARD) - - @staticmethod - def create_teams_file_consent_card(file_name: str): - file_path = os.path.join(os.getcwd(), "Dialogs/Cards/Files", file_name) - file_size = os.path.getsize(file_path) - - consent_context = {{"filename", file_name}} - - file_card = FileConsentCard( - description="This is the file I want to send you", - size_in_bytes=file_size, - accept_context=consent_context, - decline_context=consent_context, - ) - - return Attachment( - content=file_card, - content_type=ContentType.FILE_CONSENT_CARD, - name=file_name, - ) - - @staticmethod - def create_animation_card(url: str) -> Attachment: - card = AnimationCard( - title="Animation Card", - media=[MediaUrl(url=url)], - autostart=True, - ) - return CardFactory.animation_card(card) - - @staticmethod - def create_audio_card(url: str) -> Attachment: - card = AudioCard(title="Audio Card", media=[MediaUrl(url=url)], autoloop=True) - return CardFactory.audio_card(card) - - @staticmethod - def create_video_card(url: str) -> Attachment: - card = VideoCard( - title="Video Card", - media=[MediaUrl(url=url)], - ) - return CardFactory.video_card(card) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/channel_supported_cards.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/channel_supported_cards.py deleted file mode 100644 index 13cbffa194..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/channel_supported_cards.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botframework.connector import Channels - -from dialogs.cards.card_options import CardOptions - - -UNSUPPORTED_CHANNEL_CARDS = { - Channels.emulator.value: [ - CardOptions.ADAPTIVE_CARD_TEAMS_TASK_MODULE, - CardOptions.ADAPTIVE_UPDATE, - CardOptions.O365, - CardOptions.TEAMS_FILE_CONSENT, - ], - Channels.direct_line.value: [CardOptions.ADAPTIVE_UPDATE], - Channels.telegram.value: [ - CardOptions.ADAPTIVE_CARD_BOT_ACTION, - CardOptions.ADAPTIVE_CARD_TEAMS_TASK_MODULE, - CardOptions.ADAPTIVE_CARD_SUBMIT_ACTION, - CardOptions.LIST, - CardOptions.TEAMS_FILE_CONSENT, - ], -} - - -class ChannelSupportedCards: - @staticmethod - def is_card_supported(channel: str, card_type: CardOptions): - if channel in UNSUPPORTED_CHANNEL_CARDS: - if card_type in UNSUPPORTED_CHANNEL_CARDS[channel]: - return False - return True diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/buildreactionbotframework.jpg deleted file mode 100644 index f410fc137e4d78ef6934f7a06f7b0e50b7b45267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65992 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
  • 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%0D`!{J7<*jP93$p#* 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 b7On43EM4=dB^(`JDI-si{pp%v_$nOfp(Kaus+ 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 z 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

    paC55m_>ryRNvbU22jABe5< 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.13.0 -botbuilder-dialogs>=4.13.0 -python-dotenv diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_adapter_with_error_handler.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_adapter_with_error_handler.py deleted file mode 100644 index ab2e30a88e..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_adapter_with_error_handler.py +++ /dev/null @@ -1,103 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import sys -import traceback -from botbuilder.core import ( - BotFrameworkAdapter, - BotFrameworkAdapterSettings, - ConversationState, - MessageFactory, - TurnContext, -) -from botbuilder.schema import Activity, ActivityTypes, InputHints - - -class AdapterWithErrorHandler(BotFrameworkAdapter): - def __init__( - self, - settings: BotFrameworkAdapterSettings, - conversation_state: ConversationState, - ): - super().__init__(settings) - self.conversation_state = conversation_state - self.on_turn_error = self._handle_turn_error - - async def _handle_turn_error(self, context: TurnContext, error: Exception): - # This check writes out errors to console log - # NOTE: In production environment, you should consider logging this to Azure - # application insights. - print(f"\n [on_turn_error] unhandled error: {error}", file=sys.stderr) - traceback.print_exc() - await self._send_error_message(context, error) - await self._send_eoc_to_parent(context, error) - await self._clear_conversation_state(context) - - async def _send_error_message(self, context: TurnContext, error: Exception): - try: - exc_info = sys.exc_info() - stack = traceback.format_exception(*exc_info) - - # Send a message to the user. - error_message_text = "The skill encountered an error or bug." - error_message = MessageFactory.text( - f"{error_message_text}\r\n{error}\r\n{stack}", - error_message_text, - InputHints.ignoring_input, - ) - error_message.value = { "message": error, "stack": stack } - await context.send_activity(error_message) - - error_message_text = ( - "To continue to run this bot, please fix the bot source code." - ) - error_message = MessageFactory.text( - error_message_text, error_message_text, InputHints.ignoring_input - ) - await context.send_activity(error_message) - - # Send a trace activity, which will be displayed in the BotFramework Emulator. - # Note: we return the entire exception in the value property to help the developer; - # this should not be done in production. - await context.send_trace_activity( - label="TurnError", - name="on_turn_error Trace", - value=f"{error}", - value_type="https://www.botframework.com/schemas/error", - ) - except Exception as exception: - print( - f"\n Exception caught on _send_error_message : {exception}", - file=sys.stderr, - ) - traceback.print_exc() - - async def _send_eoc_to_parent(self, context: TurnContext, error: Exception): - try: - # Send an EndOfConversation activity to the skill caller with the error to end the conversation, - # and let the caller decide what to do. - end_of_conversation = Activity(type=ActivityTypes.end_of_conversation) - end_of_conversation.code = "SkillError" - end_of_conversation.text = str(error) - - await context.send_activity(end_of_conversation) - except Exception as exception: - print( - f"\n Exception caught on _send_eoc_to_parent : {exception}", - file=sys.stderr, - ) - traceback.print_exc() - - async def _clear_conversation_state(self, context: TurnContext): - if self.conversation_state: - try: - # Delete the conversationState for the current conversation to prevent the - # bot from getting stuck in a error-loop caused by being in a bad state. - # ConversationState should be thought of as similar to "cookie-state" for a Web page. - await self.conversation_state.delete(context) - except Exception as exception: - print( - f"\n Exception caught on _clear_conversation_state : {exception}", - file=sys.stderr, - ) - traceback.print_exc() diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_conversation_id_factory.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_conversation_id_factory.py deleted file mode 100644 index e10942db14..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/skill_conversation_id_factory.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import Union -from botbuilder.core import Storage, TurnContext -from botbuilder.core.skills import ( - ConversationIdFactoryBase, - SkillConversationIdFactoryOptions, - SkillConversationReference, -) -from botbuilder.schema import ConversationReference - - -class SkillConversationIdFactory(ConversationIdFactoryBase): - def __init__(self, storage: Storage): - if not storage: - raise TypeError("storage can't be None") - - self._storage = storage - - async def create_skill_conversation_id( - self, - options_or_conversation_reference: Union[ - SkillConversationIdFactoryOptions, ConversationReference - ], - ) -> str: - if not options_or_conversation_reference: - raise TypeError("Need options or conversation reference") - - if not isinstance( - options_or_conversation_reference, SkillConversationIdFactoryOptions - ): - raise TypeError( - "This SkillConversationIdFactory can only handle SkillConversationIdFactoryOptions" - ) - - options = options_or_conversation_reference - - # Create the storage key based on the SkillConversationIdFactoryOptions. - conversation_reference = TurnContext.get_conversation_reference( - options.activity - ) - skill_conversation_id = ( - f"{conversation_reference.conversation.id}" - f"-{options.bot_framework_skill.id}" - f"-{conversation_reference.channel_id}" - f"-skillconvo" - ) - - # Create the SkillConversationReference instance. - skill_conversation_reference = SkillConversationReference( - conversation_reference=conversation_reference, - oauth_scope=options.from_bot_oauth_scope, - ) - - # Store the SkillConversationReference using the skill_conversation_id as a key. - skill_conversation_info = {skill_conversation_id: skill_conversation_reference} - await self._storage.write(skill_conversation_info) - - # Return the generated skill_conversation_id (that will be also used as the conversation ID to call the skill). - return skill_conversation_id - - async def get_conversation_reference( - self, skill_conversation_id: str - ) -> Union[SkillConversationReference, ConversationReference]: - if not skill_conversation_id: - raise TypeError("skill_conversation_id can't be None") - - # Get the SkillConversationReference from storage for the given skill_conversation_id. - skill_conversation_info = await self._storage.read([skill_conversation_id]) - - return skill_conversation_info.get(skill_conversation_id) - - async def delete_conversation_reference(self, skill_conversation_id: str): - await self._storage.delete([skill_conversation_id]) diff --git a/tests/functional/build/yaml/deployBotResources/python/deploy.yml b/tests/functional/build/yaml/deployBotResources/python/deploy.yml deleted file mode 100644 index b0f721a61e..0000000000 --- a/tests/functional/build/yaml/deployBotResources/python/deploy.yml +++ /dev/null @@ -1,183 +0,0 @@ -parameters: - - name: appServicePlan - displayName: App Service Plan name - type: string - - - name: appServicePlanRG - displayName: App Service Plan Resource Group - type: string - - - name: azureSubscription - displayName: Azure Service Connection - type: string - - - name: bots - displayName: Bots - type: object - - - name: botPricingTier - displayName: Bot Pricing Tier - type: string - - - name: connectionName - displayName: OAuth Connection Name - type: string - - - name: dependsOn - displayName: Depends On - type: string - - - name: keyVault - displayName: Key Vault name - type: string - - - name: resourceGroup - displayName: Resource Group - type: string - - - name: resourceSuffix - displayName: Azure resources' name suffix - type: string - -stages: -- ${{ each bot in parameters.bots }}: - - stage: "Deploy_${{ bot.name }}" - ${{ if eq(bot.displayName, '') }}: - displayName: "${{ bot.name }}" - ${{ if ne(bot.displayName, '') }}: - displayName: "${{ bot.displayName }}" - dependsOn: "${{ parameters.dependsOn }}" - jobs: - - job: "Deploy" - pool: - vmImage: "ubuntu-latest" - displayName: "Deploy steps" - steps: - # Delete Bot Resources - - template: ../common/deleteResources.yml - parameters: - azureSubscription: "${{ parameters.azureSubscription }}" - resourceGroup: "${{ parameters.resourceGroup }}" - resourceName: "${{ bot.name }}" - resourceSuffix: "${{ parameters.resourceSuffix }}" - - # Gets Bot App Registration credentials from KeyVault or Pipeline Variables - - template: ../common/getAppRegistration.yml - parameters: - appId: ${{ bot.appId }} - appSecret: ${{ bot.appSecret }} - azureSubscription: "${{ parameters.azureSubscription }}" - botName: "${{ bot.name }}" - keyVault: "${{ parameters.keyVault }}" - - # Prepare .env file, deleting all the declared skills, so it uses only the settings define in Azure - - ${{ if eq(bot.type, 'Host') }}: - - task: PowerShell@2 - displayName: "Prepare .env file" - inputs: - targetType: inline - script: | - $file = "${{ bot.project.directory }}/.env" - $content = Get-Content $file - $content | ForEach-Object { - $line = $_ - if ($line.Trim().Length -gt 0 -and -not $line.Trim().ToLower().StartsWith("skill_")) { - $line - } - } | Set-Content $file - - # Evaluate dependencies source and version - - template: evaluateDependenciesVariables.yml - parameters: - botType: "${{ bot.type }}" - source: "${{ bot.project.directory }}" - registry: "${{ bot.dependency.registry }}" - version: "${{ bot.dependency.version }}" - - # Tag BotBuilder package version - - template: ../common/tagBotBuilderVersion.yml - parameters: - ${{ if eq(bot.displayName, '') }}: - botName: "${{ bot.name }}" - ${{ if ne(bot.displayName, '') }}: - botName: "${{ bot.displayName }}" - version: "$(DEPENDENCIESVERSIONNUMBER)" - - # Create App Service and Bot Channel Registration - - template: ../common/createAppService.yml - parameters: - appId: $(APPID) - appSecret: $(APPSECRET) - appServicePlan: "${{ parameters.appServicePlan }}" - appServicePlanRG: "${{ parameters.appServicePlanRG }}" - azureSubscription: "${{ parameters.azureSubscription }}" - botName: "${{ bot.name }}" - botGroup: "${{ parameters.resourceGroup }}" - botPricingTier: "${{ parameters.botPricingTier }}" - resourceSuffix: "${{ parameters.resourceSuffix }}" - templateFile: "build/templates/template-python-bot-resources.json" - - # Configure OAuth - - ${{ if eq(bot.type, 'Skill') }}: - - template: ../common/configureOAuth.yml - parameters: - appId: $(APPID) - appSecret: $(APPSECRET) - azureSubscription: "${{ parameters.azureSubscription }}" - botGroup: "${{ parameters.resourceGroup }}" - botName: "${{ bot.name }}" - connectionName: "${{ parameters.connectionName }}" - resourceSuffix: "${{ parameters.resourceSuffix }}" - - # Set Python version - - task: UsePythonVersion@0 - displayName: "Set python version to 3.8.x" - inputs: - versionSpec: "3.8.x" - - # Build Python app (linux only) - - script: | - python -m venv antenv - source antenv/bin/activate - python -m pip install --upgrade pip - pip install -r requirements.txt - workingDirectory: $(SYSTEM.DEFAULTWORKINGDIRECTORY)/${{ bot.project.directory }} - displayName: "Build Python app" - - # Zip bot - - task: ArchiveFiles@2 - displayName: "Zip bot" - inputs: - rootFolderOrFile: "$(SYSTEM.DEFAULTWORKINGDIRECTORY)/${{ bot.project.directory }}" - includeRootFolder: false - archiveType: "zip" - archiveFile: "$(SYSTEM.DEFAULTWORKINGDIRECTORY)/build/${{ bot.name }}.zip" - replaceExistingArchive: true - verbose: true - - # Upload zip to artifacts in case we want to debug it - - task: PublishBuildArtifacts@1 - displayName: "Publish zip package" - inputs: - pathToPublish: "$(SYSTEM.DEFAULTWORKINGDIRECTORY)/build/${{ bot.name }}.zip" - artifactName: python-$(BUILD.BUILDID) - - # Deploy bot - - task: AzureWebApp@1 - displayName: "Deploy Azure Web App : ${{ bot.name }}-$(BUILD.BUILDID)" - inputs: - azureSubscription: "${{ parameters.azureSubscription }}" - appName: "${{ bot.name }}${{ parameters.resourceSuffix }}-$(BUILD.BUILDID)" - appType: webAppLinux - resourceGroupName: "${{ parameters.resourceGroup }}" - package: "$(System.DefaultWorkingDirectory)/build/${{ bot.name }}.zip" - deploymentMethod: runFromPackage - - # Create DirectLine Channel Hosts - - ${{ if eq(bot.type, 'Host') }}: - - template: ../common/createDirectLine.yml - parameters: - azureSubscription: "${{ parameters.azureSubscription }}" - botGroup: "${{ parameters.resourceGroup }}" - botName: "${{ bot.name }}" - resourceSuffix: "${{ parameters.resourceSuffix }}" diff --git a/tests/functional/build/yaml/deployBotResources/python/evaluateDependenciesVariables.yml b/tests/functional/build/yaml/deployBotResources/python/evaluateDependenciesVariables.yml deleted file mode 100644 index aa8874fa4e..0000000000 --- a/tests/functional/build/yaml/deployBotResources/python/evaluateDependenciesVariables.yml +++ /dev/null @@ -1,110 +0,0 @@ -parameters: - - name: botType - displayName: Bot type - type: string - - - name: source - displayName: Bot Source Location - type: string - - - name: registry - displayName: Registry source - type: string - - - name: version - displayName: Version number - type: string - -steps: - - task: PowerShell@2 - displayName: "Evaluate source & version" - inputs: - targetType: inline - script: | - # Get Source - $sourcePypi = "https://pypi.org/simple/" - $sourceTestPypi = "https://test.pypi.org/simple/" - $sourceArtifacts = "https://pkgs.dev.azure.com/ConversationalAI/BotFramework/_packaging/SDK/pypi/simple/" - - switch -regex ("${{ parameters.registry }}") { - "^($null||Artifacts)$" { - $source = $sourceArtifacts - $extraSource = $sourcePypi - } - "Pypi" { - $source = $sourcePypi - $extraSource = $sourceArtifacts - } - "Test.Pypi" { - $source = $sourceTestPypi - $extraSource = $sourcePypi - } - default { - $source = "${{ parameters.registry }}" - $extraSource = $sourcePypi - } - } - - # Get Version Number - switch -regex ("${{ parameters.version }}") { - "^($null||LATEST)$" { - if ("${{ parameters.registry }}".ToUpper() -in "PYPI") { - [Console]::ForegroundColor = "red" - [Console]::Error.WriteLine("Preview versions of BotBuilder are not available for this source.") - [Console]::ResetColor() - exit 1 # Force exit - } - $versionNumber = "" - $preFag = "--pre" - } - STABLE { - $versionNumber = "" - } - default { - $versionNumber = "${{ parameters.version }}" - $condition = "==" - } - } - - #Add the $source source at the beginning of requirements - $file = "${{ parameters.source }}/requirements.txt" - $content = @(Get-Content $file) - $line = "$preFag --index-url $source --extra-index-url $extraSource".Trim() - Set-Content -Path $file -Value $line - Add-Content -Path $file -Value $content - - function UpdatePackageVersion($package) { - #Set Package version to empty value - $content = @(Get-Content $file) - $matchinfo = Select-String -Path $file -Pattern $package - - $script = "$package $condition $versionNumber" - - if ($matchinfo.LineNumber -gt 0) { - $content[$matchinfo.LineNumber - 1] = $script - Set-Content -Path $file -Value $content - } else { - Add-Content -Path $file -Value $script - } - } - - UpdatePackageVersion "botbuilder-dialogs" - UpdatePackageVersion "botbuilder-integration-aiohttp" - - if (-not $versionNumber) { - Invoke-Expression "pip install botbuilder-integration-aiohttp $line --quiet" - $packageVersion = pip show botbuilder-integration-aiohttp | Where-Object { $_ -match "^Version" } - $versionNumber = $packageVersion.Split(" ")[1] - } - - Write-Host "`nSource: $source" - Write-Host "Extra Source: $extraSource" - Write-Host "Version Number: $versionNumber" - - $content = @(Get-Content $file) - Write-Host "`nrequirements.txt file:" - $content - - # Set environment variables - Write-Host "##vso[task.setvariable variable=DependenciesSource]$source" - Write-Host "##vso[task.setvariable variable=DependenciesVersionNumber]$versionNumber" From b5d7a437448185e95043cc775bc502f9da468715 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig <43043272+ryanlengel@users.noreply.github.com> Date: Thu, 10 Jun 2021 14:02:16 -0700 Subject: [PATCH 17/22] Add InternalAppSerivcePlanJSName var --- .../build/yaml/deployBotResources/deployBotResources.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 7f4c323903..0db1dda1b4 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -70,6 +70,7 @@ variables: InternalAppServicePlanWindowsResourceGroup: $[coalesce(variables['APPSERVICEPLANGROUP'], 'bfcfnshared')] InternalAppServicePlanLinuxResourceGroup: $[coalesce(variables['APPSERVICEPLANGROUPLINUX'], 'bfcfnshared-linux')] InternalAppServicePlanDotNetName: $[coalesce(variables['APPSERVICEPLANDOTNETNAME'], 'bfcfnbotsappservicedotnet$(INTERNALRESOURCESUFFIX)')] + InternalAppServicePlanJSName: $[coalesce(variables['APPSERVICEPLANJSNAME'], 'bfcfnbotsappservicejs$(INTERNALRESOURCESUFFIX)')] InternalKeyVaultName: 'bfcfnbotkeyvault$(INTERNALRESOURCESUFFIX)' InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUP'], 'bfcfnbots')] InternalResourceSuffix: $[coalesce(variables['RESOURCESUFFIX'], '')] From 5eadf9eb8efeefdd5141d8267ac39ae33192f5a5 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Thu, 10 Jun 2021 17:25:10 -0700 Subject: [PATCH 18/22] Remove additional Python steps in shared resource creation, bot resource deployment and cleanup --- .../cleanupResources/cleanupResources.yml | 50 ------------------- .../deployBotResources/deployBotResources.yml | 1 - .../sharedResources/createSharedResources.yml | 18 ------- 3 files changed, 69 deletions(-) diff --git a/tests/functional/build/yaml/cleanupResources/cleanupResources.yml b/tests/functional/build/yaml/cleanupResources/cleanupResources.yml index ca5a9a6e05..a3d581b8c2 100644 --- a/tests/functional/build/yaml/cleanupResources/cleanupResources.yml +++ b/tests/functional/build/yaml/cleanupResources/cleanupResources.yml @@ -17,7 +17,6 @@ variables: InternalAppInsightsName: "bfcfnappinsights$($env:RESOURCESUFFIX)" InternalAppServicePlanDotNetName: "bfcfnbotsappservicedotnet$($env:RESOURCESUFFIX)" InternalAppServicePlanJSName: "bfcfnbotsappservicejs$($env:RESOURCESUFFIX)" - InternalAppServicePlanPythonName: "bfcfnbotsappservicepython$($env:RESOURCESUFFIX)" InternalCosmosDBName: "bfcfnbotstatedb$($env:RESOURCESUFFIX)" InternalKeyVaultName: "bfcfnbotkeyvault$($env:RESOURCESUFFIX)" InternalBotResourceGroupName: $[coalesce(variables['DEPLOYRESOURCEGROUP'], 'bfcfnbots')] @@ -51,18 +50,6 @@ stages: azureSubscription: $(AZURESUBSCRIPTION) name: "$(INTERNALBOTRESOURCEGROUPNAME)-JS" -- stage: "Delete_Python_Resource_Group" - displayName: "Delete Python's Resource Group" - dependsOn: [] - jobs: - - job: "Delete" - displayName: "Delete steps" - steps: - - template: ../common/deleteResourceGroup.yml - parameters: - azureSubscription: $(AZURESUBSCRIPTION) - name: "$(INTERNALBOTRESOURCEGROUPNAME)-Python" - - stage: "Delete_App_Service_Plan_DotNet" displayName: "Delete App Service Plan (DotNet)" dependsOn: @@ -111,30 +98,6 @@ stages: Write-Host "No pre-existing $(INTERNALAPPSERVICEPLANJSNAME) resource found." } -- stage: "Delete_App_Service_Plan_Python" - displayName: "Delete App Service Plan (Python)" - dependsOn: - - Delete_Python_Resource_Group - jobs: - - job: "Delete" - displayName: "Delete steps" - steps: - - task: AzureCLI@2 - displayName: "Delete App Service Plan (Python)" - inputs: - azureSubscription: $(AZURESUBSCRIPTION) - scriptType: pscore - scriptLocation: inlineScript - inlineScript: | - Write-Host "Looking for $(INTERNALAPPSERVICEPLANPYTHONNAME)..." - $exists = az appservice plan show --name "$(INTERNALAPPSERVICEPLANPYTHONNAME)" --resource-group "$(INTERNALSHAREDRESOURCEGROUPNAME)-linux" - if ($exists) { - Write-Host "Deleting $(INTERNALAPPSERVICEPLANPYTHONNAME)..." - az appservice plan delete --name "$(INTERNALAPPSERVICEPLANPYTHONNAME)" --resource-group "$(INTERNALSHAREDRESOURCEGROUPNAME)-linux" --yes - } else { - Write-Host "No pre-existing $(INTERNALAPPSERVICEPLANPYTHONNAME) resource found." - } - - stage: "Delete_App_Registrations" displayName: "Delete App Registrations" dependsOn: [] @@ -245,17 +208,4 @@ stages: azureSubscription: $(AZURESUBSCRIPTION) name: "$(INTERNALSHAREDRESOURCEGROUPNAME)" -- stage: "Delete_Resource_Group_Linux" - displayName: "Delete Resource Group (Linux)" - dependsOn: - - Delete_Python_Resource_Group - - Delete_App_Service_Plan_Python - jobs: - - job: "Delete" - displayName: "Delete Resource Group (Linux)" - steps: - - template: ../common/deleteResourceGroup.yml - parameters: - azureSubscription: $(AZURESUBSCRIPTION) - name: "$(INTERNALSHAREDRESOURCEGROUPNAME)-linux" diff --git a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml index 0db1dda1b4..6fd01cd5fa 100644 --- a/tests/functional/build/yaml/deployBotResources/deployBotResources.yml +++ b/tests/functional/build/yaml/deployBotResources/deployBotResources.yml @@ -46,7 +46,6 @@ variables: # AppServicePlanGroupLinux: (optional) Name of the Resource Group where the Linux App Service Plan is located. # AppServicePlanDotNetName: (optional) Name of the DotNet App Service Plan. # AppServicePlanJSName: (optional) Name of the JavaScript App Service Plan. - # AppServicePlanPythonName: (optional) Name of the Python App Service Plan. # BotPricingTier: (optional) Pricing Tier for the bots, default F0. # ResourceGroup: (optional) Name of the Resource Group where the bots will be deployed. # ResourceSuffix: (optional) Suffix to add to the resources' name to avoid collitions. diff --git a/tests/functional/build/yaml/sharedResources/createSharedResources.yml b/tests/functional/build/yaml/sharedResources/createSharedResources.yml index 320e403c91..58a998e6ed 100644 --- a/tests/functional/build/yaml/sharedResources/createSharedResources.yml +++ b/tests/functional/build/yaml/sharedResources/createSharedResources.yml @@ -21,7 +21,6 @@ variables: InternalAppInsightsName: "bfcfnappinsights$($env:RESOURCESUFFIX)" InternalAppServicePlanDotNetName: "bfcfnbotsappservicedotnet$($env:RESOURCESUFFIX)" InternalAppServicePlanJSName: "bfcfnbotsappservicejs$($env:RESOURCESUFFIX)" - InternalAppServicePlanPythonName: "bfcfnbotsappservicepython$($env:RESOURCESUFFIX)" InternalCosmosDBName: "bfcfnbotstatedb$($env:RESOURCESUFFIX)" InternalKeyVaultName: "bfcfnbotkeyvault$($env:RESOURCESUFFIX)" InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUPNAME'], 'bfcfnshared')] @@ -139,23 +138,6 @@ stages: $appServicePlanPricingTier = if ($env:APPSERVICEPLANPRICINGTIER) { "newAppServicePlanSku=$env:APPSERVICEPLANPRICINGTIER" } az deployment group create --name "$(INTERNALAPPSERVICEPLANJSNAME)" --resource-group "$(INTERNALRESOURCEGROUPNAME)" --template-file build/templates/template-service-plan-windows-resources.json --parameters $appServicePlanPricingTier newAppServicePlanName="$(INTERNALAPPSERVICEPLANJSNAME)" -- stage: Create_App_Service_Plan_Python - displayName: "Create App Service Plan (Python)" - dependsOn: Create_Resource_Group_Linux - jobs: - - job: Deploy_App_Service_Plan_Python - displayName: "Deploy steps" - steps: - - task: AzureCLI@2 - displayName: "Deploy App Service Plan (Python)" - inputs: - azureSubscription: $(AZURESUBSCRIPTION) - scriptType: pscore - scriptLocation: inlineScript - inlineScript: | - $appServicePlanPricingTier = if ($env:APPSERVICEPLANPRICINGTIER) { "newAppServicePlanSku=$env:APPSERVICEPLANPRICINGTIER" } - az deployment group create --name "$(INTERNALAPPSERVICEPLANPYTHONNAME)" --resource-group "$(INTERNALRESOURCEGROUPNAME)-linux" --template-file build/templates/template-service-plan-linux-resources.json --parameters $appServicePlanPricingTier newAppServicePlanName="$(INTERNALAPPSERVICEPLANPYTHONNAME)" - - stage: Create_App_Insights displayName: "Create App Insights" dependsOn: Create_Resource_Group_Windows From 1b90ae8ceb373b4019ea5a645d2e7843d29b6ccd Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Fri, 11 Jun 2021 10:51:52 -0700 Subject: [PATCH 19/22] Change default value of appinsights resource --- build/templates/template-app-insights-resources.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/templates/template-app-insights-resources.json b/build/templates/template-app-insights-resources.json index 640b82e924..0fa26fa2e3 100644 --- a/build/templates/template-app-insights-resources.json +++ b/build/templates/template-app-insights-resources.json @@ -4,7 +4,7 @@ "parameters": { "appInsightsName": { "type": "string", - "defaultValue": "bffnappinsights", + "defaultValue": "bfcfnappinsights", "metadata": { "description": "The name of the Application Insights instance." } From aa167fa1539377dca613f7241f6270cf764b10d8 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Fri, 11 Jun 2021 11:16:24 -0700 Subject: [PATCH 20/22] Add blog storage deployment to shared resource creation --- .../templates/template-storage-resources.json | 70 +++++++++++++++++++ .../sharedResources/createSharedResources.yml | 17 +++++ 2 files changed, 87 insertions(+) create mode 100644 build/templates/template-storage-resources.json diff --git a/build/templates/template-storage-resources.json b/build/templates/template-storage-resources.json new file mode 100644 index 0000000000..5991d5cd5e --- /dev/null +++ b/build/templates/template-storage-resources.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccountsName": { + "defaultValue": "bfcfnstorage", + "type": "String" + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Specifies the Azure location where the storage account should be created." + } + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2021-04-01", + "name": "[parameters('storageAccountsName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "networkAcls": { + "bypass": "AzureServices", + "virtualNetworkRules": [], + "ipRules": [], + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "blob": { + "keyType": "Account", + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices", + "apiVersion": "2021-04-01", + "name": "[concat(parameters('storageAccountsName'), '/default')]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountsName'))]" + ], + "sku": { + "name": "Standard_LRS", + "tier": "Standard" + }, + "properties": { + "cors": { + "corsRules": [] + }, + "deleteRetentionPolicy": { + "enabled": false + } + } + } + ] +} \ No newline at end of file diff --git a/tests/functional/build/yaml/sharedResources/createSharedResources.yml b/tests/functional/build/yaml/sharedResources/createSharedResources.yml index 58a998e6ed..8e9f13f329 100644 --- a/tests/functional/build/yaml/sharedResources/createSharedResources.yml +++ b/tests/functional/build/yaml/sharedResources/createSharedResources.yml @@ -22,6 +22,7 @@ variables: InternalAppServicePlanDotNetName: "bfcfnbotsappservicedotnet$($env:RESOURCESUFFIX)" InternalAppServicePlanJSName: "bfcfnbotsappservicejs$($env:RESOURCESUFFIX)" InternalCosmosDBName: "bfcfnbotstatedb$($env:RESOURCESUFFIX)" + InternalStorageName: "bfcfnbotstroage$($env:RESOURCESUFFIX)" InternalKeyVaultName: "bfcfnbotkeyvault$($env:RESOURCESUFFIX)" InternalResourceGroupName: $[coalesce(variables['RESOURCEGROUPNAME'], 'bfcfnshared')] @@ -72,6 +73,22 @@ stages: scriptLocation: inlineScript inlineScript: "az deployment group create --name $(INTERNALCOSMOSDBNAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-cosmosdb-resources.json --parameters accountName=$(INTERNALCOSMOSDBNAME) databaseName=$(INTERNALCOSMOSDBNAME)" +- stage: Create_Blob_Storage + displayName: "Create Blob storage" + dependsOn: Create_Resource_Group_Windows + jobs: + - job: Deploy_Blob_Storage + displayName: "Deploy steps" + steps: + - task: AzureCLI@2 + displayName: "Deploy Blob storage" + inputs: + azureSubscription: $(AZURESUBSCRIPTION) + scriptType: pscore + scriptLocation: inlineScript + inlineScript: "az deployment group create --name $(INTERNALSTORAGENAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-storage-resources.json" + + - stage: Create_Key_Vault displayName: "Create Key Vault" dependsOn: Create_Resource_Group_Windows From 28a0a0127812d220087ac954b009bf53b29d8e90 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Fri, 11 Jun 2021 11:18:37 -0700 Subject: [PATCH 21/22] add parameter to cli call to deploy storage --- .../sharedResources/createSharedResources.yml | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/tests/functional/build/yaml/sharedResources/createSharedResources.yml b/tests/functional/build/yaml/sharedResources/createSharedResources.yml index 8e9f13f329..1706dd735c 100644 --- a/tests/functional/build/yaml/sharedResources/createSharedResources.yml +++ b/tests/functional/build/yaml/sharedResources/createSharedResources.yml @@ -73,22 +73,6 @@ stages: scriptLocation: inlineScript inlineScript: "az deployment group create --name $(INTERNALCOSMOSDBNAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-cosmosdb-resources.json --parameters accountName=$(INTERNALCOSMOSDBNAME) databaseName=$(INTERNALCOSMOSDBNAME)" -- stage: Create_Blob_Storage - displayName: "Create Blob storage" - dependsOn: Create_Resource_Group_Windows - jobs: - - job: Deploy_Blob_Storage - displayName: "Deploy steps" - steps: - - task: AzureCLI@2 - displayName: "Deploy Blob storage" - inputs: - azureSubscription: $(AZURESUBSCRIPTION) - scriptType: pscore - scriptLocation: inlineScript - inlineScript: "az deployment group create --name $(INTERNALSTORAGENAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-storage-resources.json" - - - stage: Create_Key_Vault displayName: "Create Key Vault" dependsOn: Create_Resource_Group_Windows @@ -169,3 +153,18 @@ stages: scriptType: pscore scriptLocation: inlineScript inlineScript: "az deployment group create --name $(INTERNALAPPINSIGHTSNAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-app-insights-resources.json --parameters appInsightsName=$(INTERNALAPPINSIGHTSNAME)" + +- stage: Create_Blob_Storage + displayName: "Create Blob storage" + dependsOn: Create_Resource_Group_Windows + jobs: + - job: Deploy_Blob_Storage + displayName: "Deploy steps" + steps: + - task: AzureCLI@2 + displayName: "Deploy Blob storage" + inputs: + azureSubscription: $(AZURESUBSCRIPTION) + scriptType: pscore + scriptLocation: inlineScript + inlineScript: "az deployment group create --name $(INTERNALSTORAGENAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-storage-resources.json --parameters storageAccountsName=$(INTERNALSTORAGENAME)" From 55f84fe4eb5535cb26e7b5c14003dbbdfb288cb3 Mon Sep 17 00:00:00 2001 From: Ryan Lengel Isgrig Date: Fri, 11 Jun 2021 11:40:29 -0700 Subject: [PATCH 22/22] fix casing --- .../build/yaml/sharedResources/createSharedResources.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/build/yaml/sharedResources/createSharedResources.yml b/tests/functional/build/yaml/sharedResources/createSharedResources.yml index 1706dd735c..f593314d46 100644 --- a/tests/functional/build/yaml/sharedResources/createSharedResources.yml +++ b/tests/functional/build/yaml/sharedResources/createSharedResources.yml @@ -155,14 +155,14 @@ stages: inlineScript: "az deployment group create --name $(INTERNALAPPINSIGHTSNAME) --resource-group $(INTERNALRESOURCEGROUPNAME) --template-file build/templates/template-app-insights-resources.json --parameters appInsightsName=$(INTERNALAPPINSIGHTSNAME)" - stage: Create_Blob_Storage - displayName: "Create Blob storage" + displayName: "Create Blob Storage" dependsOn: Create_Resource_Group_Windows jobs: - job: Deploy_Blob_Storage displayName: "Deploy steps" steps: - task: AzureCLI@2 - displayName: "Deploy Blob storage" + displayName: "Deploy Blob Storage" inputs: azureSubscription: $(AZURESUBSCRIPTION) scriptType: pscore

    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 z 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 S|B-LI|KfuG|MK5*0{;W>vfD%e diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/teams-logo.png b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/cards/files/teams-logo.png deleted file mode 100644 index 78b0a0c308939206aee5f15e2c052def7a18a74e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6412 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 F{{vnI6G{L8 diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/__init__.py deleted file mode 100644 index 414664e1eb..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .delete_dialog import DeleteDialog - -__all__ = ["DeleteDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/delete_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/delete_dialog.py deleted file mode 100644 index 216701f750..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/delete/delete_dialog.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import time -from botbuilder.core import MessageFactory -from botbuilder.dialogs import ( - ComponentDialog, - WaterfallDialog, - WaterfallStepContext, - DialogTurnResult, - DialogTurnStatus, -) -from botframework.connector import Channels - - -class DeleteDialog(ComponentDialog): - def __init__(self): - super().__init__(DeleteDialog.__name__) - self._delete_supported = [Channels.ms_teams, Channels.slack, Channels.telegram] - - self.add_dialog( - WaterfallDialog(WaterfallDialog.__name__, [self.handle_delete_dialog_step]) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def handle_delete_dialog_step(self, step_context: WaterfallStepContext): - channel = step_context.context.activity.channel_id - - if channel in self._delete_supported: - response = await step_context.context.send_activity( - MessageFactory.text("I will delete this message in 5 seconds") - ) - time.sleep(5) - await step_context.context.delete_activity(response.id) - - else: - await step_context.context.send_activity( - MessageFactory.text( - f"Delete is not supported in the {channel} channel." - ) - ) - - return DialogTurnResult(DialogTurnStatus.Complete) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/__init__.py deleted file mode 100644 index b665b303db..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .file_upload_dialog import FileUploadDialog - -__all__ = ["FileUploadDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/file_upload_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/file_upload_dialog.py deleted file mode 100644 index 374a1906a6..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/file_upload/file_upload_dialog.py +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import tempfile -import os -import urllib.request -import shutil -from botbuilder.core import MessageFactory -from botbuilder.dialogs import ( - ComponentDialog, - DialogTurnResult, - DialogTurnStatus, - WaterfallDialog, - WaterfallStepContext, - ConfirmPrompt, -) -from botbuilder.dialogs.prompts import PromptOptions, AttachmentPrompt -from botbuilder.schema import InputHints - - -class FileUploadDialog(ComponentDialog): - def __init__(self): - super().__init__(FileUploadDialog.__name__) - - self.add_dialog(AttachmentPrompt(AttachmentPrompt.__name__)) - self.add_dialog(ConfirmPrompt(ConfirmPrompt.__name__)) - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [self.prompt_upload_step, self.handle_attachment_step, self.final_step], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def prompt_upload_step(self, step_context: WaterfallStepContext): - return await step_context.prompt( - AttachmentPrompt.__name__, - PromptOptions( - prompt=MessageFactory.text( - "Please upload a file to continue.", input_hint=InputHints.accepting_input - ), - retry_prompt=MessageFactory.text("You must upload a file."), - ), - ) - - async def handle_attachment_step(self, step_context: WaterfallStepContext): - file_text = "" - file_content = "" - - for file in step_context.context.activity.attachments: - remote_file_url = file.content_url - local_file_name = os.path.join(tempfile.gettempdir(), file.name) - with urllib.request.urlopen(remote_file_url) as response, open( - local_file_name, "wb" - ) as out_file: - shutil.copyfileobj(response, out_file) - - file_content = open(local_file_name, "r").read() - file_text += f'Attachment "{ file.name }" has been received.\r\n' - file_text += f'File content: { file_content }\r\n' - - await step_context.context.send_activity(MessageFactory.text(file_text)) - - # Ask to upload another file or end. - message_text = "Do you want to upload another file?" - reprompt_message_text = "That's an invalid choice." - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text, InputHints.expecting_input - ), - ) - - return await step_context.prompt(ConfirmPrompt.__name__, options) - - async def final_step(self, step_context: WaterfallStepContext): - try_another = step_context.result - - if try_another: - return await step_context.replace_dialog(self.initial_dialog_id) - - return DialogTurnResult(DialogTurnStatus.Complete) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/__init__.py deleted file mode 100644 index efe3140792..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .message_with_attachment_dialog import MessageWithAttachmentDialog - -__all__ = ["MessageWithAttachmentDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/message_with_attachment_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/message_with_attachment_dialog.py deleted file mode 100644 index 419fc3cbe4..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/message_with_attachment/message_with_attachment_dialog.py +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -import os -import base64 -from botbuilder.core import MessageFactory -from botbuilder.dialogs import ( - ComponentDialog, - ConfirmPrompt, - ChoicePrompt, - DialogTurnResult, - DialogTurnStatus, - WaterfallDialog, - WaterfallStepContext, - Choice, -) -from botbuilder.dialogs.prompts import PromptOptions -from botbuilder.schema import ( - Attachment, - InputHints -) - -from config import DefaultConfig - - -class MessageWithAttachmentDialog(ComponentDialog): - def __init__(self, configuration: DefaultConfig): - super().__init__(MessageWithAttachmentDialog.__name__) - - self._picture = "architecture-resize.png" - self.configuration = configuration - - self.add_dialog(ChoicePrompt(ChoicePrompt.__name__)) - self.add_dialog(ConfirmPrompt(ConfirmPrompt.__name__)) - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self.select_attachment_type_step, - self.send_activity_with_attachment_step, - self.final_step, - ], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def select_attachment_type_step(self, step_context: WaterfallStepContext): - # Create the PromptOptions from the skill configuration which contain the list of configured skills. - message_text = "What attachment type do you want?" - reprompt_message_text = ( - "That was not a valid choice, please select a valid card type." - ) - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text, InputHints.expecting_input - ), - choices=[Choice("Inline"), Choice("Internet")], - ) - - return await step_context.prompt(ChoicePrompt.__name__, options) - - async def send_activity_with_attachment_step( - self, step_context: WaterfallStepContext - ): - attachment_type = str(step_context.result.value).lower() - reply = MessageFactory.text("", input_hint=InputHints.ignoring_input) - - if attachment_type == "inline": - reply.text = "This is an inline attachment." - reply.attachments = [await self.get_inline_attachment()] - - elif attachment_type == "internet": - reply.text = "This is an attachment from a HTTP URL." - reply.attachments = [await self.get_internet_attachment()] - - else: - raise TypeError(f"Invalid card type {attachment_type}") - - await step_context.context.send_activity(reply) - - message_text = "Do you want another type of attachment?" - reprompt_message_text = "That's an invalid choice." - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text, InputHints.expecting_input - ), - ) - - return await step_context.prompt(ConfirmPrompt.__name__, options) - - async def final_step(self, step_context: WaterfallStepContext): - try_another = step_context.result - - if try_another: - return await step_context.replace_dialog(self.initial_dialog_id) - - return DialogTurnResult(DialogTurnStatus.Complete) - - async def get_inline_attachment(self): - file_path = os.path.join(os.getcwd(), "images", self._picture) - - with open(file_path, "rb") as in_file: - file = base64.b64encode(in_file.read()).decode() - - return Attachment( - name=f"Files/{ self._picture }", - content_type="image/png", - content_url=f"data:image/png;base64,{file}", - ) - - async def get_internet_attachment(self): - return Attachment( - name=f"Files/{ self._picture }", - content_type="image/png", - content_url=f"{self.configuration.SERVER_URL}/images/{self._picture}", - ) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/__init__.py deleted file mode 100644 index 9f8161fa73..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .continuation_parameters import ContinuationParameters -from .wait_for_proactive_dialog import WaitForProactiveDialog - -__all__ = ["ContinuationParameters", "WaitForProactiveDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/continuation_parameters.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/continuation_parameters.py deleted file mode 100644 index 0ab78fb9e3..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/continuation_parameters.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.schema import ConversationReference - - -class ContinuationParameters: - def __init__( - self, - claims_identity: str, - oauth_scope: str, - conversation_reference: ConversationReference, - ): - self.claims_identity = claims_identity - self.oauth_scope = oauth_scope - self.conversation_reference = conversation_reference diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/wait_for_proactive_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/wait_for_proactive_dialog.py deleted file mode 100644 index 845295d6dd..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/proactive/wait_for_proactive_dialog.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import Dict -from botbuilder.core import MessageFactory, BotAdapter, TurnContext -from botbuilder.dialogs import Dialog, DialogContext, DialogTurnResult, DialogTurnStatus -from botbuilder.schema import ( - ActivityTypes, - ActivityEventNames -) -from config import DefaultConfig -from .continuation_parameters import ContinuationParameters - - -class WaitForProactiveDialog(Dialog): - def __init__( - self, - configuration: DefaultConfig, - continuation_parameters_store: Dict[str, ContinuationParameters], - ): - super().__init__(WaitForProactiveDialog.__name__) - self.configuration = configuration - self.continuation_parameters_store = continuation_parameters_store - - def notify_message(self, url: str, user_id: str): - return f"Navigate to { url }/api/notify?user={ user_id } to proactively message the user." - - async def begin_dialog(self, dialog_context: DialogContext, options: object = None): - # Store a reference to the conversation. - self.add_or_update_continuation_parameters(dialog_context.context) - - # Render message with continuation link. - await dialog_context.context.send_activity( - MessageFactory.text( - self.notify_message( - self.configuration.SERVER_URL, - dialog_context.context.activity.from_property.id, - ) - ) - ) - return Dialog.end_of_turn - - async def continue_dialog(self, dialog_context: DialogContext): - activity = dialog_context.context.activity - if ( - activity.type == ActivityTypes.event - and activity.name == ActivityEventNames.continue_conversation - ): - # We continued the conversation, forget the proactive reference. - self.continuation_parameters_store[activity.id] = None - - # The continue conversation activity comes from the ProactiveController when the notification is received - await dialog_context.context.send_activity( - "We received a proactive message, ending the dialog" - ) - - # End the dialog so the host gets an EoC - return DialogTurnResult(DialogTurnStatus.Complete) - - # Keep waiting for a call to the ProactiveController. - await dialog_context.context.send_activity( - f"We are waiting for a proactive message. " - f"{self.notify_message(self.configuration, activity.from_property.id)}" - ) - - return Dialog.end_of_turn - - def add_or_update_continuation_parameters(self, context: TurnContext): - self.continuation_parameters_store[ - context.activity.from_property.id - ] = ContinuationParameters( - claims_identity=context.turn_state.get(BotAdapter.BOT_IDENTITY_KEY), - conversation_reference=TurnContext.get_conversation_reference( - context.activity - ), - oauth_scope=context.turn_state.get(BotAdapter.BOT_OAUTH_SCOPE_KEY), - ) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/__init__.py deleted file mode 100644 index fc79378126..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .sso_skill_dialog import SsoSkillDialog -from .sso_skill_signin_dialog import SsoSkillSignInDialog - -__all__ = ["SsoSkillDialog", "SsoSkillSignInDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_dialog.py deleted file mode 100644 index 042c00c0e8..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_dialog.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.core import MessageFactory -from botbuilder.dialogs import ( - DialogTurnResult, - DialogTurnStatus, - ChoicePrompt, - PromptOptions, - WaterfallDialog, - WaterfallStepContext, - ComponentDialog, - Choice, -) -from botbuilder.schema import InputHints -from config import DefaultConfig -from .sso_skill_signin_dialog import SsoSkillSignInDialog - - -class SsoSkillDialog(ComponentDialog): - def __init__(self, configuration: DefaultConfig): - super().__init__(SsoSkillDialog.__name__) - - self.connection_name = configuration.SSO_CONNECTION_NAME - - self.add_dialog(SsoSkillSignInDialog(self.connection_name)) - self.add_dialog(ChoicePrompt(ChoicePrompt.__name__)) - - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [ - self.prompt_action_step, - self.handle_action_step, - self.prompt_final_step, - ], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def prompt_action_step(self, step_context: WaterfallStepContext): - message_text = "What SSO action would you like to perform on the skill?" - reprompt_message_text = ( - "That was not a valid choice, please select a valid choice." - ) - - options = PromptOptions( - prompt=MessageFactory.text( - message_text, message_text, InputHints.expecting_input - ), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text, InputHints.expecting_input - ), - choices=await self.get_prompt_choices(step_context), - ) - - return await step_context.prompt(ChoicePrompt.__name__, options) - - async def get_prompt_choices(self, step_context: WaterfallStepContext): - choices = list() - token = await step_context.context.adapter.get_user_token( - step_context.context, self.connection_name - ) - - if token is None: - choices.append(Choice("Login")) - - else: - choices.append(Choice("Logout")) - choices.append(Choice("Show token")) - - choices.append(Choice("End")) - - return choices - - async def handle_action_step(self, step_context: WaterfallStepContext): - action = str(step_context.result.value).lower() - - if action == "login": - return await step_context.begin_dialog(SsoSkillSignInDialog.__name__) - - if action == "logout": - await step_context.context.adapter.sign_out_user( - step_context.context, self.connection_name - ) - await step_context.context.send_activity("You have been signed out.") - return await step_context.next(None) - - if action == "show token": - token = await step_context.context.adapter.get_user_token( - step_context.context, self.connection_name - ) - - if token is None: - await step_context.context.send_activity("User has no cached token.") - else: - await step_context.context.send_activity( - f"Here is your current SSO token: { token.token }" - ) - - return await step_context.next(None) - - if action == "end": - return DialogTurnResult(DialogTurnStatus.Complete) - - # This should never be hit since the previous prompt validates the choice. - raise Exception(f"Unrecognized action: { action }") - - async def prompt_final_step(self, step_context: WaterfallStepContext): - # Restart the dialog (we will exit when the user says end). - return await step_context.replace_dialog(self.initial_dialog_id) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_signin_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_signin_dialog.py deleted file mode 100644 index 4d974f4703..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/sso/sso_skill_signin_dialog.py +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from botbuilder.dialogs import ( - ComponentDialog, - OAuthPrompt, - OAuthPromptSettings, - WaterfallDialog, - WaterfallStepContext, -) - - -class SsoSkillSignInDialog(ComponentDialog): - def __init__(self, connection_name: str): - super().__init__(SsoSkillSignInDialog.__name__) - - self.add_dialog( - OAuthPrompt( - OAuthPrompt.__name__, - OAuthPromptSettings( - connection_name=connection_name, - text="Sign in to the Skill using AAD", - title="Sign In", - ), - ) - ) - - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, [self.signin_step, self.display_token] - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def signin_step(self, step_context: WaterfallStepContext): - return await step_context.begin_dialog(OAuthPrompt.__name__) - - async def display_token(self, step_context: WaterfallStepContext): - sso_token = step_context.result - if sso_token: - if isinstance(sso_token, dict): - token = sso_token.get("token") - else: - token = sso_token.token - - await step_context.context.send_activity( - f"Here is your token for the skill: {token}" - ) - - else: - await step_context.context.send_activity( - "No token was provided for the skill." - ) - - return await step_context.end_dialog() diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/__init__.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/__init__.py deleted file mode 100644 index 3f01584aaa..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from .update_dialog import UpdateDialog - -__all__ = ["UpdateDialog"] diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/update_dialog.py b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/update_dialog.py deleted file mode 100644 index 30c4907d04..0000000000 --- a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/dialogs/update/update_dialog.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. - -from typing import Dict - -from botbuilder.core import MessageFactory -from botbuilder.dialogs import ( - ComponentDialog, - ConfirmPrompt, - WaterfallDialog, - WaterfallStepContext, - DialogTurnResult, - DialogTurnStatus, - PromptOptions, -) -from botframework.connector import Channels - - -class UpdateDialog(ComponentDialog): - def __init__(self): - super().__init__(UpdateDialog.__name__) - - self._update_supported = [Channels.ms_teams, Channels.slack, Channels.telegram] - - self._update_tracker: Dict[str, (str, int)] = {} - - self.add_dialog(ConfirmPrompt(ConfirmPrompt.__name__)) - self.add_dialog( - WaterfallDialog( - WaterfallDialog.__name__, - [self.handle_update_dialog_step, self.final_step], - ) - ) - - self.initial_dialog_id = WaterfallDialog.__name__ - - async def handle_update_dialog_step(self, step_context: WaterfallStepContext): - channel = step_context.context.activity.channel_id - if channel in self._update_supported: - if step_context.context.activity.conversation.id in self._update_tracker: - conversation_id = step_context.context.activity.conversation.id - tracked_tuple = self._update_tracker[conversation_id] - activity = MessageFactory.text( - f"This message has been updated {tracked_tuple.item2} time(s)." - ) - - tracked_tuple.item2 += 1 - activity.id = tracked_tuple.item1 - self._update_tracker[conversation_id] = tracked_tuple - - await step_context.context.update_activity(activity) - - else: - response = await step_context.context.send_activity( - MessageFactory.text("Here is the original activity.") - ) - self._update_tracker[step_context.context.activity.conversation.id] = ( - response.id, - 1, - ) - - else: - await step_context.context.send_activity( - MessageFactory.text( - f"Delete is not supported in the {channel} channel." - ) - ) - - return DialogTurnResult(DialogTurnStatus.Complete) - - # Ask if we want to update the activity again. - message_text = "Do you want to update the activity again?" - reprompt_message_text = "Please select a valid answer" - options = PromptOptions( - prompt=MessageFactory.text(message_text, message_text), - retry_prompt=MessageFactory.text( - reprompt_message_text, reprompt_message_text - ), - ) - - return await step_context.prompt(ConfirmPrompt.__name__, options) - - async def final_step(self, step_context: WaterfallStepContext): - try_another = step_context.result - if try_another: - return await step_context.replace_dialog(self.initial_dialog_id) - - self._update_tracker.pop(step_context.context.activity.conversation.id) - - return DialogTurnResult(DialogTurnStatus.Complete) diff --git a/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/images/architecture-resize.png b/tests/functional/Bots/Python/Skills/CodeFirst/WaterfallSkillBot/images/architecture-resize.png deleted file mode 100644 index e65f0f7332b79a3f65cd5a4ea6c33c7b5f979f25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137666 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%0DQgMmd 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