チュートリアル:基本的なボットを作成してデプロイするTutorial: Create and deploy a basic bot

適用対象: 対象 SDK v4 対象外 SDK v3 APPLIES TO: yesSDK v4 no SDK v3

このチュートリアルでは、Bot Framework SDK を使用して基本的なボットを作成し、Azure にデプロイする手順について説明します。This tutorial walks you through creating a basic bot with the Bot Framework SDK and deploying it to Azure. 基本的なボットを既に作成してローカル環境で実行している場合、「ボットをデプロイする」セクションに進んでください。If you've already created a basic bot and have it running locally, skip ahead to the Deploy your bot section.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • 基本的なエコー ボットを作成するCreate a basic Echo bot
  • それをローカル環境で実行して操作するRun and interact with it locally
  • ボットを公開するPublish your bot

Azure サブスクリプションがない場合は、開始する前に無料アカウントを作成してください。If you don’t have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

ボットの作成Create a bot

前提条件セクションでダウンロードした BotBuilderVSIX.vsix テンプレートをインストールします。Install BotBuilderVSIX.vsix template that you downloaded in the prerequisites section.

Visual Studio で、Echo Bot (Bot Framework v4) テンプレートを使用して、新しいボット プロジェクトを作成します。In Visual Studio, create a new bot project using the Echo Bot (Bot Framework v4) template.

Visual Studio プロジェクト

ヒント

必要な場合は、プロジェクトのビルドの種類を .Net Core 2.1 に変更します。If needed, change the project build type to .Net Core 2.1. また、必要に応じて、Microsoft.Bot.Builder NuGet パッケージを更新します。Also if needed, update the Microsoft.Bot.Builder NuGet packages.

テンプレートのおかげで、プロジェクトには、このクイック スタートでボットを作成するのに必要なすべてのコードが含まれています。Thanks to the template, your project contains all the code that's necessary to create the bot in this quickstart. 実際には、追加のコードを記述する必要はありません。You won't actually need to write any additional code.

Visual Studio でのボットの開始Start your bot in Visual Studio

実行ボタンをクリックすると、Visual Studio はアプリケーションを構築し、localhost に配置して、Web ブラウザーを起動してアプリケーションの default.htm ページを表示します。When you click the run button, Visual Studio will build the application, deploy it to localhost, and launch the web browser to display the application's default.htm page. この時点では、ボットはローカルで実行されています。At this point, your bot is running locally.

エミュレーターの起動とボットの接続Start the emulator and connect your bot

次に、エミュレーターを起動し、エミュレーターのボットに接続します。Next, start the emulator and then connect to your bot in the emulator:

  1. エミュレーターの [ようこそ] タブにある [新しいボット構成を作成する] リンクをクリックします。Click the Create a new bot configuration link in the emulator "Welcome" tab.
  2. ボット用のフィールドに入力します。Fill out the fields for your bot. ボットのウェルカム ページ アドレス (通常は http://localhost:3978) ) を使用し、このアドレスにルーティング情報 '/api/messages' を追加します。Use your bot's welcome page address (typically http://localhost:3978) and append routing info '/api/messages' to this address.
  3. 次に、 [保存および接続] をクリックします。then click Save and connect.

ボットでのやり取りInteract with your bot

メッセージをボットに送信します。ボットはメッセージで応答します。Send a message to your bot, and the bot will respond back with a message.

実行中のエミュレーター

注意

メッセージを送信できない場合は、ngrok がシステム上の必要な権限をまだ取得していないため、マシンの再起動が必要になることがあります (この操作は一度だけ実行する必要があります)。If you see that the message cannot be sent, you might need to restart your machine as ngrok didn't get the needed privileges on your system yet (only needs to be done one time).

ボットをデプロイするDeploy your bot

前提条件Prerequisites

デプロイの準備をするPrepare for deployment

Visual Studio テンプレートまたは Yeoman テンプレートを使用してボットを作成すると、生成されるソース コードには、ARM テンプレートを含む deploymentTemplates フォルダーが含まれます。When you create a bot using the Visual Studio template or Yeoman 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 または .env ファイルを使用して、ボット リソースを管理します。Instead, we use an appsettings.json or .env file to manage bot resources. .bot ファイルから appsettings.json または .env ファイル への設定の移行については、ボット リソースの管理に関するページをご覧ください。For information on migrating settings from the .bot file to appsettings.json or .env file, see managing bot resources.

1.Azure にログインする1. 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.

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 an App registration

アプリケーションを登録することで、Azure AD を使用してユーザーを認証し、ユーザー リソースへのアクセスを要求できます。Registering the application means that you can use Azure AD to authenticate users and request access to user resources. お使いのボットには Azure に登録されたアプリが必要です。このアプリが Bot Framework Service へのボット アクセスを提供し、認証済みメッセージを送受信できるようにします。Your bot requires a Registered app in Azure that provides the bot access to the Bot Framework Service for sending and receiving authenticated messages. Azure CLI を使用してアプリを登録を作成するには、次のコマンドを実行します。To create register an app via the Azure CLI, perform 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.
passwordpassword アプリのパスワード。"クライアント シークレット" とも呼ばれます。App password, aka 'client secret'. パスワードは 16 文字以上でなければなりません。また、大文字または小文字を 1 文字以上、特殊文字を 1 文字以上含める必要があります。The password 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 whether the application can be used from any Azure AD tenant. true に設定すると、お使いのボットが Azure Bot Service チャネルと連携できるようになります。Set to true to enable your bot to work with the Azure Bot Service channels.

上記のコマンド キーにより JSON と キー appId が出力され、ARM デプロイ用にこのキーの値が保存されます。これは、ここで appId パラメーターに対して使用されます。The above command outputs JSON with the key appId, save the value of this key for the ARM deployment, where it will be used for the appId parameter. 指定されたパスワードは appSecret パラメーターで使用されます。The password provided will be used for the appSecret parameter.

注意

既存のアプリ登録を使用する場合は、次のコマンドを使用できます。If you would like to use an existing App registration you can use the command:

az bot create --kind webapp --resource-group "<name-of-resource-group>" --name "<name-of-web-app>" --appid "<existing-app-id>" --password "<existing-app-password>" --lang <Javascript|Csharp>

4.ARM テンプレートを使用してデプロイする4. Deploy via ARM template

ご自身のボットは、新しいリソース グループまたは既存のリソース グループにデプロイできます。You can deploy your bot in a new resource group or an existing resource group. 自分にとって最適なオプションを選択してください。Choose the option that works best for you.

新しいリソース グループでの ARM テンプレートを使用したデプロイDeploy via ARM template with new Resource Group

Azure で新しいリソース グループを作成し、ARM テンプレートを使用して、そこで指定されたリソースを作成します。You'll create a new resource group in Azure and then use the ARM template to create the resources specified in it. この場合は、App Service プラン、Web アプリ、Bot Channels Registration が提供されます。In this case, we are providing App Service Plan, Web App, and Bot Channels Registration.

az deployment create --name "<name-of-deployment>" --template-file "template-with-new-rg.json" --location "location-name" --parameters appId="<msa-app-guid>" appSecret="<msa-app-password>" botId="<id-or-name-of-bot>" botSku=F0 newAppServicePlanName="<name-of-app-service-plan>" newWebAppName="<name-of-web-app>" groupName="<new-group-name>" groupLocation="<location>" newAppServicePlanLocation="<location>"
オプションOption 説明Description
namename デプロイのフレンドリ名。Friendly name for the deployment.
template-filetemplate-file ARM テンプレートへのパス。The path to the ARM template. プロジェクトの deploymentTemplates フォルダーに用意されている template-with-new-rg.json ファイルを使用できます。You can use the template-with-new-rg.json file provided in the deploymentTemplates folder of the project.
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 デプロイ パラメーターの値を提供します。Provide deployment parameter values. az ad app create コマンドを実行して取得した appId 値。appId value you got from running the az ad app create command. appSecret は、前の手順で指定したパスワードです。appSecret is the password you provided in the previous step. botId パラメーターはグローバルに一意である必要があり、不変のボット ID として使用されます。The botId parameter should be globally unique and is used as the immutable bot ID. これは、変更可能なボットの表示名を構成するときにも使用されます。It is also used to configure the display name of the bot, which is mutable. botSku は価格レベルです。F0 (無料) または S1 (Standard) を指定できます。botSku is the pricing tier and can be F0 (Free) or S1 (Standard). newAppServicePlanName は App Service プランの名前です。newAppServicePlanName is the name of App Service Plan. newWebAppName は、作成する Web アプリの名前です。newWebAppName is the name of the Web App you are creating. groupName は、作成する Azure リソース グループの名前です。groupName is the name of the Azure resource group you are creating. groupLocation は、Azure リソース グループの場所です。groupLocation is the location of the Azure resource group. newAppServicePlanLocation は、App Service プランの場所です。newAppServicePlanLocation is the location of the App Service Plan.
既存のリソース グループでの ARM テンプレートを使用したデプロイDeploy via ARM template with existing Resource Group

既存のリソース グループを使用する場合は、既存の App Service プランを使用するか、新しい App Service プランを作成できます。When using an existing resource group, you can either use an existing App Service Plan or create a new one. 両方のオプションの手順を以下に示します。Steps for both options are listed below.

オプション 1:既存の App Service プランOption 1: Existing App Service Plan

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

注意

次のコマンドにより、ボットの ID と表示名が設定されます。This command 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.

az group deployment create --name "<name-of-deployment>" --resource-group "<name-of-resource-group>" --template-file "template-with-preexisting-rg.json" --parameters appId="<msa-app-guid>" appSecret="<msa-app-password>" botId="<id-or-name-of-bot>" newWebAppName="<name-of-web-app>" existingAppServicePlan="<name-of-app-service-plan>" appServicePlanLocation="<location>"

オプション 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.

az group deployment create --name "<name-of-deployment>" --resource-group "<name-of-resource-group>" --template-file "template-with-preexisting-rg.json" --parameters appId="<msa-app-guid>" appSecret="<msa-app-password>" botId="<id-or-name-of-bot>" newWebAppName="<name-of-web-app>" newAppServicePlanName="<name-of-app-service-plan>" appServicePlanLocation="<location>"
オプションOption 説明Description
namename デプロイのフレンドリ名。Friendly name for the deployment.
resource-groupresource-group Azure リソース グループの名前。Name of the azure resource group.
template-filetemplate-file ARM テンプレートへのパス。The path to the ARM template. プロジェクトの deploymentTemplates フォルダーで指定された template-with-preexisting-rg.json ファイルを使用できます。You can use template-with-preexisting-rg.json file provided in the deploymentTemplates folder of the project.
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 デプロイ パラメーターの値を提供します。Provide deployment parameter values. az ad app create コマンドを実行して取得した appId 値。appId value you got from running the az ad app create command. appSecret は、前の手順で指定したパスワードです。appSecret is the password you provided in the previous step. botId パラメーターはグローバルに一意である必要があり、不変のボット ID として使用されます。The botId parameter should be globally unique and is used as the immutable bot ID. これは、変更可能なボットの表示名を構成するときにも使用されます。It is also used to configure the display name of the bot, which is mutable. newWebAppName は、作成する Web アプリの名前です。newWebAppName is the name of the Web App you are creating. newAppServicePlanName は App Service プランの名前です。newAppServicePlanName is the name of App Service Plan. newAppServicePlanLocation は、App Service プランの場所です。newAppServicePlanLocation is the location of the App Service Plan.

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

必要な IIS/Kudu ファイルを取得または作成するRetrieve or create necessary IIS/Kudu files

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

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"

注意

az bot prepare-depoloy コマンドを実行すると、ボット プロジェクトフォルダーに .deployment ファイルが生成されます。The az bot prepare-depoloy command should generate a .deployment file in your bot project folder.

コード ディレクトリを手動で zip 圧縮するZip up the code directory manually

構成されていない 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.

そのため、ご自身のビルドされたコードと、Web アプリに展開されている必要な依存関係すべてを zip ファイルに含めることが重要です。これを行わないと、ボットは意図したとおりに動作しません。As such, it is important to include your built code and with all necessary dependencies in the zip file being deployed to the Web App, otherwise your bot will not work as intended.

重要

プロジェクト ファイルを zip 圧縮する前に、必ずそのプロジェクト フォルダー "" に移動します。Before zipping your project files, make sure that you are in the project folder.

  • C# ボットの場合は、.csproj ファイルが含まれるフォルダーです。For C# bots, it is the folder that has the .csproj file.
  • JS ボットの場合は、app.js ファイルまたは index.js ファイルが含まれるフォルダーです。For JS bots, it is the folder that has the app.js or index.js file.

プロジェクト フォルダーですべてのファイルを選択して zip 圧縮し、そのフォルダー内でコマンドを実行します。Within the project folder, select all the files and zip them up, then run the command while still in the 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 "code.zip" 
オプション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.)
名前name 前に使用した Web アプリの名前。Name of the Web App you used earlier.
srcsrc 作成した zip ファイルへのパス。The path to the zipped file you created.

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. Bot Channel Registration のリンクをクリックします。Click the link of your Bot Channel Registration.
  6. [Bot Channel Registration] パネルで、 [Test in Web Chat](Web チャットでのテスト) をクリックします。In the Bot Channel Registration panel, click Test in Web Chat. あるいは、右側のパネルで [テスト] ボックスをクリックします。Alternatively, in the right panel, click the Test box.

チャネル登録の詳細については、「ボットを Bot Service に登録する」を参照してください。For more information about channel registration, see Register a bot with Bot Service.

その他のリソースAdditional resources

ボットをデプロイするときに、通常これらのリソースが Azure portal 上で作成されます。When you deploy a bot, typically these resources are created in the Azure portal:

リソースResources 説明Description
Web アプリ ボットWeb App Bot Azure App Service にデプロイされる Azure Bot Service ボット。An Azure Bot Service bot that is deployed to an Azure App Service.
App ServiceApp Service Web アプリケーションをビルドおよびホストできます。Enables you to build and host web applications.
[App Service プラン]App Service plan Web アプリを実行するための一連のコンピューティング リソースを定義します。Defines a set of compute resources for a web app to run.

Azure portal から自分のボットを作成する場合、テレメトリ用の Application Insights など、追加のリソースをプロビジョニングできます。If you create your bot through the Azure portal, you are able to provision additional resources, like Application Insights for telemetry.

az bot コマンドに関するドキュメントを確認するには、リファレンスに関するトピックを参照してください。To see documentation on az bot commands, see the reference topic.

Azure リソース グループにあまり馴染みがない場合は、こちらの「用語集」のトピックを参照してください。If you are unfamiliar with Azure resource group, see this terminology topic.

次の手順Next steps