この記事の対象: SDK v4
この記事では、Azure CLI を使用してボットのリソースを作成し、展開用にボットを準備して、ボットを Azure に展開する方法について説明します。
この記事では、ボットをデプロイする準備ができていることを前提としています。 単純なエコー ボットを作成する方法については、「Bot Framework SDK を使用してボットを作成する」を参照してください。 また、Bot Framework サンプル リポジトリに用意されているサンプルのいずれかを使用することもできます。
ヒント
この記事では、ボット用の Azure Bot リソースを作成します。
Web App Bot リソースまたは Bot Channels Registration リソースを使用する既存のボットは引き続き機能しますが、これらの種類のリソースを使用する新しいボットを作成することはできません。
前提条件
Java ボットの場合は、Maven をインストールします。
このプロセスでは、2 つの Azure Resource Manager テンプレート (ARM テンプレート) を使用して、ボットのリソースを作成します。
現在のテンプレートがない場合は、deploymentTemplates フォルダー (C#、JavaScript、Python、または Java) のボット プロジェクトにコピーを作成します。
Azure CLI を使用してボットをプロビジョニングおよび発行するには、以下のものが必要です。
注意
ボットでストレージ サービスや言語サービスなどの追加のリソースを使用する場合は、これらを個別に展開する必要があります。
デプロイを計画する
開始する前に、次のことを決定します。
Decision |
メモ |
Azure でボット リソースの ID を管理する方法 |
ユーザー割り当てマネージド ID、シングルテナント アプリ登録、またはマルチテナント アプリ登録を使用できます。 詳細については、「ID リソースを作成する」を参照してください。 |
ボット リソースを作成するリソース グループ (複数可) |
このプロセスに慣れるまでは、1 つのリソース グループを使用することをお勧めします。 詳細については、「Azure のリソースを管理する」を参照してください。 |
ボットがリージョンかグローバルか |
リージョン ボットの詳細については、「Azure AI Bot Service のリージョン化」を参照してください。 |
ボット ID は、いくつかの異なる方法で Azure で管理できます。
- ボットの認証情報を自分で管理する必要がないように、ユーザー割り当てマネージド ID として管理する。
- シングルテナント アプリとして管理する。
- マルチテナント アプリとして管理する。
ユーザー割り当てマネージド ID とシングルテナント アプリの種類に関するサポートは、Bot Framework SDK for C#、JavaScript、および Python に追加されました。
これらの種類のアプリは、他の言語、Bot Framework Composer、Bot Framework Emulator、または開発トンネルではサポートされていません。
アプリの種類 |
サポート |
ユーザー割り当てマネージド ID |
Azure AI Bot Service と、C#、JavaScript、Python 用の SDK |
シングルテナント |
Azure AI Bot Service と、C#、JavaScript、Python 用の SDK |
マルチテナント |
Azure AI Bot Service、すべての Bot Framework SDK 言語、Composer、Emulator、および開発トンネル |
重要
Python ボットは、Windows サービスまたはボットを含むリソース グループにはデプロイできません。
ただし、複数の Python ボットを同じリソース グループに展開することはできます。
Azure AI サービスなどの他のサービスを別のリソース グループに作成します。
管理
ボットを展開する前に、必要な Azure リソースを作成 (または プロビジョニング) します。
一部の手順では、既存のリソースを使用することも、新しいリソースを作成することもできます。
作成する新しいリソースの名前と、使用する既存のリソースの名前を事前に決定しておくことをお勧めします。
ボットでは、これらの種類のリソースが使用されます。
- ボットのプロビジョニング、公開、管理に使用する Azure サブスクリプション
- 1 つまたは複数のリソース グループ
- ユーザー割り当てマネージド ID または Microsoft Entra ID アプリ登録
- App Service プラン リソース
- App Service リソース
- Azure Bot リソース
Azure でリソースを作成すると、後の手順で必要になる ID、パスワード、およびその他の情報が Azure によって生成または要求されます。
次の表は、記録する必要があるリソース名、生成されるステップ、および使用されるステップの情報を示しています。
サインインしてサブスクリプションを選択する
コマンド ウィンドウを開きます。
Azure にサインインします。
az login
- ブラウザー ウィンドウが開きます。 サインイン プロセスを完了します。
- 成功すると、アカウントがアクセスできるサブスクリプションの一覧が出力されます。
使用するサブスクリプションを設定するには、次のように実行します。
az account set --subscription "<subscription>"
<サブスクリプション>の場合は、使用するサブスクリプションの ID または名前を使用します。
ユーザー割り当てマネージド ID またはシングルテナント ボットを作成する場合は、サブスクリプションの tenantId
を記録します。
次の手順でテナント ID を使用します。
リソース グループを作成する
適切なリソース グループがまだない場合は、az group create
コマンドを使用して、必要な新しいリソース グループを作成します。
az group create --name "<group>" --location "<region>"
オプション |
説明 |
name |
作成するリソース グループの名前。 |
location |
リソース グループを作成するリージョン。 |
詳細については、「Azure CLI を使用して Azure リソース グループを管理する方法」を参照してください。
ID リソースを作成する
ユーザー割り当てマネージド ID を作成するには、az identity create
コマンドを使用します。
成功すると、コマンドによって JSON 出力が生成されます。
az identity create --resource-group "<group>" --name "<identity>"
オプション |
説明 |
resource-group |
ID の作成場所となるリソース グループの名前。 |
name |
作成する ID リソースの名前。 |
詳細については、az identity のリファレンスを参照してください。
後の手順で必要になる値を記録します。
- ID リソースのリソース グループ名
- ID リソースの名前
- コマンド出力の
clientId
次のコマンドを使用して、アプリ登録を作成し、そのパスワードを設定します。
成功すると、JSON 出力が生成されます。
az ad app create
コマンドを使用して、Microsoft Entra ID アプリ登録を作成します。
このコマンドでは、次の手順で使用するアプリ ID が生成されます。
az ad app create --display-name "<app-registration-display-name>" --sign-in-audience "AzureADMyOrg"
オプション |
説明 |
display-name |
アプリ登録の表示名。 |
sign-in-audience |
アプリでサポートされている Microsoft アカウント。 シングルテナント アプリの場合は、AzureADMyOrg を使用します。 |
az ad app credential reset
コマンドを使用して、アプリ登録用の新しいパスワードを生成します。
az ad app credential reset --id "<appId>"
後の手順で必要になる値 (コマンド出力のアプリ ID とパスワード) を記録します。
az ad app
の詳細については、「コマンド リファレンス」を参照してください。 sign-in-audience
パラメーターの詳細については、「sigInAudience の値」を参照してください。
Azure CLI 2.39.0 以降の場合、次のコマンドを使用して、アプリ登録を作成し、そのパスワードを設定します。 成功すると、JSON 出力が生成されます。
az ad app create
コマンドを使用して、Microsoft Entra ID アプリ登録を作成します。
このコマンドでは、後の手順で必要になるアプリ ID が生成されます。
az ad app create --display-name "<app-registration-display-name>" --sign-in-audience "AzureADandPersonalMicrosoftAccount"
オプション |
説明 |
display-name |
アプリ登録の表示名。 |
sign-in-audience |
アプリでサポートされている Microsoft アカウント。 マルチテナント アプリの場合は、AzureADandPersonalMicrosoftAccount を使用します。 |
az ad app credential reset
コマンドを使用して、アプリ登録用の新しいパスワードを生成します。
az ad app credential reset --id "<appId>"
後の手順で必要になる値 (コマンド出力のアプリ ID とパスワード) を記録します。
az ad app
の詳細については、「コマンド リファレンス」を参照してください。 sign-in-audience
パラメーターの詳細については、「sigInAudience の値」を参照してください。
Azure CLI 2.36.0 以前の場合は、次のコマンドを使用して、アプリ登録を作成し、そのパスワードを設定します。 成功すると、JSON 出力が生成されます。
az ad app create
コマンドを使用して、Microsoft Entra ID アプリ登録を作成します。
az ad app create --display-name "<name>" --password "<password>" --available-to-other-tenants
オプション |
説明 |
display-name |
アプリの登録の表示名。 |
password |
アプリケーションのパスワード、クライアント シークレット。 これは 16 文字以上でなければなりません。また、大文字または小文字の英字を 1 文字以上、数字を 1 文字以上、特殊文字を 1 文字以上含める必要があります。 |
available-to-other-tenants |
マルチテナント ボットを作成するには、このフラグを含めます。 これにより、任意の Microsoft Entra ID テナントからアプリケーションにアクセスできます。 |
後の手順で必要になる値を記録します。
- 使用したパスワード
- コマンド出力のアプリ ID
ARM テンプレートを使ってリソースを作成する
ボット用の App Service リソースと Azure Bot リソースを作成します。
どちらの手順でも、ARM テンプレートと az deployment group create
Azure CLI コマンドを使用してリソースを作成します。
ボット用の App Service リソースを作成します。 App Service は、新規または既存の App Service プラン内に含めることができます。
詳細な手順については、「Azure CLI を使用して App Service を作成する」を参照してください。
ボット用の Azure Bot リソースを作成する
詳細な手順については、「Azure CLI を使用して Azure Bot を作成または更新する」を参照してください。
重要
これらの手順は、どちらの順序でも実行できます。
ただし、最初に Azure Bot を作成する場合は、App Service リソースを作成した後に、そのメッセージング エンドポイントを更新する必要があります。
プロジェクト構成設定を更新する
次の手順に従って、ボットの構成ファイルに ID 情報を追加します。
ファイルは、ボットの作成に使用するプログラミング言語によって異なります。
重要
Bot Framework SDK の Java バージョンでは、マルチテナント ボットのみがサポートされています。
C# バージョン、JavaScript バージョン、および Python バージョンでは、ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。
Language |
ファイル名 |
メモ |
C# |
appsettings.json |
ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。 |
JavaScript |
.env |
ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。 |
Java |
application.properties |
マルチテナント ボットのみをサポートします。 |
Python |
config.py |
ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。 |
追加する必要がある ID 情報は、ボットのアプリケーション タイプによって異なります。
構成ファイルで次の値を提供します。
C# ボット、JavaScript ボット、および Python ボットで使用できます。
プロパティ |
値 |
MicrosoftAppType |
UserAssignedMSI |
MicrosoftAppId |
ユーザー割り当てマネージド ID のクライアント ID |
MicrosoftAppPassword |
該当なし。 ユーザー割り当てマネージド ID ボットの場合は、この値を空白のままにします。 |
MicrosoftAppTenantId |
ユーザー割り当てマネージド ID のテナント ID。 |
C# ボット、JavaScript ボット、および Python ボットで使用できます。
プロパティ |
値 |
MicrosoftAppType |
SingleTenant |
MicrosoftAppId |
ボットのアプリ ID。 |
MicrosoftAppPassword |
ボットのアプリ パスワード。 |
MicrosoftAppTenantId |
ボットのアプリ テナント ID。 |
すべてのプログラミング言語 (C#、JavaScript、Java、Python) のボットで使用できます。
プロパティ |
値 |
MicrosoftAppType |
MultiTenant |
MicrosoftAppId |
ボットのアプリ ID。 |
MicrosoftAppPassword |
ボットのアプリ パスワード。 |
MicrosoftAppTenantId |
該当なし。 マルチテナント ボットの場合は、ここを空白のままにします。 |
プロジェクト ファイルを準備する
ボットをデプロイする前に、プロジェクト ファイルを準備します。
プロジェクトのルート フォルダーに切り替えます。 C# の場合、ルートは .csproj ファイルを含むフォルダーです。
リリース モードでクリーン リビルドを行います。
まだ az bot prepare-deploy
を実行していない場合は、ローカル ソース コード ディレクトリのルートに必要なファイルを追加するために実行します。
このコマンドを実行すると、ボット プロジェクトフォルダーに .deployment
ファイルが生成されます。
az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "<my-cs-proj>"
オプション |
説明 |
lang |
ボットの言語またはランタイム。 Csharp を使用してください。 |
code-dir |
生成されたデプロイ ファイルを配置するディレクトリ。 プロジェクトのルート フォルダーを使用します。 デフォルトは、現在のディレクトリです。 |
proj-file-path |
code-dir オプションを基準とした、ボットの .csproj ファイルへの相対パス。 |
プロジェクトのルート フォルダー内に、すべてのファイルとサブフォルダーを含む ZIP ファイルを作成します。
プロジェクトのルート フォルダーに切り替えます。
- JavaScript の場合、ルートは app.js または index.js ファイルが含まれるフォルダーです。
- TypeScript の場合は、ルートは src フォルダー (bot.ts および index.ts ファイルがある場所) が含まれるフォルダーです。
npm install
を実行します。
まだ az bot prepare-deploy
を実行していない場合は、ローカル ソース コード ディレクトリのルートに必要なファイルを追加するために実行します。
このコマンドを実行すると、 プロジェクトフォルダーに web.config
ファイルが生成されます。
Azure App Service では、各 Node.js ボットがプロジェクトのルート フォルダーに web.config ファイルを含める必要があります。
az bot prepare-deploy --lang <language> --code-dir "."
オプション |
説明 |
lang |
ボットの言語またはランタイム。 Javascript または Typescript を使用します。 |
code-dir |
生成されたデプロイ ファイルを配置するディレクトリ。 プロジェクトのルート フォルダーを使用します。 デフォルトは、現在のディレクトリです。 |
プロジェクトのルート フォルダー内に、すべてのファイルとサブフォルダーを含む ZIP ファイルを作成します。
プロジェクトのルート フォルダーに切り替えます。
プロジェクト ディレクトリで、コマンド ラインから次のコマンドを実行します。
mvn clean package
ヒント
Python ボットの場合、依存関係のインストールはサーバーで実行されます。
ARM テンプレートでは、依存関係を requirements.txt
ファイルに一覧表示する必要があります。
- 依存関係とパッケージ マネージャーを使用している場合:
- 依存関係リストを
requirements.txt
ファイルに変換する
app.py
が含まれているフォルダーを requirements.txt
に追加します。
- プロジェクトのルート フォルダー内に、すべてのファイルとサブフォルダーを含む ZIP ファイルを作成します。
ボットを Azure に公開する
この時点で、ボットのコードを App Service リソースに展開する準備ができました。
注意
この手順は完了するまでに数分かかることがあります。
また、デプロイが完了してからボットがテストできるようになるまでにさらに数分かかる場合もあります。
コマンド ラインから az webapp deploy
コマンドを実行して、App Service (Web アプリ) 用の Kudu の zip プッシュ展開を使用して展開を実行します。
オプション |
説明 |
resource-group |
ご利用のボットを含む Azure リソース グループの名前。 |
name |
前に使用した App Service の名前。 |
src |
作成して zip 圧縮したプロジェクト ファイルの絶対パスまたは相対パス。 |
プロジェクト ディレクトリで、コマンド ラインから次のコマンドを実行します。
mvn azure-webapp:deploy -Dgroupname="<resource-group-name>" -Dbotname="<name-of-web-app>"
オプション |
説明 |
Dgroupname |
ご利用のボットを含む Azure リソース グループの名前。 |
Dbotname |
前に使用した App Service の名前。 |
Web チャットでのテスト
- ブラウザーで Azure portal に移動します。
- ボット リソースに移動します。
- [Test in Web Chat]\(Web チャットでのテスト\) ウィンドウを開きます。
- 展開したボットと対話します。
ボット登録の詳細については、「ボットを Bot Service に登録する」を参照してください。
リソースをクリーンアップする
このアプリケーションを公開しない場合は、次の手順で、関連付けられているリソースを削除します。
- Azure portal で、ボットのリソース グループを開きます。
- [リソース グループの削除] を選択して、グループとそれに含まれるすべてのリソースを削除します。
- 確認ウィンドウでリソース グループ名を入力して、[削除] を選択します。
- シングルテナント アプリまたはマルチテナント アプリを作成した場合:
- [Microsoft Entra ID] ブレードに移動します。
- ボットに使用したアプリ登録を見つけて削除します。
その他のリソース
ボットをホストするために使用される Azure アプリケーションとリソースの詳細については、次の記事を参照してください。
Kudu ファイル
Web アプリ展開コマンドでは、Kudu を使用して C# ボット、JavaScript ボット、Python ボットを展開します。
構成されていない zip deploy API を使用してボットのコードを展開する場合、次のように動作します。
Kudu では、.zip ファイルから展開を実行する準備ができていること、および展開中に npm install、dotnet restore/dotnet publish などの追加ビルド ステップが不要であることを既定で想定しています。
ご自身のビルドされたコードを必要なすべての依存関係と共に、展開される zip ファイルに含めることが重要です。そうしないと、ボットは意図したとおりに動作しません。 詳細については、Azure のドキュメントで App Service にファイルをデプロイする方法を参照してください。
次のステップ