ボットをプロビジョニングして公開する
この記事の対象: SDK v4
この記事では、Azure CLI を使用してボットのリソースを作成し、展開用にボットを準備して、ボットを Azure に展開する方法について説明します。
この記事では、ボットをデプロイする準備ができていることを前提としています。 単純なエコー ボットを作成する方法については、「Bot Framework SDK を使用してボットを作成する」を参照してください。 また、Bot Framework サンプル リポジトリに用意されているサンプルのいずれかを使用することもできます。
ヒント
この記事では、ボット用の Azure Bot リソースを作成します。 Web App Bot リソースまたは Bot Channels Registration リソースを使用する既存のボットは引き続き機能しますが、これらの種類のリソースを使用する新しいボットを作成することはできません。
Note
Bot Framework JavaScript SDK、C#、Python SDK は引き続きサポートされますが、Java SDK については、最終的な長期サポートは 2023 年 11 月に終了する予定です。
Java SDK を使用して構築された既存のボットは引き続き機能します。
新しいボットを構築する場合は、Microsoft Copilot Studio の使用をご検討ください。また、適切なコパイロット ソリューションの選択に関する記事もお読みください。
詳細については、「The future of bot building」をご覧ください。
前提条件
Java ボットの場合は、Maven をインストールします。
このプロセスでは、2 つの Azure Resource Manager テンプレート (ARM テンプレート) を使用して、ボットのリソースを作成します。
現在のテンプレートがない場合は、deploymentTemplates フォルダー (C#、JavaScript、Python、または Java) のボット プロジェクトにコピーを作成します。
Azure CLI を使用してボットをプロビジョニングおよび発行するには、以下のものが必要です。
アクティブなサブスクリプションが含まれる Azure アカウント。 無料アカウントを作成します。
-
プログラミング言語には、次のバージョンの Azure CLI を使用します。 一部の手順は、新しいバージョンの CLI では機能しません。
Language CLI のバージョン C# および JavaScript 2.39.0 以降 Python 2.55.0 またはそれ以降 Java 2.29.2
Note
ボットでストレージ サービスや言語サービスなどの追加のリソースを使用する場合は、これらを個別に展開する必要があります。
デプロイを計画する
開始する前に、次のことを決定します。
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 によって生成または要求されます。 次の表は、記録する必要があるリソース名、生成されるステップ、および使用されるステップの情報を示しています。
注意事項
これらの ID とパスワードの多くは機密情報です。 一般的なセキュリティ ガイドラインについては、「Bot Framework のセキュリティ ガイドライン」を参照してください。
サインインしてサブスクリプションを選択する
コマンド ウィンドウを開きます。
Azure にサインインします。
az login
- ブラウザー ウィンドウが開きます。 サインイン プロセスを完了します。
- 成功すると、アカウントがアクセスできるサブスクリプションの一覧が出力されます。
使用するサブスクリプションを設定するには、次のように実行します。
az account set --subscription "<subscription>"
<サブスクリプション>の場合は、使用するサブスクリプションの ID または名前を使用します。
ユーザー割り当てマネージド ID またはシングルテナント ボットを作成する場合は、サブスクリプションの
tenantId
を記録します。 次の手順でテナント ID を使用します。
ヒント
パブリック クラウド以外で作業する必要がある場合は、「Azure CLI を使用した Azure クラウド管理」を参照してください。
リソース グループを作成する
適切なリソース グループがまだない場合は、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
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 情報
次の手順に従って、ボットの構成ファイルに 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# の場合、ルートは .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 ファイルを作成します。
ボットを Azure に公開する
この時点で、ボットのコードを App Service リソースに展開する準備ができました。
Note
この手順は完了するまでに数分かかることがあります。 また、デプロイが完了してからボットがテストできるようになるまでにさらに数分かかる場合もあります。
コマンド ラインから az webapp deploy
コマンドを実行して、App Service (Web アプリ) 用の Kudu の zip プッシュ展開を使用して展開を実行します。
オプション | 説明 |
---|---|
resource-group | ご利用のボットを含む Azure リソース グループの名前。 |
name | 前に使用した App Service の名前。 |
src | 作成して zip 圧縮したプロジェクト ファイルの絶対パスまたは相対パス。 |
ヒント
既定では、このコマンドは運用スロットに展開します。 別のスロットを指定するには、オプションの --slot
パラメーターを使用します。
詳細については、az webapp deploy
コマンドのリファレンス ドキュメントを参照してください。
Web チャットでのテスト
- ブラウザーで Azure portal に移動します。
- ボット リソースに移動します。
- [Test in Web Chat]\(Web チャットでのテスト\) ウィンドウを開きます。
- 展開したボットと対話します。
ボット登録の詳細については、「ボットを Bot Service に登録する」を参照してください。
リソースをクリーンアップする
このアプリケーションを公開しない場合は、次の手順で、関連付けられているリソースを削除します。
- Azure portal で、ボットのリソース グループを開きます。
- [リソース グループの削除] を選択して、グループとそれに含まれるすべてのリソースを削除します。
- 確認ウィンドウでリソース グループ名を入力して、[削除] を選択します。
- シングルテナント アプリまたはマルチテナント アプリを作成した場合:
- [Microsoft Entra ID] ブレードに移動します。
- ボットに使用したアプリ登録を見つけて削除します。
その他のリソース
ボットをホストするために使用される Azure アプリケーションとリソースの詳細については、次の記事を参照してください。
サブジェクト | [アーティクル] |
---|---|
Azure CLI | Azure CLI とは |
Azure サブスクリプション管理 | Azure CLI を使用して Azure サブスクリプションを管理する方法 |
Azure リージョン | リージョンと可用性ゾーン |
リソース グループとリソース管理 | Azure のリソースを管理する |
マネージド ID | Azure リソースのマネージド ID とは |
単一テナント アプリとマルチテナント アプリ | Microsoft Entra ID のテナント |
Web アプリケーション | App Service |
Web アプリケーションのコンピューティング リソース | App Service プラン |
Azure Resource Manager テンプレート (ARM テンプレート) | ARM テンプレートとは および Azure CLI で Azure Resource Manager (ARM) のデプロイ テンプレートを使用する方法 |
Azure の請求 | 請求とコスト管理 |
Kudu ファイル
Web アプリ展開コマンドでは、Kudu を使用して C# ボット、JavaScript ボット、Python ボットを展開します。 構成されていない zip deploy API を使用してボットのコードを展開する場合、次のように動作します。
Kudu では、.zip ファイルから展開を実行する準備ができていること、および展開中に npm install、dotnet restore/dotnet publish などの追加ビルド ステップが不要であることを既定で想定しています。
ご自身のビルドされたコードを必要なすべての依存関係と共に、展開される zip ファイルに含めることが重要です。そうしないと、ボットは意図したとおりに動作しません。 詳細については、Azure のドキュメントで App Service にファイルをデプロイする方法を参照してください。