ボットをデプロイする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 チャットでボットをテストする方法について説明します。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. 2.2.0 より前の Azure CLI バージョンを使用している場合は、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 portal の展開と混同しないでください。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 でソリューション構成が リリース に設定されていることを確認し、ソリューションのクリーン リビルドを実行してください。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ソース コードには、ARM テンプレートを含む DeploymentTemplates フォルダーが含まれます。When you create a bot using a Visual Studio template, the source code generated includes a DeploymentTemplates folder that contains ARM templates. ここで説明するデプロイ プロセスでは、ARM テンプレートのいずれかを使用して、Azure CLI を使ってボットに必要なリソースを Azure でプロビジョニングします。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.

Bot Framework SDK 4.3 のリリースでは、.bot ファイルの使用は "非推奨" になりました。With the release of Bot Framework SDK 4.3, we have deprecated the use of a .bot file. 代わりに、構成ファイルを appsettings.json 使用してボット リソースを管理します。Instead, we use the appsettings.json configuration file to manage bot resources. .bot ファイルから構成ファイルへの設定の移行については、「ボット リソースの管理 」を参照してくださいFor information on migrating settings from the .bot file to a configuration file, see managing bot resources.

注意

VSIXパッケージには、.net core 2.1 と .net core 3.1 の両方のバージョンの C# テンプレートが含まれています。The VSIX package includes both .NET Core 2.1 and .NET Core 3.1 versions of the C# templates. 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 テンプレートを使用するサンプルは、BotBuilder-Samples リポジトリの 4.7-archive ブランチにあります。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 にデプロイする方法の詳細については、「 bot を azure にデプロイする方法」を参照してください。For information about deploying .NET Core 3.1 bots to Azure, see how to deploy your bot to Azure.

Azure にログインするLogin to Azure

ボットをローカルで作成してテストしたら、Azure にデプロイできます。Once you've created and tested a bot locally, you can deploy it to Azure. コマンド プロンプトを開いて Azure portal にログインします。Open a command prompt to log in to the Azure portal.

az login

ブラウザー ウィンドウが開いて、サインインできます。A browser window will open, allowing you to sign in.

注意

US Gov などの Azure 以外のクラウドにボットをデプロイする場合は、az login の前に az cloud set --name <name-of-cloud> を実行する必要があります。この場合、<name-ofcloud> は、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.

サブスクリプションを設定するSet the subscription

使用する既定のサブスクリプションを設定します。Set the default subscription to use.

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

Bot のデプロイに使用するサブスクリプションがわからない場合は、コマンドを使用してアカウントのサブスクリプションの一覧を表示でき az account list ます。If you aren't 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.

アプリケーションの登録を作成するCreate the application registration

この手順では、Azure アプリケーションの登録を作成します。これにより、次のことが可能になります。In this step you will create an Azure application registration, which will allow:

  • ユーザーが"Web チャット" などの一連のチャンネルを介してボットと対話する。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.

Azure アプリケーションの登録を作成する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 portal の一般的なリソースの一覧と、それが属しているリソース グループに表示されます。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 文字以上でなければなりません。また、大文字または小文字を 1 文字以上、特殊文字を 1 文字以上含める必要があります。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 Service チャンネルと連携できるようになります。Set this to enable your bot to work with the Azure Bot Service channels.

AppId と appSecret の値を記録するRecord the appId and appSecret values

appIdpassword の値をコピーして保存します。Copy and save the appId and password values. これらは、ARM デプロイ手順で必要になります。You will need them in the ARM deployment step.

Bot アプリケーションサービスを作成する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 テンプレートは、1 つ以上の Azure リソースを宣言により定義すると共に、デプロイされるリソース間の依存関係を定義する JSON ファイルです。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 と Java bot は、Windows サービス/ボットを含むリソースグループにはデプロイできません。Python and Java bots cannot be deployed to a resource group that contains Windows services/bots. 複数の Python bot を同じリソースグループにデプロイすることはできますが、別のリソースグループに他のサービス (LUIS、QnA など) を作成する必要があります。Multiple Python bots can be deployed to the same resource group, but you need to 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.

ヒント

新しい リソースグループに ARM テンプレートを使用し、でtemplate-with-new-rg.js します。Use the ARM template for a new resource group, template-with-new-rg.json.

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 deployment name.
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-locationsValues from: az account list-locations. az configure --defaults location=<location> を使用して、既定の場所を構成できます。You can configure the default location using az configure --defaults location=<location>.
parametersparameters key=value のペアの一覧として指定されるデプロイ パラメーター。Deployment parameters, provided as a list of key=value pairs. 次のパラメーター値を入力します。Enter the following parameter values:
  • appId-「アプリケーション登録の作成」で生成された JSON 出力の アプリ id 値。appId - The app id value from the JSON output generated in 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. これは、不変のボット ID として使用されます。It is used as the immutable bot ID. また、変更可能な既定の表示名としても使用されます。It is also used as the default display name, which is mutable.
  • botSku - 価格レベル。F0 (無料) または S1 (Standard) を指定できます。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: 既存の App Service プランOption 1: Existing App Service Plan

この場合、既存の App Service プランが使用されますが、Web アプリとボット チャンネル登録は新しく作成されます。In this case, we are using an existing App Service Plan, but creating a new Web App and Bot Channels Registration.

次のコマンドにより、ボットの ID と表示名が設定されます。This command below sets the bot's ID and display name. botId パラメーターはグローバルに一意である必要があり、不変のボット ID として使用されます。The botId parameter should be globally unique and is used as the immutable bot ID. ボットの表示名は変更可能です。The bot's display name is mutable.

ヒント

既存 のリソースグループに ARM テンプレートを使用し、でtemplate-with-preexisting-rg.js します。Use the ARM template for an existing resource group, template-with-preexisting-rg.json.

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: 新しい App Service プランOption 2: New App Service Plan

この場合は、App Service プラン、Web アプリ、および Bot Channels Registration が作成されます。In this case, we are creating App Service Plan, Web App, and Bot Channels Registration.

ヒント

既存 のリソースグループに ARM テンプレートを使用し、でtemplate-with-preexisting-rg.js します。Use the ARM template for an existing resource group, template-with-preexisting-rg.json.

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>" newAppServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"
オプションOption 説明Description
namename デプロイ名。The deployment name.
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-locationsValues from: az account list-locations. az configure --defaults location=<location> を使用して、既定の場所を構成できます。You can configure the default location using az configure --defaults location=<location>.
parametersparameters key=value のペアの一覧として指定されるデプロイ パラメーター。Deployment parameters, provided as a list of key=value pairs. 次のパラメーター値を入力します。Enter the following parameter values:
  • appId -「 appId アプリケーション登録の作成 」手順で生成された値。appId - The appId value generated by the create the application registration step.
  • appSecret -「 アプリケーション登録の作成 」で指定したパスワード。appSecret - The password you provided in the the create the application registration step.
  • botId - 作成するボット チャンネル登録リソースの名前。botId - A name for the Bot Channels Registration resource to create. 名前はグローバルに一意である必要があります。It must be globally unique. これは、不変のボット ID として使用されます。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.
  • appServicePlanLocation - アプリケーション サービス プランの場所。appServicePlanLocation - The location of the application service plan.

デプロイ用のコードを準備するPrepare your code for deployment

アプリ Id とパスワードを割り当てるAssign app Id and password

Azure ボット リソースの [ アプリ ID] と [パスワード] を割り 当て、デプロイ用にボットを構成します。Assign Azure bot resource App Id and Password to configure your bot for deployment. 関連する変数 (およびボット プロジェクト構成ファイルに含まれている) にそれらの値 MicrosoftAppId MicrosoftAppPassword を割り当てる。You assign their values to the related variables: MicrosoftAppId and MicrosoftAppPassword contained in your bot project configuration file. ファイルは、次の表に示すように、ボットの作成に使用するプログラミング言語によって異なります。The file differs depending on the programming language you use to create the bot, as shown in the table below.

言語Language ファイル名File Name
CsharpCsharp appsettings.json
JavaScriptJavaScript .env
JavaJava application.properties
PythonPython config.py

プロジェクトの準備Prepare project

ボットをデプロイする前に、プロジェクト ファイルを準備する必要があります。You need to prepare your project files before you can deploy your bot.

Bot のプロジェクトフォルダーにいることを確認します。Make sure you're in your bot's project folder. 次に、配置のために bot コードを準備します。Then prepare your bot code for deployment.

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

--code-dir に関連する .csproj ファイルへのパスを指定する必要があります。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.

パッケージプロジェクトPackage project

構成されていない zip デプロイ API を使用してお使いのボットのコードをデプロイする場合、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.

重要

プロジェクト ファイルを zip 圧縮する前に、必ずボットのプロジェクト フォルダー内に移動します。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. これで、プロジェクト フォルダー内に 1 つの zip ファイルが作成されます。This will create a single zip file within the project folder. お使いのルート フォルダーの場所が正しくない場合、ボットは、Azure portal で実行できませんIf your root folder location is incorrect, the bot will fail to run in the Azure portal.

コードを Azure にデプロイするDeploy code to Azure

この時点で、Azure Web アプリにコードをデプロイする準備ができています。At this point we are ready to deploy the code to the Azure Web App.

コマンドラインから次のコマンドを実行して、Web アプリ用の 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.
namename 前に使用した Web アプリの名前。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.

Web チャットでのテストTest in Web Chat

  1. ブラウザーで Azure portal に移動します。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. [ボット チャンネル登録] パネルで、 [Web チャットでテスト] をクリックします。In the Bot Channels Registration panel, click Test in Web Chat. あるいは、右側のパネルで [テスト] ボックスをクリックします。Alternatively, in the right panel, click the Test box.

ボット チャンネル登録の詳細については、Bot Service へのボットの登録に関する記事を参照してください。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. 詳細については、「 Azure Command-Line Interface (CLI) 」のドキュメントと Azure CLI リリースノートを参照してください。See also Azure Command-Line Interface (CLI) documentation and Azure CLI release notes.

次のステップNext steps