diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/README.md b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/README.md
index 85269b70..4ff2cc08 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/README.md
+++ b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/README.md
@@ -32,7 +32,7 @@ This sample is a Spring Boot app and uses the Azure CLI and azure-webapp Maven p
As described on [Deploy your bot](https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-deploy-az-cli), you will perform the first 4 steps to setup the Azure app, then deploy the code using the azure-webapp Maven plugin.
### 1. Login to Azure
-From a command (or PowerShell) prompt in the root of the bot folder, execute:
+From a command (or PowerShell) prompt in the root of the bot folder, execute:
`az login`
### 2. Set the subscription
@@ -45,7 +45,7 @@ If you aren't sure which subscription to use for deploying the bot, you can view
Replace `` and `` with your own values.
-`` is the unique name of your bot.
+`` is the unique name of your bot.
`` is a minimum 16 character password for your bot.
Record the `appid` from the returned JSON
@@ -54,15 +54,15 @@ Record the `appid` from the returned JSON
Replace the values for ``, ``, ``, and `` in the following commands:
#### To a new Resource Group
-`az deployment create --name "echoBotDeploy" --location "westus" --template-file ".\deploymentTemplates\template-with-new-rg.json" --parameters groupName="" botId="" appId="" appSecret=""`
+`az deployment sub create --name "echoBotDeploy" --location "westus" --template-file ".\deploymentTemplates\template-with-new-rg.json" --parameters appId="" appSecret="" botId="" botSku=S1 newAppServicePlanName="echoBotPlan" newWebAppName="echoBot" groupLocation="westus" newAppServicePlanLocation="westus"`
#### To an existing Resource Group
-`az group deployment create --name "echoBotDeploy" --resource-group "" --template-file ".\deploymentTemplates\template-with-preexisting-rg.json" --parameters botId="" appId="" appSecret=""`
+`az deployment group create --resource-group "" --template-file ".\deploymentTemplates\template-with-preexisting-rg.json" --parameters appId="" appSecret="" botId="" newWebAppName="echoBot" newAppServicePlanName="echoBotPlan" appServicePlanLocation="westus" --name "echoBot"`
### 5. Update app id and password
In src/main/resources/application.properties update
- - `MicrosoftAppPassword` with the botsecret value
- - `MicrosoftAppId` with the appid from the first step
+- `MicrosoftAppPassword` with the botsecret value
+- `MicrosoftAppId` with the appid from the first step
### 6. Deploy the code
- Execute `mvn clean package`
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/new-rg-parameters.json b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/new-rg-parameters.json
deleted file mode 100644
index 2619e0c5..00000000
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/new-rg-parameters.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "groupLocation": {
- "value": ""
- },
- "groupName": {
- "value": ""
- },
- "appId": {
- "value": ""
- },
- "appSecret": {
- "value": ""
- },
- "botId": {
- "value": ""
- },
- "botSku": {
- "value": ""
- },
- "newAppServicePlanName": {
- "value": ""
- },
- "newAppServicePlanSku": {
- "value": {
- "name": "S1",
- "tier": "Standard",
- "size": "S1",
- "family": "S",
- "capacity": 1
- }
- },
- "newAppServicePlanLocation": {
- "value": ""
- },
- "newWebAppName": {
- "value": ""
- }
- }
-}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/preexisting-rg-parameters.json b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/preexisting-rg-parameters.json
deleted file mode 100644
index f42bb04f..00000000
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/preexisting-rg-parameters.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "appId": {
- "value": ""
- },
- "appSecret": {
- "value": ""
- },
- "botId": {
- "value": ""
- },
- "botSku": {
- "value": ""
- },
- "newAppServicePlanName": {
- "value": ""
- },
- "newAppServicePlanSku": {
- "value": {
- "name": "S1",
- "tier": "Standard",
- "size": "S1",
- "family": "S",
- "capacity": 1
- }
- },
- "appServicePlanLocation": {
- "value": ""
- },
- "existingAppServicePlan": {
- "value": ""
- },
- "newWebAppName": {
- "value": ""
- }
- }
-}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-new-rg.json b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-new-rg.json
index ebc52099..ec2460d3 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-new-rg.json
+++ b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-new-rg.json
@@ -1,204 +1,291 @@
{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "groupLocation": {
- "defaultValue": "",
- "type": "string",
- "metadata": {
- "description": "Specifies the location of the Resource Group."
- }
- },
- "groupName": {
- "type": "string",
- "metadata": {
- "description": "Specifies the name of the Resource Group."
- }
- },
- "appId": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
- }
- },
- "appSecret": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings."
- }
- },
- "botId": {
- "type": "string",
- "metadata": {
- "description":
- "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
- }
- },
- "botSku": {
- "defaultValue": "F0",
- "type": "string",
- "metadata": {
- "description":
- "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
- }
- },
- "newAppServicePlanName": {
- "defaultValue": "",
- "type": "string",
- "metadata": {
- "description": "The name of the App Service Plan."
- }
- },
- "newAppServicePlanSku": {
- "type": "object",
- "defaultValue": {
- "name": "P1v2",
- "tier": "PremiumV2",
- "size": "P1v2",
- "family": "Pv2",
- "capacity": 1
- },
- "metadata": {
- "description":
- "The SKU of the App Service Plan. Defaults to Standard values."
- }
- },
- "newAppServicePlanLocation": {
- "defaultValue": "",
- "type": "string",
- "metadata": {
- "description":
- "The location of the App Service Plan. Defaults to \"westus\"."
- }
- },
- "newWebAppName": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description":
- "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
- }
- }
- },
- "variables": {
- "resourcesLocation": "[deployment().location]",
- "effectiveGroupLocation":
- "[if(empty(parameters('groupLocation')), variables('resourcesLocation'), parameters('groupLocation'))]",
- "effectivePlanLocation":
- "[if(empty(parameters('newAppServicePlanLocation')), variables('resourcesLocation'), parameters('newAppServicePlanLocation'))]",
- "appServicePlanName":
- "[if(empty(parameters('newAppServicePlanName')), concat(parameters('botId'), 'ServicePlan'), parameters('newAppServicePlanName'))]",
- "webAppName":
- "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
- "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
- "botEndpoint":
- "[concat('https://', variables('siteHost'), '/api/messages')]"
- },
- "resources": [
- {
- "name": "[parameters('groupName')]",
- "type": "Microsoft.Resources/resourceGroups",
- "apiVersion": "2018-05-01",
- "location": "[variables('effectiveGroupLocation')]",
- "properties": {}
- },
- {
- "type": "Microsoft.Resources/deployments",
- "apiVersion": "2018-05-01",
- "name": "storageDeployment",
- "resourceGroup": "[parameters('groupName')]",
- "dependsOn": [
- "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]"
- ],
- "properties": {
- "mode": "Incremental",
- "template": {
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {},
- "variables": {},
- "resources": [
- {
- "comments": "Create a new App Service Plan",
- "type": "Microsoft.Web/serverfarms",
- "name": "[variables('appServicePlanName')]",
- "apiVersion": "2018-02-01",
- "location": "[variables('effectivePlanLocation')]",
- "sku": "[parameters('newAppServicePlanSku')]",
- "kind": "linux",
- "properties": {
- "name": "[variables('appServicePlanName')]",
- "reserved": true
- }
- },
- {
- "comments": "Create a Web App using the new App Service Plan",
- "type": "Microsoft.Web/sites",
- "apiVersion": "2015-08-01",
- "location": "[variables('resourcesLocation')]",
- "kind": "app",
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
- ],
- "name": "[variables('webAppName')]",
- "properties": {
- "name": "[variables('webAppName')]",
- "serverFarmId": "[variables('appServicePlanName')]",
- "siteConfig": {
- "appSettings": [
- {
- "name": "JAVA_OPTS",
- "value": "-Dserver.port=80"
- },
- {
- "name": "MicrosoftAppId",
- "value": "[parameters('appId')]"
- },
- {
- "name": "MicrosoftAppPassword",
- "value": "[parameters('appSecret')]"
- }
- ],
- "cors": {
- "allowedOrigins": [
- "https://botservice.hosting.portal.azure.net",
- "https://hosting.onecloud.azure-test.net/"
- ]
- }
- }
- }
- },
- {
- "apiVersion": "2017-12-01",
- "type": "Microsoft.BotService/botServices",
- "name": "[parameters('botId')]",
- "location": "global",
- "kind": "bot",
- "sku": {
- "name": "[parameters('botSku')]"
- },
- "properties": {
- "name": "[parameters('botId')]",
- "displayName": "[parameters('botId')]",
- "endpoint": "[variables('botEndpoint')]",
- "msaAppId": "[parameters('appId')]",
- "developerAppInsightsApplicationId": null,
- "developerAppInsightKey": null,
- "publishingCredentials": null,
- "storageResourceId": null
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
- ]
+ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "groupLocation": {
+ "defaultValue": "",
+ "type": "string",
+ "metadata": {
+ "description": "Specifies the location of the Resource Group."
+ }
+ },
+ "groupName": {
+ "type": "string",
+ "metadata": {
+ "description": "Specifies the name of the Resource Group."
+ }
+ },
+ "appId": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
+ }
+ },
+ "appSecret": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings."
+ }
+ },
+ "botId": {
+ "type": "string",
+ "metadata": {
+ "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
+ }
+ },
+ "botSku": {
+ "defaultValue": "S1",
+ "type": "string",
+ "metadata": {
+ "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
+ }
+ },
+ "newAppServicePlanName": {
+ "defaultValue": "",
+ "type": "string",
+ "metadata": {
+ "description": "The name of the App Service Plan."
+ }
+ },
+ "newAppServicePlanSku": {
+ "type": "object",
+ "defaultValue": {
+ "name": "P1v2",
+ "tier": "PremiumV2",
+ "size": "P1v2",
+ "family": "Pv2",
+ "capacity": 1
+ },
+ "metadata": {
+ "description": "The SKU of the App Service Plan. Defaults to Standard values."
+ }
+ },
+ "newAppServicePlanLocation": {
+ "defaultValue": "",
+ "type": "string",
+ "metadata": {
+ "description": "The location of the App Service Plan. Defaults to \"westus\"."
+ }
+ },
+ "newWebAppName": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
}
- ],
- "outputs": {}
}
- }
- }
- ]
+ },
+ "variables": {
+ "appServicePlanName": "[parameters('newAppServicePlanName')]",
+ "resourcesLocation": "[parameters('newAppServicePlanLocation')]",
+ "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
+ "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
+ "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]",
+ "publishingUsername": "[concat('$', parameters('newWebAppName'))]",
+ "resourceGroupId": "[concat(subscription().id, '/resourceGroups/', parameters('groupName'))]"
+ },
+ "resources": [
+ {
+ "name": "[parameters('groupName')]",
+ "type": "Microsoft.Resources/resourceGroups",
+ "apiVersion": "2018-05-01",
+ "location": "[parameters('groupLocation')]",
+ "properties": {}
+ },
+ {
+ "type": "Microsoft.Resources/deployments",
+ "apiVersion": "2018-05-01",
+ "name": "storageDeployment",
+ "resourceGroup": "[parameters('groupName')]",
+ "dependsOn": [
+ "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]"
+ ],
+ "properties": {
+ "mode": "Incremental",
+ "template": {
+ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {},
+ "variables": {},
+ "resources": [
+ {
+ "comments": "Create a new Linux App Service Plan if no existing App Service Plan name was passed in.",
+ "type": "Microsoft.Web/serverfarms",
+ "name": "[variables('appServicePlanName')]",
+ "apiVersion": "2018-02-01",
+ "location": "[variables('resourcesLocation')]",
+ "sku": "[parameters('newAppServicePlanSku')]",
+ "kind": "linux",
+ "properties": {
+ "perSiteScaling": false,
+ "maximumElasticWorkerCount": 1,
+ "isSpot": false,
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "targetWorkerCount": 0,
+ "targetWorkerSizeId": 0
+ }
+ },
+ {
+ "comments": "Create a Web App using a Linux App Service Plan",
+ "type": "Microsoft.Web/sites",
+ "apiVersion": "2018-11-01",
+ "location": "[variables('resourcesLocation')]",
+ "kind": "app,linux",
+ "dependsOn": [
+ "[concat(variables('resourceGroupId'), '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
+ ],
+ "name": "[variables('webAppName')]",
+ "properties": {
+ "name": "[variables('webAppName')]",
+ "hostNameSslStates": [
+ {
+ "name": "[concat(parameters('newWebAppName'), '.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Standard"
+ },
+ {
+ "name": "[concat(parameters('newWebAppName'), '.scm.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Repository"
+ }
+ ],
+ "serverFarmId": "[variables('appServicePlanName')]",
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "scmSiteAlsoStopped": false,
+ "clientAffinityEnabled": true,
+ "clientCertEnabled": false,
+ "hostNamesDisabled": false,
+ "containerSize": 0,
+ "dailyMemoryTimeQuota": 0,
+ "httpsOnly": false,
+ "redundancyMode": "None",
+ "siteConfig": {
+ "appSettings": [
+ {
+ "name": "JAVA_OPTS",
+ "value": "-Dserver.port=80"
+ },
+ {
+ "name": "MicrosoftAppId",
+ "value": "[parameters('appId')]"
+ },
+ {
+ "name": "MicrosoftAppPassword",
+ "value": "[parameters('appSecret')]"
+ }
+ ],
+ "cors": {
+ "allowedOrigins": [
+ "https://botservice.hosting.portal.azure.net",
+ "https://hosting.onecloud.azure-test.net/"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "Microsoft.Web/sites/config",
+ "apiVersion": "2018-11-01",
+ "name": "[concat(variables('webAppName'), '/web')]",
+ "location": "[variables('resourcesLocation')]",
+ "dependsOn": [
+ "[concat(variables('resourceGroupId'), '/providers/Microsoft.Web/sites/', variables('webAppName'))]"
+ ],
+ "properties": {
+ "numberOfWorkers": 1,
+ "defaultDocuments": [
+ "Default.htm",
+ "Default.html",
+ "Default.asp",
+ "index.htm",
+ "index.html",
+ "iisstart.htm",
+ "default.aspx",
+ "index.php",
+ "hostingstart.html"
+ ],
+ "netFrameworkVersion": "v4.0",
+ "linuxFxVersion": "JAVA|8-jre8",
+ "requestTracingEnabled": false,
+ "remoteDebuggingEnabled": false,
+ "httpLoggingEnabled": false,
+ "logsDirectorySizeLimit": 35,
+ "detailedErrorLoggingEnabled": false,
+ "publishingUsername": "[variables('publishingUsername')]",
+ "scmType": "None",
+ "use32BitWorkerProcess": true,
+ "webSocketsEnabled": false,
+ "alwaysOn": true,
+ "managedPipelineMode": "Integrated",
+ "virtualApplications": [
+ {
+ "virtualPath": "/",
+ "physicalPath": "site\\wwwroot",
+ "preloadEnabled": true
+ }
+ ],
+ "loadBalancing": "LeastRequests",
+ "experiments": {
+ "rampUpRules": []
+ },
+ "autoHealEnabled": false,
+ "localMySqlEnabled": false,
+ "ipSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictionsUseMain": false,
+ "http20Enabled": false,
+ "minTlsVersion": "1.2",
+ "ftpsState": "AllAllowed",
+ "reservedInstanceCount": 0
+ }
+ },
+ {
+ "apiVersion": "2017-12-01",
+ "type": "Microsoft.BotService/botServices",
+ "name": "[parameters('botId')]",
+ "location": "global",
+ "kind": "bot",
+ "sku": {
+ "name": "[parameters('botSku')]"
+ },
+ "properties": {
+ "name": "[parameters('botId')]",
+ "displayName": "[parameters('botId')]",
+ "endpoint": "[variables('botEndpoint')]",
+ "msaAppId": "[parameters('appId')]",
+ "developerAppInsightsApplicationId": null,
+ "developerAppInsightKey": null,
+ "publishingCredentials": null,
+ "storageResourceId": null
+ },
+ "dependsOn": [
+ "[concat(variables('resourceGroupId'), '/providers/Microsoft.Web/sites/', variables('webAppName'))]"
+ ]
+ }
+ ],
+ "outputs": {}
+ }
+ }
+ }
+ ]
}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-preexisting-rg.json b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-preexisting-rg.json
index aa6d7e09..024dcf08 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-preexisting-rg.json
+++ b/Generator/generator-botbuilder-java/generators/app/templates/echo/project/deploymentTemplates/template-with-preexisting-rg.json
@@ -1,173 +1,259 @@
{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "appId": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
- }
- },
- "appSecret": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"."
- }
- },
- "botId": {
- "type": "string",
- "metadata": {
- "description":
- "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
- }
- },
- "botSku": {
- "defaultValue": "S1",
- "type": "string",
- "metadata": {
- "description":
- "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
- }
- },
- "newAppServicePlanName": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "The name of the new App Service Plan."
- }
- },
- "newAppServicePlanSku": {
- "type": "object",
- "defaultValue": {
- "name": "P1v2",
- "tier": "PremiumV2",
- "size": "P1v2",
- "family": "Pv2",
- "capacity": 1
- },
- "metadata": {
- "description":
- "The SKU of the App Service Plan. Defaults to Standard values."
- }
- },
- "appServicePlanLocation": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "The location of the App Service Plan."
- }
- },
- "existingAppServicePlan": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description":
- "Name of the existing App Service Plan used to create the Web App for the bot."
- }
- },
- "newWebAppName": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description":
- "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
- }
- }
- },
- "variables": {
- "defaultAppServicePlanName":
- "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]",
- "useExistingAppServicePlan":
- "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]",
- "servicePlanName":
- "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), if(empty(parameters('newAppServicePlanName')),concat(parameters('botId'), 'ServicePlan'),parameters('newAppServicePlanName')))]",
- "resourcesLocation":
- "[if(empty(parameters('appServicePlanLocation')), resourceGroup().location, parameters('appServicePlanLocation'))]",
- "webAppName":
- "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
- "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
- "botEndpoint":
- "[concat('https://', variables('siteHost'), '/api/messages')]"
- },
- "resources": [
- {
- "comments":
- "Create a new App Service Plan if no existing App Service Plan name was passed in.",
- "type": "Microsoft.Web/serverfarms",
- "condition": "[not(variables('useExistingAppServicePlan'))]",
- "name": "[variables('servicePlanName')]",
- "apiVersion": "2018-02-01",
- "location": "[variables('resourcesLocation')]",
- "sku": "[parameters('newAppServicePlanSku')]",
- "kind": "linux",
- "properties": {
- "name": "[variables('servicePlanName')]",
- "reserved": true
- }
- },
- {
- "comments": "Create a Web App using an App Service Plan",
- "type": "Microsoft.Web/sites",
- "apiVersion": "2016-08-01",
- "location": "[variables('resourcesLocation')]",
- "kind": "app",
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]"
- ],
- "name": "[variables('webAppName')]",
- "properties": {
- "name": "[variables('webAppName')]",
- "serverFarmId": "[variables('servicePlanName')]",
- "siteConfig": {
- "linuxFxVersion": "JAVA|8-jre8",
- "appSettings": [
- {
- "name": "JAVA_OPTS",
- "value": "-Dserver.port=80"
- },
- {
- "name": "MicrosoftAppId",
- "value": "[parameters('appId')]"
- },
- {
- "name": "MicrosoftAppPassword",
- "value": "[parameters('appSecret')]"
+ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "appId": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
+ }
+ },
+ "appSecret": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"."
+ }
+ },
+ "botId": {
+ "type": "string",
+ "metadata": {
+ "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
+ }
+ },
+ "botSku": {
+ "defaultValue": "S1",
+ "type": "string",
+ "metadata": {
+ "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
+ }
+ },
+ "newAppServicePlanName": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The name of the new App Service Plan."
+ }
+ },
+ "newAppServicePlanSku": {
+ "type": "object",
+ "defaultValue": {
+ "name": "P1v2",
+ "tier": "PremiumV2",
+ "size": "P1v2",
+ "family": "Pv2",
+ "capacity": 1
+ },
+ "metadata": {
+ "description": "The SKU of the App Service Plan. Defaults to Standard values."
+ }
+ },
+ "appServicePlanLocation": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The location of the App Service Plan."
+ }
+ },
+ "existingAppServicePlan": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "Name of the existing App Service Plan used to create the Web App for the bot."
+ }
+ },
+ "newWebAppName": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
}
- ],
- "cors": {
- "allowedOrigins": [
- "https://botservice.hosting.portal.azure.net",
- "https://hosting.onecloud.azure-test.net/"
- ]
- }
}
- }
},
- {
- "apiVersion": "2017-12-01",
- "type": "Microsoft.BotService/botServices",
- "name": "[parameters('botId')]",
- "location": "global",
- "kind": "bot",
- "sku": {
- "name": "[parameters('botSku')]"
- },
- "properties": {
- "name": "[parameters('botId')]",
- "displayName": "[parameters('botId')]",
- "endpoint": "[variables('botEndpoint')]",
- "msaAppId": "[parameters('appId')]",
- "developerAppInsightsApplicationId": null,
- "developerAppInsightKey": null,
- "publishingCredentials": null,
- "storageResourceId": null
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
- ]
- }
- ]
+ "variables": {
+ "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]",
+ "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]",
+ "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]",
+ "publishingUsername": "[concat('$', parameters('newWebAppName'))]",
+ "resourcesLocation": "[parameters('appServicePlanLocation')]",
+ "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
+ "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
+ "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]"
+ },
+ "resources": [
+ {
+ "comments": "Create a new Linux App Service Plan if no existing App Service Plan name was passed in.",
+ "type": "Microsoft.Web/serverfarms",
+ "condition": "[not(variables('useExistingAppServicePlan'))]",
+ "name": "[variables('servicePlanName')]",
+ "apiVersion": "2018-02-01",
+ "location": "[variables('resourcesLocation')]",
+ "sku": "[parameters('newAppServicePlanSku')]",
+ "kind": "linux",
+ "properties": {
+ "perSiteScaling": false,
+ "maximumElasticWorkerCount": 1,
+ "isSpot": false,
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "targetWorkerCount": 0,
+ "targetWorkerSizeId": 0
+ }
+ },
+ {
+ "comments": "Create a Web App using a Linux App Service Plan",
+ "type": "Microsoft.Web/sites",
+ "apiVersion": "2018-11-01",
+ "location": "[variables('resourcesLocation')]",
+ "kind": "app,linux",
+ "dependsOn": [
+ "[resourceId('Microsoft.Web/serverfarms', variables('servicePlanName'))]"
+ ],
+ "name": "[variables('webAppName')]",
+ "properties": {
+ "name": "[variables('webAppName')]",
+ "hostNameSslStates": [
+ {
+ "name": "[concat(parameters('newWebAppName'), '.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Standard"
+ },
+ {
+ "name": "[concat(parameters('newWebAppName'), '.scm.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Repository"
+ }
+ ],
+ "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('servicePlanName'))]",
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "scmSiteAlsoStopped": false,
+ "clientAffinityEnabled": true,
+ "clientCertEnabled": false,
+ "hostNamesDisabled": false,
+ "containerSize": 0,
+ "dailyMemoryTimeQuota": 0,
+ "httpsOnly": false,
+ "redundancyMode": "None",
+ "siteConfig": {
+ "appSettings": [
+ {
+ "name": "JAVA_OPTS",
+ "value": "-Dserver.port=80"
+ },
+ {
+ "name": "MicrosoftAppId",
+ "value": "[parameters('appId')]"
+ },
+ {
+ "name": "MicrosoftAppPassword",
+ "value": "[parameters('appSecret')]"
+ }
+ ],
+ "cors": {
+ "allowedOrigins": [
+ "https://botservice.hosting.portal.azure.net",
+ "https://hosting.onecloud.azure-test.net/"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "Microsoft.Web/sites/config",
+ "apiVersion": "2018-11-01",
+ "name": "[concat(variables('webAppName'), '/web')]",
+ "location": "[variables('resourcesLocation')]",
+ "dependsOn": [
+ "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
+ ],
+ "properties": {
+ "numberOfWorkers": 1,
+ "defaultDocuments": [
+ "Default.htm",
+ "Default.html",
+ "Default.asp",
+ "index.htm",
+ "index.html",
+ "iisstart.htm",
+ "default.aspx",
+ "index.php",
+ "hostingstart.html"
+ ],
+ "netFrameworkVersion": "v4.0",
+ "linuxFxVersion": "JAVA|8-jre8",
+ "requestTracingEnabled": false,
+ "remoteDebuggingEnabled": false,
+ "httpLoggingEnabled": false,
+ "logsDirectorySizeLimit": 35,
+ "detailedErrorLoggingEnabled": false,
+ "publishingUsername": "[variables('publishingUsername')]",
+ "scmType": "None",
+ "use32BitWorkerProcess": true,
+ "webSocketsEnabled": false,
+ "alwaysOn": true,
+ "managedPipelineMode": "Integrated",
+ "virtualApplications": [
+ {
+ "virtualPath": "/",
+ "physicalPath": "site\\wwwroot",
+ "preloadEnabled": true
+ }
+ ],
+ "loadBalancing": "LeastRequests",
+ "experiments": {
+ "rampUpRules": []
+ },
+ "autoHealEnabled": false,
+ "localMySqlEnabled": false,
+ "ipSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictionsUseMain": false,
+ "http20Enabled": false,
+ "minTlsVersion": "1.2",
+ "ftpsState": "AllAllowed",
+ "reservedInstanceCount": 0
+ }
+ },
+ {
+ "apiVersion": "2017-12-01",
+ "type": "Microsoft.BotService/botServices",
+ "name": "[parameters('botId')]",
+ "location": "global",
+ "kind": "bot",
+ "sku": {
+ "name": "[parameters('botSku')]"
+ },
+ "properties": {
+ "name": "[parameters('botId')]",
+ "displayName": "[parameters('botId')]",
+ "endpoint": "[variables('botEndpoint')]",
+ "msaAppId": "[parameters('appId')]",
+ "developerAppInsightsApplicationId": null,
+ "developerAppInsightKey": null,
+ "publishingCredentials": null,
+ "storageResourceId": null
+ },
+ "dependsOn": [
+ "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
+ ]
+ }
+ ]
}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/Application.java b/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/Application.java
index 8c524873..aaaf60a0 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/Application.java
+++ b/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/Application.java
@@ -3,6 +3,7 @@
package <%= packageName %>;
+import com.microsoft.bot.builder.Bot;
import com.microsoft.bot.integration.AdapterWithErrorHandler;
import com.microsoft.bot.integration.BotFrameworkHttpAdapter;
import com.microsoft.bot.integration.Configuration;
@@ -10,31 +11,47 @@ import com.microsoft.bot.integration.spring.BotController;
import com.microsoft.bot.integration.spring.BotDependencyConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
-/**
- * This is the starting point of the Sprint Boot Bot application.
- *
- * This class also provides overrides for dependency injections. A class that extends the {@link
- * com.microsoft.bot.builder.Bot} interface should be annotated with @Component.
- *
- * @see EchoBot
- */
+//
+// This is the starting point of the Sprint Boot Bot application.
+//
@SpringBootApplication
// Use the default BotController to receive incoming Channel messages. A custom
// controller could be used by eliminating this import and creating a new
-// RestController.
+// org.springframework.web.bind.annotation.RestController.
// The default controller is created by the Spring Boot container using
// dependency injection. The default route is /api/messages.
@Import({BotController.class})
+/**
+ * This class extends the BotDependencyConfiguration which provides the default
+ * implementations for a Bot application. The Application class should
+ * override methods in order to provide custom implementations.
+ */
public class Application extends BotDependencyConfiguration {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
+ /**
+ * Returns the Bot for this application.
+ *
+ *
+ * The @Component annotation could be used on the Bot class instead of this method
+ * with the @Bean annotation.
+ *
+ *
+ * @return The Bot implementation for this application.
+ */
+ @Bean
+ public Bot getBot() {
+ return new EchoBot();
+ }
+
/**
* Returns a custom Adapter that provides error handling.
*
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/EchoBot.java b/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/EchoBot.java
index a4628079..186d292f 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/EchoBot.java
+++ b/Generator/generator-botbuilder-java/generators/app/templates/echo/src/main/java/EchoBot.java
@@ -9,7 +9,6 @@ import com.microsoft.bot.builder.MessageFactory;
import com.microsoft.bot.builder.TurnContext;
import com.microsoft.bot.schema.ChannelAccount;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@@ -23,7 +22,6 @@ import java.util.concurrent.CompletableFuture;
* #onMembersAdded(List, TurnContext)} will send a greeting to new conversation participants.
*
*/
-@Component
public class EchoBot extends ActivityHandler {
@Override
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/src/test/java/ApplicationTest.java b/Generator/generator-botbuilder-java/generators/app/templates/echo/src/test/java/ApplicationTests.java
similarity index 95%
rename from Generator/generator-botbuilder-java/generators/app/templates/empty/src/test/java/ApplicationTest.java
rename to Generator/generator-botbuilder-java/generators/app/templates/echo/src/test/java/ApplicationTests.java
index 51194d27..37084390 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/src/test/java/ApplicationTest.java
+++ b/Generator/generator-botbuilder-java/generators/app/templates/echo/src/test/java/ApplicationTests.java
@@ -1,19 +1,19 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package <%= packageName %>;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class ApplicationTests {
-
- @Test
- public void contextLoads() {
- }
-
-}
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package <%= packageName %>;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/README.md b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/README.md
index 85269b70..4ff2cc08 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/README.md
+++ b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/README.md
@@ -32,7 +32,7 @@ This sample is a Spring Boot app and uses the Azure CLI and azure-webapp Maven p
As described on [Deploy your bot](https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-deploy-az-cli), you will perform the first 4 steps to setup the Azure app, then deploy the code using the azure-webapp Maven plugin.
### 1. Login to Azure
-From a command (or PowerShell) prompt in the root of the bot folder, execute:
+From a command (or PowerShell) prompt in the root of the bot folder, execute:
`az login`
### 2. Set the subscription
@@ -45,7 +45,7 @@ If you aren't sure which subscription to use for deploying the bot, you can view
Replace `` and `` with your own values.
-`` is the unique name of your bot.
+`` is the unique name of your bot.
`` is a minimum 16 character password for your bot.
Record the `appid` from the returned JSON
@@ -54,15 +54,15 @@ Record the `appid` from the returned JSON
Replace the values for ``, ``, ``, and `` in the following commands:
#### To a new Resource Group
-`az deployment create --name "echoBotDeploy" --location "westus" --template-file ".\deploymentTemplates\template-with-new-rg.json" --parameters groupName="" botId="" appId="" appSecret=""`
+`az deployment sub create --name "echoBotDeploy" --location "westus" --template-file ".\deploymentTemplates\template-with-new-rg.json" --parameters appId="" appSecret="" botId="" botSku=S1 newAppServicePlanName="echoBotPlan" newWebAppName="echoBot" groupLocation="westus" newAppServicePlanLocation="westus"`
#### To an existing Resource Group
-`az group deployment create --name "echoBotDeploy" --resource-group "" --template-file ".\deploymentTemplates\template-with-preexisting-rg.json" --parameters botId="" appId="" appSecret=""`
+`az deployment group create --resource-group "" --template-file ".\deploymentTemplates\template-with-preexisting-rg.json" --parameters appId="" appSecret="" botId="" newWebAppName="echoBot" newAppServicePlanName="echoBotPlan" appServicePlanLocation="westus" --name "echoBot"`
### 5. Update app id and password
In src/main/resources/application.properties update
- - `MicrosoftAppPassword` with the botsecret value
- - `MicrosoftAppId` with the appid from the first step
+- `MicrosoftAppPassword` with the botsecret value
+- `MicrosoftAppId` with the appid from the first step
### 6. Deploy the code
- Execute `mvn clean package`
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/new-rg-parameters.json b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/new-rg-parameters.json
deleted file mode 100644
index 2619e0c5..00000000
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/new-rg-parameters.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "groupLocation": {
- "value": ""
- },
- "groupName": {
- "value": ""
- },
- "appId": {
- "value": ""
- },
- "appSecret": {
- "value": ""
- },
- "botId": {
- "value": ""
- },
- "botSku": {
- "value": ""
- },
- "newAppServicePlanName": {
- "value": ""
- },
- "newAppServicePlanSku": {
- "value": {
- "name": "S1",
- "tier": "Standard",
- "size": "S1",
- "family": "S",
- "capacity": 1
- }
- },
- "newAppServicePlanLocation": {
- "value": ""
- },
- "newWebAppName": {
- "value": ""
- }
- }
-}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/preexisting-rg-parameters.json b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/preexisting-rg-parameters.json
deleted file mode 100644
index f42bb04f..00000000
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/preexisting-rg-parameters.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "appId": {
- "value": ""
- },
- "appSecret": {
- "value": ""
- },
- "botId": {
- "value": ""
- },
- "botSku": {
- "value": ""
- },
- "newAppServicePlanName": {
- "value": ""
- },
- "newAppServicePlanSku": {
- "value": {
- "name": "S1",
- "tier": "Standard",
- "size": "S1",
- "family": "S",
- "capacity": 1
- }
- },
- "appServicePlanLocation": {
- "value": ""
- },
- "existingAppServicePlan": {
- "value": ""
- },
- "newWebAppName": {
- "value": ""
- }
- }
-}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-new-rg.json b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-new-rg.json
index ebc52099..ec2460d3 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-new-rg.json
+++ b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-new-rg.json
@@ -1,204 +1,291 @@
{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "groupLocation": {
- "defaultValue": "",
- "type": "string",
- "metadata": {
- "description": "Specifies the location of the Resource Group."
- }
- },
- "groupName": {
- "type": "string",
- "metadata": {
- "description": "Specifies the name of the Resource Group."
- }
- },
- "appId": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
- }
- },
- "appSecret": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings."
- }
- },
- "botId": {
- "type": "string",
- "metadata": {
- "description":
- "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
- }
- },
- "botSku": {
- "defaultValue": "F0",
- "type": "string",
- "metadata": {
- "description":
- "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
- }
- },
- "newAppServicePlanName": {
- "defaultValue": "",
- "type": "string",
- "metadata": {
- "description": "The name of the App Service Plan."
- }
- },
- "newAppServicePlanSku": {
- "type": "object",
- "defaultValue": {
- "name": "P1v2",
- "tier": "PremiumV2",
- "size": "P1v2",
- "family": "Pv2",
- "capacity": 1
- },
- "metadata": {
- "description":
- "The SKU of the App Service Plan. Defaults to Standard values."
- }
- },
- "newAppServicePlanLocation": {
- "defaultValue": "",
- "type": "string",
- "metadata": {
- "description":
- "The location of the App Service Plan. Defaults to \"westus\"."
- }
- },
- "newWebAppName": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description":
- "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
- }
- }
- },
- "variables": {
- "resourcesLocation": "[deployment().location]",
- "effectiveGroupLocation":
- "[if(empty(parameters('groupLocation')), variables('resourcesLocation'), parameters('groupLocation'))]",
- "effectivePlanLocation":
- "[if(empty(parameters('newAppServicePlanLocation')), variables('resourcesLocation'), parameters('newAppServicePlanLocation'))]",
- "appServicePlanName":
- "[if(empty(parameters('newAppServicePlanName')), concat(parameters('botId'), 'ServicePlan'), parameters('newAppServicePlanName'))]",
- "webAppName":
- "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
- "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
- "botEndpoint":
- "[concat('https://', variables('siteHost'), '/api/messages')]"
- },
- "resources": [
- {
- "name": "[parameters('groupName')]",
- "type": "Microsoft.Resources/resourceGroups",
- "apiVersion": "2018-05-01",
- "location": "[variables('effectiveGroupLocation')]",
- "properties": {}
- },
- {
- "type": "Microsoft.Resources/deployments",
- "apiVersion": "2018-05-01",
- "name": "storageDeployment",
- "resourceGroup": "[parameters('groupName')]",
- "dependsOn": [
- "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]"
- ],
- "properties": {
- "mode": "Incremental",
- "template": {
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {},
- "variables": {},
- "resources": [
- {
- "comments": "Create a new App Service Plan",
- "type": "Microsoft.Web/serverfarms",
- "name": "[variables('appServicePlanName')]",
- "apiVersion": "2018-02-01",
- "location": "[variables('effectivePlanLocation')]",
- "sku": "[parameters('newAppServicePlanSku')]",
- "kind": "linux",
- "properties": {
- "name": "[variables('appServicePlanName')]",
- "reserved": true
- }
- },
- {
- "comments": "Create a Web App using the new App Service Plan",
- "type": "Microsoft.Web/sites",
- "apiVersion": "2015-08-01",
- "location": "[variables('resourcesLocation')]",
- "kind": "app",
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
- ],
- "name": "[variables('webAppName')]",
- "properties": {
- "name": "[variables('webAppName')]",
- "serverFarmId": "[variables('appServicePlanName')]",
- "siteConfig": {
- "appSettings": [
- {
- "name": "JAVA_OPTS",
- "value": "-Dserver.port=80"
- },
- {
- "name": "MicrosoftAppId",
- "value": "[parameters('appId')]"
- },
- {
- "name": "MicrosoftAppPassword",
- "value": "[parameters('appSecret')]"
- }
- ],
- "cors": {
- "allowedOrigins": [
- "https://botservice.hosting.portal.azure.net",
- "https://hosting.onecloud.azure-test.net/"
- ]
- }
- }
- }
- },
- {
- "apiVersion": "2017-12-01",
- "type": "Microsoft.BotService/botServices",
- "name": "[parameters('botId')]",
- "location": "global",
- "kind": "bot",
- "sku": {
- "name": "[parameters('botSku')]"
- },
- "properties": {
- "name": "[parameters('botId')]",
- "displayName": "[parameters('botId')]",
- "endpoint": "[variables('botEndpoint')]",
- "msaAppId": "[parameters('appId')]",
- "developerAppInsightsApplicationId": null,
- "developerAppInsightKey": null,
- "publishingCredentials": null,
- "storageResourceId": null
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
- ]
+ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "groupLocation": {
+ "defaultValue": "",
+ "type": "string",
+ "metadata": {
+ "description": "Specifies the location of the Resource Group."
+ }
+ },
+ "groupName": {
+ "type": "string",
+ "metadata": {
+ "description": "Specifies the name of the Resource Group."
+ }
+ },
+ "appId": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
+ }
+ },
+ "appSecret": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings."
+ }
+ },
+ "botId": {
+ "type": "string",
+ "metadata": {
+ "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
+ }
+ },
+ "botSku": {
+ "defaultValue": "S1",
+ "type": "string",
+ "metadata": {
+ "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
+ }
+ },
+ "newAppServicePlanName": {
+ "defaultValue": "",
+ "type": "string",
+ "metadata": {
+ "description": "The name of the App Service Plan."
+ }
+ },
+ "newAppServicePlanSku": {
+ "type": "object",
+ "defaultValue": {
+ "name": "P1v2",
+ "tier": "PremiumV2",
+ "size": "P1v2",
+ "family": "Pv2",
+ "capacity": 1
+ },
+ "metadata": {
+ "description": "The SKU of the App Service Plan. Defaults to Standard values."
+ }
+ },
+ "newAppServicePlanLocation": {
+ "defaultValue": "",
+ "type": "string",
+ "metadata": {
+ "description": "The location of the App Service Plan. Defaults to \"westus\"."
+ }
+ },
+ "newWebAppName": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
}
- ],
- "outputs": {}
}
- }
- }
- ]
+ },
+ "variables": {
+ "appServicePlanName": "[parameters('newAppServicePlanName')]",
+ "resourcesLocation": "[parameters('newAppServicePlanLocation')]",
+ "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
+ "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
+ "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]",
+ "publishingUsername": "[concat('$', parameters('newWebAppName'))]",
+ "resourceGroupId": "[concat(subscription().id, '/resourceGroups/', parameters('groupName'))]"
+ },
+ "resources": [
+ {
+ "name": "[parameters('groupName')]",
+ "type": "Microsoft.Resources/resourceGroups",
+ "apiVersion": "2018-05-01",
+ "location": "[parameters('groupLocation')]",
+ "properties": {}
+ },
+ {
+ "type": "Microsoft.Resources/deployments",
+ "apiVersion": "2018-05-01",
+ "name": "storageDeployment",
+ "resourceGroup": "[parameters('groupName')]",
+ "dependsOn": [
+ "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]"
+ ],
+ "properties": {
+ "mode": "Incremental",
+ "template": {
+ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {},
+ "variables": {},
+ "resources": [
+ {
+ "comments": "Create a new Linux App Service Plan if no existing App Service Plan name was passed in.",
+ "type": "Microsoft.Web/serverfarms",
+ "name": "[variables('appServicePlanName')]",
+ "apiVersion": "2018-02-01",
+ "location": "[variables('resourcesLocation')]",
+ "sku": "[parameters('newAppServicePlanSku')]",
+ "kind": "linux",
+ "properties": {
+ "perSiteScaling": false,
+ "maximumElasticWorkerCount": 1,
+ "isSpot": false,
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "targetWorkerCount": 0,
+ "targetWorkerSizeId": 0
+ }
+ },
+ {
+ "comments": "Create a Web App using a Linux App Service Plan",
+ "type": "Microsoft.Web/sites",
+ "apiVersion": "2018-11-01",
+ "location": "[variables('resourcesLocation')]",
+ "kind": "app,linux",
+ "dependsOn": [
+ "[concat(variables('resourceGroupId'), '/providers/Microsoft.Web/serverfarms/', variables('appServicePlanName'))]"
+ ],
+ "name": "[variables('webAppName')]",
+ "properties": {
+ "name": "[variables('webAppName')]",
+ "hostNameSslStates": [
+ {
+ "name": "[concat(parameters('newWebAppName'), '.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Standard"
+ },
+ {
+ "name": "[concat(parameters('newWebAppName'), '.scm.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Repository"
+ }
+ ],
+ "serverFarmId": "[variables('appServicePlanName')]",
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "scmSiteAlsoStopped": false,
+ "clientAffinityEnabled": true,
+ "clientCertEnabled": false,
+ "hostNamesDisabled": false,
+ "containerSize": 0,
+ "dailyMemoryTimeQuota": 0,
+ "httpsOnly": false,
+ "redundancyMode": "None",
+ "siteConfig": {
+ "appSettings": [
+ {
+ "name": "JAVA_OPTS",
+ "value": "-Dserver.port=80"
+ },
+ {
+ "name": "MicrosoftAppId",
+ "value": "[parameters('appId')]"
+ },
+ {
+ "name": "MicrosoftAppPassword",
+ "value": "[parameters('appSecret')]"
+ }
+ ],
+ "cors": {
+ "allowedOrigins": [
+ "https://botservice.hosting.portal.azure.net",
+ "https://hosting.onecloud.azure-test.net/"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "Microsoft.Web/sites/config",
+ "apiVersion": "2018-11-01",
+ "name": "[concat(variables('webAppName'), '/web')]",
+ "location": "[variables('resourcesLocation')]",
+ "dependsOn": [
+ "[concat(variables('resourceGroupId'), '/providers/Microsoft.Web/sites/', variables('webAppName'))]"
+ ],
+ "properties": {
+ "numberOfWorkers": 1,
+ "defaultDocuments": [
+ "Default.htm",
+ "Default.html",
+ "Default.asp",
+ "index.htm",
+ "index.html",
+ "iisstart.htm",
+ "default.aspx",
+ "index.php",
+ "hostingstart.html"
+ ],
+ "netFrameworkVersion": "v4.0",
+ "linuxFxVersion": "JAVA|8-jre8",
+ "requestTracingEnabled": false,
+ "remoteDebuggingEnabled": false,
+ "httpLoggingEnabled": false,
+ "logsDirectorySizeLimit": 35,
+ "detailedErrorLoggingEnabled": false,
+ "publishingUsername": "[variables('publishingUsername')]",
+ "scmType": "None",
+ "use32BitWorkerProcess": true,
+ "webSocketsEnabled": false,
+ "alwaysOn": true,
+ "managedPipelineMode": "Integrated",
+ "virtualApplications": [
+ {
+ "virtualPath": "/",
+ "physicalPath": "site\\wwwroot",
+ "preloadEnabled": true
+ }
+ ],
+ "loadBalancing": "LeastRequests",
+ "experiments": {
+ "rampUpRules": []
+ },
+ "autoHealEnabled": false,
+ "localMySqlEnabled": false,
+ "ipSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictionsUseMain": false,
+ "http20Enabled": false,
+ "minTlsVersion": "1.2",
+ "ftpsState": "AllAllowed",
+ "reservedInstanceCount": 0
+ }
+ },
+ {
+ "apiVersion": "2017-12-01",
+ "type": "Microsoft.BotService/botServices",
+ "name": "[parameters('botId')]",
+ "location": "global",
+ "kind": "bot",
+ "sku": {
+ "name": "[parameters('botSku')]"
+ },
+ "properties": {
+ "name": "[parameters('botId')]",
+ "displayName": "[parameters('botId')]",
+ "endpoint": "[variables('botEndpoint')]",
+ "msaAppId": "[parameters('appId')]",
+ "developerAppInsightsApplicationId": null,
+ "developerAppInsightKey": null,
+ "publishingCredentials": null,
+ "storageResourceId": null
+ },
+ "dependsOn": [
+ "[concat(variables('resourceGroupId'), '/providers/Microsoft.Web/sites/', variables('webAppName'))]"
+ ]
+ }
+ ],
+ "outputs": {}
+ }
+ }
+ }
+ ]
}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-preexisting-rg.json b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-preexisting-rg.json
index aa6d7e09..024dcf08 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-preexisting-rg.json
+++ b/Generator/generator-botbuilder-java/generators/app/templates/empty/project/deploymentTemplates/template-with-preexisting-rg.json
@@ -1,173 +1,259 @@
{
- "$schema":
- "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "appId": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
- }
- },
- "appSecret": {
- "type": "string",
- "metadata": {
- "description":
- "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"."
- }
- },
- "botId": {
- "type": "string",
- "metadata": {
- "description":
- "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
- }
- },
- "botSku": {
- "defaultValue": "S1",
- "type": "string",
- "metadata": {
- "description":
- "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
- }
- },
- "newAppServicePlanName": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "The name of the new App Service Plan."
- }
- },
- "newAppServicePlanSku": {
- "type": "object",
- "defaultValue": {
- "name": "P1v2",
- "tier": "PremiumV2",
- "size": "P1v2",
- "family": "Pv2",
- "capacity": 1
- },
- "metadata": {
- "description":
- "The SKU of the App Service Plan. Defaults to Standard values."
- }
- },
- "appServicePlanLocation": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "The location of the App Service Plan."
- }
- },
- "existingAppServicePlan": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description":
- "Name of the existing App Service Plan used to create the Web App for the bot."
- }
- },
- "newWebAppName": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description":
- "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
- }
- }
- },
- "variables": {
- "defaultAppServicePlanName":
- "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]",
- "useExistingAppServicePlan":
- "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]",
- "servicePlanName":
- "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), if(empty(parameters('newAppServicePlanName')),concat(parameters('botId'), 'ServicePlan'),parameters('newAppServicePlanName')))]",
- "resourcesLocation":
- "[if(empty(parameters('appServicePlanLocation')), resourceGroup().location, parameters('appServicePlanLocation'))]",
- "webAppName":
- "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
- "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
- "botEndpoint":
- "[concat('https://', variables('siteHost'), '/api/messages')]"
- },
- "resources": [
- {
- "comments":
- "Create a new App Service Plan if no existing App Service Plan name was passed in.",
- "type": "Microsoft.Web/serverfarms",
- "condition": "[not(variables('useExistingAppServicePlan'))]",
- "name": "[variables('servicePlanName')]",
- "apiVersion": "2018-02-01",
- "location": "[variables('resourcesLocation')]",
- "sku": "[parameters('newAppServicePlanSku')]",
- "kind": "linux",
- "properties": {
- "name": "[variables('servicePlanName')]",
- "reserved": true
- }
- },
- {
- "comments": "Create a Web App using an App Service Plan",
- "type": "Microsoft.Web/sites",
- "apiVersion": "2016-08-01",
- "location": "[variables('resourcesLocation')]",
- "kind": "app",
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]"
- ],
- "name": "[variables('webAppName')]",
- "properties": {
- "name": "[variables('webAppName')]",
- "serverFarmId": "[variables('servicePlanName')]",
- "siteConfig": {
- "linuxFxVersion": "JAVA|8-jre8",
- "appSettings": [
- {
- "name": "JAVA_OPTS",
- "value": "-Dserver.port=80"
- },
- {
- "name": "MicrosoftAppId",
- "value": "[parameters('appId')]"
- },
- {
- "name": "MicrosoftAppPassword",
- "value": "[parameters('appSecret')]"
+ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "contentVersion": "1.0.0.0",
+ "parameters": {
+ "appId": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings."
+ }
+ },
+ "appSecret": {
+ "type": "string",
+ "metadata": {
+ "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"."
+ }
+ },
+ "botId": {
+ "type": "string",
+ "metadata": {
+ "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable."
+ }
+ },
+ "botSku": {
+ "defaultValue": "S1",
+ "type": "string",
+ "metadata": {
+ "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1."
+ }
+ },
+ "newAppServicePlanName": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The name of the new App Service Plan."
+ }
+ },
+ "newAppServicePlanSku": {
+ "type": "object",
+ "defaultValue": {
+ "name": "P1v2",
+ "tier": "PremiumV2",
+ "size": "P1v2",
+ "family": "Pv2",
+ "capacity": 1
+ },
+ "metadata": {
+ "description": "The SKU of the App Service Plan. Defaults to Standard values."
+ }
+ },
+ "appServicePlanLocation": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The location of the App Service Plan."
+ }
+ },
+ "existingAppServicePlan": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "Name of the existing App Service Plan used to create the Web App for the bot."
+ }
+ },
+ "newWebAppName": {
+ "type": "string",
+ "defaultValue": "",
+ "metadata": {
+ "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"."
}
- ],
- "cors": {
- "allowedOrigins": [
- "https://botservice.hosting.portal.azure.net",
- "https://hosting.onecloud.azure-test.net/"
- ]
- }
}
- }
},
- {
- "apiVersion": "2017-12-01",
- "type": "Microsoft.BotService/botServices",
- "name": "[parameters('botId')]",
- "location": "global",
- "kind": "bot",
- "sku": {
- "name": "[parameters('botSku')]"
- },
- "properties": {
- "name": "[parameters('botId')]",
- "displayName": "[parameters('botId')]",
- "endpoint": "[variables('botEndpoint')]",
- "msaAppId": "[parameters('appId')]",
- "developerAppInsightsApplicationId": null,
- "developerAppInsightKey": null,
- "publishingCredentials": null,
- "storageResourceId": null
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
- ]
- }
- ]
+ "variables": {
+ "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]",
+ "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]",
+ "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]",
+ "publishingUsername": "[concat('$', parameters('newWebAppName'))]",
+ "resourcesLocation": "[parameters('appServicePlanLocation')]",
+ "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]",
+ "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]",
+ "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]"
+ },
+ "resources": [
+ {
+ "comments": "Create a new Linux App Service Plan if no existing App Service Plan name was passed in.",
+ "type": "Microsoft.Web/serverfarms",
+ "condition": "[not(variables('useExistingAppServicePlan'))]",
+ "name": "[variables('servicePlanName')]",
+ "apiVersion": "2018-02-01",
+ "location": "[variables('resourcesLocation')]",
+ "sku": "[parameters('newAppServicePlanSku')]",
+ "kind": "linux",
+ "properties": {
+ "perSiteScaling": false,
+ "maximumElasticWorkerCount": 1,
+ "isSpot": false,
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "targetWorkerCount": 0,
+ "targetWorkerSizeId": 0
+ }
+ },
+ {
+ "comments": "Create a Web App using a Linux App Service Plan",
+ "type": "Microsoft.Web/sites",
+ "apiVersion": "2018-11-01",
+ "location": "[variables('resourcesLocation')]",
+ "kind": "app,linux",
+ "dependsOn": [
+ "[resourceId('Microsoft.Web/serverfarms', variables('servicePlanName'))]"
+ ],
+ "name": "[variables('webAppName')]",
+ "properties": {
+ "name": "[variables('webAppName')]",
+ "hostNameSslStates": [
+ {
+ "name": "[concat(parameters('newWebAppName'), '.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Standard"
+ },
+ {
+ "name": "[concat(parameters('newWebAppName'), '.scm.azurewebsites.net')]",
+ "sslState": "Disabled",
+ "hostType": "Repository"
+ }
+ ],
+ "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('servicePlanName'))]",
+ "reserved": true,
+ "isXenon": false,
+ "hyperV": false,
+ "scmSiteAlsoStopped": false,
+ "clientAffinityEnabled": true,
+ "clientCertEnabled": false,
+ "hostNamesDisabled": false,
+ "containerSize": 0,
+ "dailyMemoryTimeQuota": 0,
+ "httpsOnly": false,
+ "redundancyMode": "None",
+ "siteConfig": {
+ "appSettings": [
+ {
+ "name": "JAVA_OPTS",
+ "value": "-Dserver.port=80"
+ },
+ {
+ "name": "MicrosoftAppId",
+ "value": "[parameters('appId')]"
+ },
+ {
+ "name": "MicrosoftAppPassword",
+ "value": "[parameters('appSecret')]"
+ }
+ ],
+ "cors": {
+ "allowedOrigins": [
+ "https://botservice.hosting.portal.azure.net",
+ "https://hosting.onecloud.azure-test.net/"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "Microsoft.Web/sites/config",
+ "apiVersion": "2018-11-01",
+ "name": "[concat(variables('webAppName'), '/web')]",
+ "location": "[variables('resourcesLocation')]",
+ "dependsOn": [
+ "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
+ ],
+ "properties": {
+ "numberOfWorkers": 1,
+ "defaultDocuments": [
+ "Default.htm",
+ "Default.html",
+ "Default.asp",
+ "index.htm",
+ "index.html",
+ "iisstart.htm",
+ "default.aspx",
+ "index.php",
+ "hostingstart.html"
+ ],
+ "netFrameworkVersion": "v4.0",
+ "linuxFxVersion": "JAVA|8-jre8",
+ "requestTracingEnabled": false,
+ "remoteDebuggingEnabled": false,
+ "httpLoggingEnabled": false,
+ "logsDirectorySizeLimit": 35,
+ "detailedErrorLoggingEnabled": false,
+ "publishingUsername": "[variables('publishingUsername')]",
+ "scmType": "None",
+ "use32BitWorkerProcess": true,
+ "webSocketsEnabled": false,
+ "alwaysOn": true,
+ "managedPipelineMode": "Integrated",
+ "virtualApplications": [
+ {
+ "virtualPath": "/",
+ "physicalPath": "site\\wwwroot",
+ "preloadEnabled": true
+ }
+ ],
+ "loadBalancing": "LeastRequests",
+ "experiments": {
+ "rampUpRules": []
+ },
+ "autoHealEnabled": false,
+ "localMySqlEnabled": false,
+ "ipSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictions": [
+ {
+ "ipAddress": "Any",
+ "action": "Allow",
+ "priority": 1,
+ "name": "Allow all",
+ "description": "Allow all access"
+ }
+ ],
+ "scmIpSecurityRestrictionsUseMain": false,
+ "http20Enabled": false,
+ "minTlsVersion": "1.2",
+ "ftpsState": "AllAllowed",
+ "reservedInstanceCount": 0
+ }
+ },
+ {
+ "apiVersion": "2017-12-01",
+ "type": "Microsoft.BotService/botServices",
+ "name": "[parameters('botId')]",
+ "location": "global",
+ "kind": "bot",
+ "sku": {
+ "name": "[parameters('botSku')]"
+ },
+ "properties": {
+ "name": "[parameters('botId')]",
+ "displayName": "[parameters('botId')]",
+ "endpoint": "[variables('botEndpoint')]",
+ "msaAppId": "[parameters('appId')]",
+ "developerAppInsightsApplicationId": null,
+ "developerAppInsightKey": null,
+ "publishingCredentials": null,
+ "storageResourceId": null
+ },
+ "dependsOn": [
+ "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]"
+ ]
+ }
+ ]
}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/Application.java b/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/Application.java
index 8c524873..ab23dfdb 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/Application.java
+++ b/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/Application.java
@@ -3,6 +3,7 @@
package <%= packageName %>;
+import com.microsoft.bot.builder.Bot;
import com.microsoft.bot.integration.AdapterWithErrorHandler;
import com.microsoft.bot.integration.BotFrameworkHttpAdapter;
import com.microsoft.bot.integration.Configuration;
@@ -10,31 +11,47 @@ import com.microsoft.bot.integration.spring.BotController;
import com.microsoft.bot.integration.spring.BotDependencyConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
-/**
- * This is the starting point of the Sprint Boot Bot application.
- *
- * This class also provides overrides for dependency injections. A class that extends the {@link
- * com.microsoft.bot.builder.Bot} interface should be annotated with @Component.
- *
- * @see EchoBot
- */
+//
+// This is the starting point of the Sprint Boot Bot application.
+//
@SpringBootApplication
// Use the default BotController to receive incoming Channel messages. A custom
// controller could be used by eliminating this import and creating a new
-// RestController.
+// org.springframework.web.bind.annotation.RestController.
// The default controller is created by the Spring Boot container using
// dependency injection. The default route is /api/messages.
@Import({BotController.class})
+/**
+ * This class extends the BotDependencyConfiguration which provides the default
+ * implementations for a Bot application. The Application class should
+ * override methods in order to provide custom implementations.
+ */
public class Application extends BotDependencyConfiguration {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
+ /**
+ * Returns the Bot for this application.
+ *
+ *
+ * The @Component annotation could be used on the Bot class instead of this method
+ * with the @Bean annotation.
+ *
+ *
+ * @return The Bot implementation for this application.
+ */
+ @Bean
+ public Bot getBot() {
+ return new EmptyBot();
+ }
+
/**
* Returns a custom Adapter that provides error handling.
*
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/EmptyBot.java b/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/EmptyBot.java
index a083e840..cd8b47bd 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/EmptyBot.java
+++ b/Generator/generator-botbuilder-java/generators/app/templates/empty/src/main/java/EmptyBot.java
@@ -9,7 +9,6 @@ import com.microsoft.bot.builder.MessageFactory;
import com.microsoft.bot.builder.TurnContext;
import com.microsoft.bot.schema.ChannelAccount;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@@ -23,6 +22,5 @@ import java.util.concurrent.CompletableFuture;
* #onMembersAdded(List, TurnContext)} will send a greeting to new conversation participants.
*
*/
-@Component
public class EmptyBot extends ActivityHandler {
}
diff --git a/Generator/generator-botbuilder-java/generators/app/templates/echo/src/test/java/ApplicationTest.java b/Generator/generator-botbuilder-java/generators/app/templates/empty/src/test/java/ApplicationTests.java
similarity index 88%
rename from Generator/generator-botbuilder-java/generators/app/templates/echo/src/test/java/ApplicationTest.java
rename to Generator/generator-botbuilder-java/generators/app/templates/empty/src/test/java/ApplicationTests.java
index b3bf9828..37084390 100644
--- a/Generator/generator-botbuilder-java/generators/app/templates/echo/src/test/java/ApplicationTest.java
+++ b/Generator/generator-botbuilder-java/generators/app/templates/empty/src/test/java/ApplicationTests.java
@@ -1,19 +1,19 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package <%= packageName %>;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class ApplicationTest {
-
- @Test
- public void contextLoads() {
- }
-
-}
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+package <%= packageName %>;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}