Развертывание ботаDeploy your bot

применимо к: Пакет SDK v4APPLIES TO: SDK v4

В этой статье описано, как развернуть простого бота в Azure.In this article we will show you how to deploy a basic bot to Azure. Мы объясним, как подготовить бота к развертыванию, развернуть его в Azure и протестировать в Web Chat.We will explain how to prepare your bot for deployment, deploy your bot to Azure, and test your bot in Web Chat. Эту статью полезно изучить до выполнения описанных действий, чтобы ознакомиться со всеми процессами, связанными с развертыванием бота.It would be useful to read this article before following the steps, so that you fully understand what is involved in deploying a bot.

Важно!

Убедитесь, что используется последняя версия Azure CLI.Make sure you are using the latest version of the Azure CLI. Если вы используете версию Azure CLI, предшествующую версии 2.2.0, возникнет ошибка из-за нерекомендуемых команд CLI.If you are using an Azure CLI version older than 2.2.0, you will encounter errors of CLI commands deprecation. Кроме того, развертывание с помощью Azure CLI, описанное в этой статье, не стоит сочетать с развертыванием на портале Azure.Also, do not mix Azure CLI deployment shown in this article with Azure portal deployment.

Предварительные требованияPrerequisites

Подготовка к развертываниюPrepare for deployment

Если вы развертываете бот на C#, убедитесь, что он создан в режиме выпуска.If you are deploying a C# bot make sure that it has been built in Release mode. В Visual Studio для конфигурации решения укажите значение Release. Затем для решения выполните повторную сборку с очисткой, прежде чем продолжить.In Visual Studio, make sure that the solution configuration is set to Release and perform a clean rebuild of the solution before continuing. Развертывание может завершиться ошибкой, если для конфигурации решения задано значение Отладка.The deployment may fail if the solution configuration is set to Debug.

При создании программы-робота с помощью шаблона Visual Studioсозданный исходный код включает в себя deploymentTemplates папку, содержащую шаблоны ARM.When you create a bot using a Visual Studio template, the source code generated includes a deploymentTemplates folder that contains ARM templates. В описанном здесь процессе развертывания используется один из шаблонов ARM для подготовки необходимых для бота ресурсов Azure с помощью Azure CLI.The deployment process documented here uses one of the ARM templates to provision required resources for the bot in Azure by using the Azure CLI.

С появлением пакета SDK Bot Framework 4.3 не рекомендуется использовать файл .bot.With the release of Bot Framework SDK 4.3, we have deprecated the use of a .bot file. Вместо этого мы используем appsettings.json файл конфигурации для управления ресурсами Bot.Instead, we use the appsettings.json configuration file to manage bot resources. Сведения о переносе параметров из файла. Bot в файл конфигурации см. в разделе Управление ресурсами Bot.For information on migrating settings from the .bot file to a configuration file, see managing bot resources.

Примечание

Доступны версии шаблонов C# для платформ .NET Core 2.1 и .NET Core 3.1.Both .NET Core 2.1 and .NET Core 3.1 versions of the C# templates are available. При создании новых ботов в Visual Studio 2019 следует использовать шаблоны .NET Core 3.1.When creating new bots in Visual Studio 2019, you should use the .NET Core 3.1 templates.
В текущих примерах ботов используются шаблоны .NET Core 3.1.The current bot samples use .NET Core 3.1 templates. Примеры, использующие шаблоны .NET Core 2.1, можно найти в ветви 4.7-archive репозитория BotBuilder-Samples.You can find the samples that use .NET Core 2.1 templates in the 4.7-archive branch of the BotBuilder-Samples repository. Сведения о развертывании ботов .NET Core 3.1 в Azure см. в разделе Развертывание бота.For information about deploying .NET Core 3.1 bots to Azure, see Deploy your bot.

1. Вход в Azure1. Login to Azure

Созданный и протестированный локально бот можно развернуть в Azure.Once you've created and tested a bot locally, you can deploy it to Azure. Откройте командную строку, чтобы войти на портал Azure.Open a command prompt to log in to the Azure portal.

az login

Она откроет окно браузера с интерфейсом для входа.A browser window will open, allowing you to sign in.

Примечание

При развертывании бота в облаке, отличном от Azure, например US Gov, необходимо выполнить az cloud set --name <name-of-cloud> перед az login, где <name-of-cloud> обозначает имя зарегистрированного облака, например AzureUSGovernment.If you deploy your bot to a non-Azure cloud such as US Gov, you need to run az cloud set --name <name-of-cloud> before az login, where <name-of-cloud> is the name of a registered cloud, such as AzureUSGovernment. Если вы хотите вернуться в общедоступное облако, можно запустить az cloud set --name AzureCloud.If you want to go back to public cloud, you can run az cloud set --name AzureCloud.

2. Настройка подписки2. Set the subscription

Укажите подписку, которая будет использоваться по умолчанию.Set the default subscription to use.

az account set --subscription "<azure-subscription>"

Если вы не уверены, какую подписку выбрать для развертывания бота, просмотрите список подписок в учетной записи с помощью команды az account list.If you are not sure which subscription to use for deploying the bot, you can view the list of subscriptions for your account by using az account list command.

3. Создание регистрации приложения3. Create the application registration

На этом шаге вы создадите регистрацию приложения Azure, что обеспечит следующие возможности.In this step you will create an Azure application registration, which will allow:

  • Взаимодействие пользователя с ботом через несколько каналов, например Web Chat.The user to interact with the bot via a set of channels such as Web Chat.
  • Определение параметров подключения OAuth для проверки подлинности пользователя и создания маркера, с помощью которого бот будет обращаться к защищенным ресурсам от имени пользователя.The definition of OAuth Connection Settings to authenticate a user and to create a token used by the bot to access protected resources on behalf of the user.

3.1 Создание регистрации приложения Azure3.1 Create the Azure application registration

Чтобы создать регистрацию приложения Azure, выполните приведенную ниже команду.To create an Azure application registration, execute the following command:

az ad app create --display-name "displayName" --password "AtLeastSixteenCharacters_0" --available-to-other-tenants
ПараметрOption ОписаниеDescription
display-namedisplay-name Отображаемое имя приложения.The display name of the application. Оно указывается на портале Azure в общем списке ресурсов и в той группе ресурсов, в которую включено это приложение.It is listed in the Azure portal in the general resources list and in the resource group it belongs.
passwordpassword Пароль для приложения, также известный как секрет клиента.The password, also known as client secret, for the application. Это тот пароль, который вы создали для этого ресурса.This is a password you create for this resource. Он должен содержать не менее 16 символов с минимум одной буквой в верхнем или нижнем регистре и минимум одним специальным символом.It must be at least 16 characters long, contain at least 1 upper or lower case alphabetical character, and contain at least 1 special character.
available-to-other-tenantsavailable-to-other-tenants Указывает, что приложение может использоваться из любого клиента Azure AD.Indicates that the application can be used from any Azure AD tenant. Включите этот параметр, чтобы разрешить боту работать с каналами службы Azure Bot.Set this to enable your bot to work with the Azure Bot Service channels.

3.2 Запись значений appId и appSecret3.2 Record the appId and appSecret values

После выполнения команды на предыдущем шаге (3.1) необходимо будет записать два значения:You will need to record two values after executing the command in the previous step (step 3.1):

  • password, созданное на предыдущем шаге;The password you create in the previous step.
  • appId, которое можно найти в выходных данных JSON.The appId which you can find in the output JSON.

Скопируйте и сохраните значения appId и password.Copy and save the appId and password values. Они потребуются на шаге развертывания ARM для присвоения значений параметрам appId и appSecret соответственно.You will need to use them in the ARM deployment step, to assign values to the appId and the appSecret parameters, respectively.

4. Создание службы приложения бота4. Create the bot application service

При создании службы приложения бота можно развернуть бот в новой или существующей группе ресурсов. Для этого можно использовать шаблон Azure Resource Manager (ARM).When creating the bot application service, you can deploy your bot in a new or in an existing resource group, both via the Azure Resource Manager (ARM) template. Шаблон ARM — это JSON-файл, который декларативно определяет один или несколько ресурсов Azure и устанавливает зависимости между развернутыми ресурсами.An ARM template is a JSON file that declaratively defines one or more Azure resources and that defines dependencies between the deployed resources. Убедитесь, что у вас есть правильный путь к каталогу шаблонов развертывания ARM проекта DeploymentTemplates. Он нужен для присваивания значения файлу шаблона.Make sure that you have the correct path to your bot project ARM deployment templates directory DeploymentTemplates, you need it to assign the value to the template file. Выберите любой вариант, который вам подходит.Choose the option that works best for you:

Важно!

Боты Python нельзя развертывать в группе ресурсов, содержащей службы или боты Windows.Python bots cannot be deployed to a resource group that contains Windows services/bots. Хотя в одной группе ресурсов можно развернуть несколько ботов Python, другие службы (LUIS, QnA и пр.) следует создавать в другой группе ресурсов.Multiple Python bots can be deployed to the same resource group, but create other services (LUIS, QnA, etc.) in another resource group.

Развертывание с помощью шаблона ARM (в новой группе ресурсов)Deploy via ARM template (with new Resource Group)

На этом шаге вы создадите службу приложения для бота, то есть определите этап развертывания для бота.In this step, you create a bot application service which sets the deployment stage for the bot. Вы примените для этого шаблон ARM, создадите план обслуживания и группу ресурсов.You use an ARM template, a new service plan and a new resource group. Выполните следующую команду Azure CLI, чтобы запустить развертывание в области подписки из локального файла шаблона.Run the following Azure cli command to start a deployment at subscription scope from a local template file.

az deployment sub create --template-file "<path-to-template-with-new-rg.json" --location <region-location-name> --parameters appId="<app-id-from-previous-step>" appSecret="<password-from-previous-step>" botId="<id or bot-app-service-name>" botSku=F0 newAppServicePlanName="<new-service-plan-name>" newWebAppName="<bot-app-service-name>" groupName="<new-group-name>" groupLocation="<region-location-name>" newAppServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"

Примечание

Этот шаг может занять несколько минут.This step can take a few minutes to complete.

ПараметрOption ОписаниеDescription
namename Отображаемое имя, которое используется для регистрации каналов бота.The display name to use for your bot channels registration. По умолчанию здесь используется значение параметра botId.Default is the value of the botId parameter.
template-filetemplate-file Путь к шаблону ARM.The path to the ARM template. Обычно файл template-with-new-rg.json размещается в папке deploymentTemplates проекта бота.Usually, the template-with-new-rg.json file is provided in the deploymentTemplates folder of the bot project. Это путь к существующему файлу шаблона.This is a path to an existing template file. Можно указать абсолютный или относительный путь к текущему каталогу.It can be an absolute path, or relative to the current directory. Все шаблоны бота создают файлы шаблонов ARM.All bot templates generate ARM template files.
locationlocation Расположение.Location. Значения из az account list-locations.Values from: az account list-locations. Расположение по умолчанию можно настроить с помощью az configure --defaults location=<location>.You can configure the default location using az configure --defaults location=<location>.
параметрыparameters Параметры развертывания в формате списка пар "ключ — значение".Deployment parameters, provided as a list of key=value pairs. Введите следующие значения параметров:Enter the following parameter values:
  • appId — значение идентификатора приложения из выходных данных JSON, созданных на шаге Создание регистрации приложения.appId - The app id value from the JSON output generated by the create the application registration step.
  • appSecret — пароль, указанный на шаге Создание регистрации приложения.appSecret - The password you provided in the create the application registration step.
  • botId — имя создаваемого ресурса регистрации канала бота.botId - A name for the Bot Channels Registration resource to create. Оно должно быть глобально уникальным.It must be globally unique. Оно используется как неизменяемый идентификатор бота иIt is used as the immutable bot ID. сохраняется в качестве отображаемого имени бота, но это значение вы можете изменить.It is also used as the default display name, which is mutable.
  • botSku — ценовая категория, где возможны значения F0 (Бесплатный) или S1 (Стандартный).botSku - The pricing tier; it can be F0 (Free) or S1 (Standard).
  • newAppServicePlanName — имя нового плана службы приложений.newAppServicePlanName - The name of the new application service plan.
  • newWebAppName — имя службы приложений для бота.newWebAppName - A name for the bot application service.
  • groupName — имя новой группы ресурсов.groupName - A name for the new resource group.
  • groupLocation — расположение группы ресурсов Azure.groupLocation - The location of the Azure resource group.
  • newAppServicePlanLocation — расположение плана службы приложений.newAppServicePlanLocation - The location of the application service plan.

Развертывание с помощью шаблона ARM в существующей группе ресурсовDeploy via ARM template (with existing Resource Group)

На этом шаге вы создадите службу приложения для бота, то есть определите этап развертывания для бота.In this step, you create a bot application service which sets the deployment stage for the bot. Если вы используете существующую группу ресурсов, можно выбрать существующий план службы приложений или создать новый.When using an existing resource group, you can either use an existing app service plan or create a new one. Выберите любой вариант, который вам подходит.Choose the option that works best for you:

Примечание

Этот шаг может занять несколько минут.This step can take a few minutes to complete.

Вариант 1. Существующий план Службы приложенийOption 1: Existing App Service Plan

В этом варианте мы используем существующий план Службы приложений, но при этом создаем новое веб-приложение и новую регистрацию каналов бота.In this case, we are using an existing App Service Plan, but creating a new Web App and Bot Channels Registration.

Эта команда ниже определяет идентификатор и отображаемое имя бота.This command below sets the bot's ID and display name. Параметр botId должен быть глобально уникальным. Он используется как неизменяемый идентификатор бота.The botId parameter should be globally unique and is used as the immutable bot ID. Отображаемое имя бота является изменяемым.The bot's display name is mutable.

az deployment group create --resource-group "<name-of-resource-group>" --template-file "<path-to-template-with-preexisting-rg.json>" --parameters appId="<app-id-from-previous-step>" appSecret="<password-from-previous-step>" botId="<id or bot-app-service-name>" newWebAppName="<bot-app-service-name>" existingAppServicePlan="<name-of-app-service-plan>" appServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"
Вариант 2. Новый план Службы приложенийOption 2: New App Service Plan

В этом варианте мы создаем план Службы приложений, веб-приложение и регистрацию каналов бота.In this case, we are creating App Service Plan, Web App, and Bot Channels Registration.

az deployment group create --resource-group "<name-of-resource-group>" --template-file "<path-to-template-with-preexisting-rg.json>" --parameters appId="<app-id-from-previous-step>" appSecret="<password-from-previous-step>" botId="<id or bot-app-service-name>" newWebAppName="<bot-app-service-name>" newAppServicePlanName="<name-of-app-service-plan>" appServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"
ПараметрOption ОписаниеDescription
namename Отображаемое имя, которое используется для регистрации каналов бота.The display name to use for your bot channels registration. По умолчанию здесь используется значение параметра botId.Default is the value of the botId parameter.
resource-groupresource-group Имя группы ресурсов Azure.Name of the azure resource group.
template-filetemplate-file Путь к шаблону ARM.The path to the ARM template. Обычно файл template-with-preexisting-rg.json размещается в папке deploymentTemplates проекта.Usually, the template-with-preexisting-rg.json file is provided in the deploymentTemplates folder of the project. Это путь к существующему файлу шаблона.This is a path to an existing template file. Можно указать абсолютный или относительный путь к текущему каталогу.It can be an absolute path, or relative to the current directory. Все шаблоны бота создают файлы шаблонов ARM.All bot templates generate ARM template files.
locationlocation Расположение.Location. Значения из az account list-locations.Values from: az account list-locations. Расположение по умолчанию можно настроить с помощью az configure --defaults location=<location>.You can configure the default location using az configure --defaults location=<location>.
параметрыparameters Параметры развертывания в формате списка пар "ключ — значение".Deployment parameters, provided as a list of key=value pairs. Введите следующие значения параметров:Enter the following parameter values:
  • appId — значение appId, созданное на шаге 3.1 Создание регистрации приложения.appId - The appId value generated by the 3.1 create the application registration step.
  • appSecret — пароль, указанный на шаге 3.1 Создание регистрации приложения.appSecret - The password you provided in the the 3.1 create the application registration step.
  • botId — имя создаваемого ресурса регистрации канала бота.botId - A name for the Bot Channels Registration resource to create. Оно должно быть глобально уникальным.It must be globally unique. Оно используется как неизменяемый идентификатор бота иIt is used as the immutable bot ID. сохраняется в качестве отображаемого имени бота, но это значение вы можете изменить.It is also used as the default display name, which is mutable.
  • newWebAppName — имя службы приложений для бота.newWebAppName - A name for the bot application service.
  • newAppServicePlanName — имя создаваемого ресурса плана службы приложений.newAppServicePlanName - A name for the application service plan resource to create.
  • newAppServicePlanLocation — расположение плана службы приложений.newAppServicePlanLocation - The location of the application service plan.

5. Подготовка кода к развертыванию5. Prepare your code for deployment

5,1. получение или создание необходимых файлов5.1 Retrieve or create necessary files

Перед развертыванием бота нужно подготовить файлы проекта C#, JavaScript или Typescript.You need to prepare your project files before you can deploy your C#, Javascript, or Typescript bot. Ознакомьтесь со сведениями о Python, если необходимо подготовить файлы проекта перед развертыванием программы Python Bot.See the Python information if you need to prepare the project files before deploying your Python bot.

az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "MyBot.csproj"

Необходимо указать путь к CSPROJ-файлу относительно папки --code-dir.You must provide the path to the .csproj file relative to --code-dir. Для этого можно применить аргумент --proj-file-path.This can be performed via the --proj-file-path argument. Эта команда разрешит аргументы --code-dir и --proj-file-path в значение ./MyBot.csproj.The command would resolve --code-dir and --proj-file-path to "./MyBot.csproj".

Эта команда создаст файл .deployment в папке проекта бота.This command generates a .deployment file in your bot project folder.

5.2 Архивация каталога кода вручную5.2 Zip up the code directory manually

Если для развертывания кода бота используются ненастроенные интерфейсы API развертывания ZIP-файлов, Web App или Kudu демонстрирует следующее поведение.When using the non-configured zip deploy API to deploy your bot's code, Web App/Kudu's behavior is as follows:

Kudu по умолчанию предполагает, что развертывание из ZIP-файлов готово к выполнению и не требует дополнительных шагов сборки, таких как npm install или dotnet restore/dotnet publish.Kudu assumes by default that deployments from zip files are ready to run and do not require additional build steps during deployment, such as npm install or dotnet restore/dotnet publish.

Важно включить весь код сборки и все необходимые зависимости в развертываемый ZIP-файл, иначе бот не будет работать должным образом.It is important to include your built code with all necessary dependencies in the zip file being deployed, otherwise your bot will not work as intended.

Важно!

Прежде чем архивировать файлы проекта, убедитесь, что вы зашли в папку проекта бота.Before zipping your project files, make sure that you are in the bot's project folder.

  • Для ботов на C# это папка, в которой расположен CSPROJ-файл.For C# bots, it is the folder that has the .csproj file.
  • Для ботов на JavaScript это папка, в которой расположен файл app.js или index.js.For JavaScript bots, it is the folder that has the app.js or index.js file.
  • Для ботов на TypeScript это папка, которая содержит папку src (с файлами bot.ts и index.ts).For TypeScript bots, it is the folder that includes the src folder (where the bot.ts and index.ts files are).
  • Для ботов Python это папка, в которой расположен файл app.py.For Python bots, it is the folder that has the app.py file.

Перед выполнением команды для создания ZIP-файла убедитесь, что в папке проекта выбраны все файлы и папки.Within the project folder, make sure you select all the files and folders before running the command to create the zip file. В папке проекта будет создан один ZIP-файл.This will create a single zip file within the project folder. Если расположение корневой папки выбрано неверно, бот не сможет запуститься на портале Azure.If your root folder location is incorrect, the bot will fail to run in the Azure portal.

Развертывание кода в AzureDeploy code to Azure

Теперь мы готовы развернуть код в виде веб-приложения Azure.At this point we are ready to deploy the code to the Azure Web App. Запустите следующую команду из командной строки, чтобы выполнить развертывание с помощью принудительного развертывания в Kudu из ZIP-файла веб-приложения.Run the following command from the command line to perform deployment using the kudu zip push deployment for a web app.

az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-web-app>" --src "<project-zip-path>"
ПараметрOption ОписаниеDescription
resource-groupresource-group Имя группы ресурсов Azure, которая содержит бота.The name of the Azure resource group that contains your bot. (Это будет группа ресурсов, которую вы использовали или создали при регистрации приложения для бота.)(This will be the resource group you used or created when creating the app registration for your bot.)
namename Имя веб-приложения, которое вы использовали ранее.Name of the Web App you used earlier.
srcsrc Путь к созданному ранее ZIP-файлу проекта.The path to the zipped project file you created.

Примечание

Этот шаг может занять несколько минут.This step can take a few minutes to complete. Кроме того, после завершения развертывания бот станет доступным для тестирования через несколько минут.Also it can take a few more minutes between when the deployment finishes and when your bot is available to test.

Тестирование в веб-чатеTest in Web Chat

  1. В браузере перейдите на портал Azure.In your browser, navigate to the Azure portal.
  2. На панели слева щелкните Группы ресурсов.In the left panel, click Resource groups.
  3. На панели справа найдите свою группу.In the right panel, search for your group.
  4. Щелкните имя группы.Click on your group name.
  5. Щелкните ссылку регистрации канала бота.Click the link of your Bot Channels Registration.
  6. В области Bot Channels Registration (Регистрация канала бота) щелкните Test in Web Chat (Протестировать в Web Chat).In the Bot Channels Registration panel, click Test in Web Chat. Или на панели справа щелкните поле Тест.Alternatively, in the right panel, click the Test box.

См. сведения о регистрации каналов бота в руководстве по регистрации бота с помощью службы Azure Bot.For more information about bot channels registration, see Register a bot with Bot Service.

Дополнительные сведенияAdditional information

Развертывание бота в Azure подразумевает оплату за используемые службы.Deploying your bot to Azure will involve paying for the services you use. Руководство по управлению счетами и расходами поможет вам понять, как расшифровывать счета Azure, отслеживать использование и расходы, а также управлять учетными записями и подписками.The billing and cost management article helps you understand Azure billing, monitor usage and costs, and manage your account and subscriptions.

Дальнейшие действияNext steps