Use Azure CLI to create an App Service resource
APPLIES TO: SDK v4
This article describes how to create an App Service resource with the Azure CLI and an Azure Resource Manager template (ARM template) as part of the process to provision and publish a bot. The app service is sometimes referred to as a web app.
Important
Python bots can't be deployed to a resource group that contains Windows services or bots. Multiple Python bots can be deployed to the same resource group; however, you need to create other services (such as Azure AI services) in another resource group.
- For information on the complete process, see how to Provision and publish a bot.
- For information on how to create an Azure Bot resource, see Use Azure CLI to create an Azure Bot resource.
Note
The Bot Framework JavaScript, C#, and Python SDKs will continue to be supported, however, the Java SDK is being retired with final long-term support ending in November 2023.
Existing bots built with the Java SDK will continue to function.
For new bot building, consider using Microsoft Copilot Studio and read about choosing the right copilot solution.
For more information, see The future of bot building.
Prerequisites
To use the Azure CLI to provision and publish bots, you need:
An Azure account that has an active subscription. Create a free account.
-
For your programming language, use the following version of the Azure CLI. Some steps won't work with later versions of the CLI.
Language CLI version C# and JavaScript 2.39.0 or later Python 2.55.0 or later Java 2.29.2
This process uses an Azure Resource Manager template (ARM template) to create an App Service resource for your bot.
If you don't have the current templates, create a copy in your bot project of the deploymentTemplates folder: C#, JavaScript, Python, or Java.
Tip
This is part of the larger process to provision and publish a bot. See how to Provision and publish a bot for a complete list of prerequisites.
Edit parameters file
Edit the parameters file for the ARM template to contain the values you want to use.
Important
You must use the same appType
value for your App Service and Azure Bot resources.
If your project doesn't yet contain the most recent ARM template and parameters files, you can copy them from the Bot Framework SDK repo for your language: C#, JavaScript, Python, or Java.
This table describes the deployment parameters in the parameters file, for use with the parameters
command option.
By default, the name of the parameters file is parameters-for-template-BotApp-with-rg.json.
Parameter | Type | Description |
---|---|---|
appServiceName |
String | Required. The globally unique name of the app service. |
existingAppServicePlanName |
String | Optional. The name of an existing app service plan with which to create the app service for the bot. |
existingAppServicePlanLocation |
String | Optional. The location of the existing app service plan. |
newAppServicePlanName |
String | Optional. The name of the new app service plan. |
newAppServicePlanLocation |
String | Optional. The location of the new app service plan. |
newAppServicePlanSku |
Object | Optional. The SKU for the new app service plan. Default is the S1 (Standard) service plan. |
appType |
String | Required. How the identities of your bot resources are managed. Allowed values: "MultiTenant", "SingleTenant", and "UserAssignedMSI". Default is "MultiTenant". |
appId |
String | Required. The client ID or app ID from the identity resource you created earlier. This is used as the Microsoft app ID of the app service. |
appSecret |
String | Optional. For single-tenant and multi-tenant app types, the password for the identity resource. |
UMSIName |
String | Optional. For user-assigned managed identity app types, the name of the identity resource. |
UMSIResourceGroupName |
String | Optional. For user-assigned managed identity app types, the resource group for the identity resource. |
tenantId |
String | Optional. For user-assigned managed identity and single-tenant app types, The Microsoft Entra ID tenant ID for the identity resource. |
Not all parameters apply to all app types.
- Provide values for
UMSIName
,UMSIResourceGroupName
, andtenantId
. - Leave
appSecret
blank.
Some parameters are specific to using an existing or new app service plan.
- Provide values for
existingAppServicePlanName
andexistingAppServicePlanLocation
. - Leave
newAppServicePlanName
,newAppServicePlanLocation
, andnewAppServicePlanSku
blank.
Create the app service
Create the app service for your bot.
az deployment group create --resource-group <resource-group> --template-file <template-file-path> --parameters "@<parameters-file-path>"
Option | Description |
---|---|
resource-group | Name of the Azure resource group in which to create the app service. |
template-file | The path to the ARM template for the app service. The path can be relative or absolute. |
parameters | The path to the parameters file to use with the ARM template. The path can be relative or absolute. |
For projects created with the latest generators, the ARM template and parameter files are located in the DeploymentTemplates\DeployUseExistResourceGroup folder within the project. The default file names are template-BotApp-with-rg.json and parameters-for-template-BotApp-with-rg.json.
Tip
- The base URL for your app service is based on the app service name:
https:<app-service-name>.azurewebsites.net
. - The messaging endpoint for your bot will be the base URL plus
/api/messages
, such ashttps:<app-service-name>.azurewebsites.net/api/messages
.
Additional information
For more information about ARM templates, see What are ARM templates? and How to use Azure Resource Manager (ARM) deployment templates with Azure CLI.
Next steps
If you created the App Service as part of a bot deployment, see Create resources with ARM templates to continue the process.