ボットをプロビジョニングして公開する

この記事の対象: 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 を使用して構築された既存のボットは引き続き機能します。

新しいボットの構築については、Power Virtual Agents の使用を検討し、適切なチャットボット ソリューションの選択についてお読みください。

詳細については、「The future of bot building」をご覧ください。

前提条件

  • Java ボットの場合は、Maven をインストールします。

  • このプロセスでは、2 つの Azure Resource Manager テンプレート (ARM テンプレート) を使用して、ボットのリソースを作成します。

    現在のテンプレートがない場合は、deploymentTemplates フォルダー (C#JavaScriptPython、または Java) のボット プロジェクトにコピーを作成します。

Azure CLI を使用してボットをプロビジョニングおよび発行するには、以下のものが必要です。

  • アクティブなサブスクリプションが含まれる Azure アカウント。 無料アカウントを作成します

  • Azure CLI のインストール」。

    プログラミング言語には、次のバージョンの Azure CLI を使用します。 一部の手順は、新しいバージョンの CLI では機能しません。

    Language CLI のバージョン
    C# および JavaScript 2.39.0 以降
    Python 2.36.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 のバージョン 4.15.0 に追加されました。 これらの種類のアプリは、他の言語、Bot Framework Composer、Bot Framework Emulator、または ngrok ではサポートされていません。

アプリの種類 サポート
ユーザー割り当てマネージド ID Azure AI Bot Service と C# SDK および JavaScript SDK
シングルテナント Azure AI Bot Service と C# SDK および JavaScript SDK
マルチテナント Azure AI Bot Service、すべての Bot Framework SDK 言語、Composer、Emulator、および ngrok

重要

Python ボットは、Windows サービスまたはボットを含むリソース グループにはデプロイできません。 ただし、複数の Python ボットを同じリソース グループに展開することはできます。 Azure AI サービスなどの他のサービスを別のリソース グループに作成します。

管理

ボットを展開する前に、必要な Azure リソースを作成 (または プロビジョニング) します。 一部の手順では、既存のリソースを使用することも、新しいリソースを作成することもできます。

作成する新しいリソースの名前と、使用する既存のリソースの名前を事前に決定しておくことをお勧めします。 ボットでは、これらの種類のリソースが使用されます。

  • ボットのプロビジョニング、公開、管理に使用する Azure サブスクリプション
  • 1 つまたは複数のリソース グループ
  • ユーザー割り当てマネージド ID または Microsoft Entra ID アプリ登録
  • App Service プラン リソース
  • App Service リソース
  • Azure Bot リソース

リソース間で使用される情報

Azure でリソースを作成すると、後の手順で必要になる ID、パスワード、およびその他の情報が Azure によって生成または要求されます。 次の表は、記録する必要があるリソース名、生成されるステップ、および使用されるステップの情報を示しています。

注意

これらの ID とパスワードの多くは機密情報です。 一般的なセキュリティ ガイドラインについては、「Bot Framework のセキュリティ ガイドライン」を参照してください。

情報 生成または検出される場所 使用場所
テナント ID サインインしてサブスクリプションを選択する Azure CLI を使用して App Service リソースを作成するAzure CLI を使用して Azure Bot リソースを作成または更新するプロジェクト構成設定を更新する
アプリの種類 ID リソースを作成する Azure CLI を使用して App Service リソースを作成するAzure CLI を使用して Azure Bot リソースを作成または更新するプロジェクト構成設定を更新する
クライアント ID ID リソースを作成する Azure CLI を使用して App Service リソースを作成するAzure CLI を使用して Azure Bot リソースを作成または更新するプロジェクト構成設定を更新する
ベース App Service URL Azure CLI を使用して App Service リソースを作成する Azure CLI を使用して Azure Bot リソースを作成または更新する
App Service の名前 Azure CLI を使用して App Service リソースを作成する ボットを Azure に公開する

サインインしてサブスクリプションを選択する

  1. コマンド ウィンドウを開きます。

  2. Azureにログインします。

    az login
    
    • ブラウザー ウィンドウが開きます。 サインイン プロセスを完了します。
    • 成功すると、アカウントがアクセスできるサブスクリプションの一覧が出力されます。
  3. 使用するサブスクリプションを設定するには、次のように実行します。

    az account set --subscription "<subscription>"
    

    <サブスクリプション>の場合は、使用するサブスクリプションの ID または名前を使用します。

  4. ユーザー割り当てマネージド ID またはシングルテナント ボットを作成する場合は、サブスクリプションの tenantId を記録します。 次の手順でテナント ID を使用します。

ヒント

パブリック クラウド以外で作業する必要がある場合は、「Azure CLI を使用した Azure クラウド管理」を参照してください。

リソース グループの作成

適切なリソース グループがまだない場合は、az group create コマンドを使用して、必要な新しいリソース グループを作成します。

az group create --name "<group>" --location "<region>"
オプション 説明
name 作成するリソース グループの名前。
location リソース グループを作成するリージョン。

詳細については、「Azure CLI を使用して Azure リソース グループを管理する方法」を参照してください。

ID リソースを作成する

  1. ユーザー割り当てマネージド ID を作成するには、az identity create コマンドを使用します。 成功すると、コマンドによって JSON 出力が生成されます。

    az identity create --resource-group "<group>" --name "<identity>"
    
    オプション 説明
    resource-group ID の作成場所となるリソース グループの名前。
    name 作成する ID リソースの名前。

    詳細については、az identity のリファレンスを参照してください。

  2. 後の手順で必要になる値を記録します。

    1. ID リソースのリソース グループ名
    2. ID リソースの名前
    3. コマンド出力の clientId

ARM テンプレートを使ってリソースを作成する

ボット用の App Service リソースと Azure Bot リソースを作成します。 どちらの手順でも、ARM テンプレートと az deployment group create Azure CLI コマンドを使用してリソースを作成します。

  1. ボット用の App Service リソースを作成します。 App Service は、新規または既存の App Service プラン内に含めることができます。

    詳細な手順については、「Azure CLI を使用して App Service を作成する」を参照してください。

  2. ボット用の Azure Bot リソースを作成する

    詳細な手順については、「Azure CLI を使用して Azure Bot を作成または更新する」を参照してください。

重要

これらの手順は、どちらの順序でも実行できます。 ただし、最初に Azure Bot を作成する場合は、App Service リソースを作成した後に、そのメッセージング エンドポイントを更新する必要があります。

プロジェクト構成設定を更新する

ボットの ID 情報

次の手順に従って、ボットの構成ファイルに ID 情報を追加します。 ファイルは、ボットの作成に使用するプログラミング言語によって異なります。

重要

Java バージョンと Python バージョンの Bot Framework SDK では、マルチテナント ボットのみがサポートされます。 C# バージョンと JavaScript バージョンでは、ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。

Language ファイル名 メモ
C# appsettings.json ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。
JavaScript .env ボットの ID を管理するための 3 種類のアプリケーションがすべてサポートされています。
Java アプリケーション プロパティ: マルチテナント ボットのみをサポートします。
Python config.py マルチテナント ボットのみをサポートします。 os.environ.get メソッド呼び出しの引数として ID プロパティを提供します。

追加する必要がある ID 情報は、ボットのアプリケーション タイプによって異なります。 構成ファイルで次の値を提供します。

Java と C# ボットでのみ使用できます。

プロパティ
MicrosoftAppType UserAssignedMSI
MicrosoftAppId ユーザー割り当てマネージド ID のクライアント ID
MicrosoftAppPassword 該当なし。 ユーザー割り当てマネージド ID ボットの場合は、この値を空白のままにします。
MicrosoftAppTenantId ユーザー割り当てマネージド ID のテナント ID。

プロジェクト ファイルを準備する

ボットをデプロイする前に、プロジェクト ファイルを準備します。

  1. プロジェクトのルート フォルダーに切り替えます。 C# の場合、ルートは .csproj ファイルを含むフォルダーです。

  2. リリース モードでクリーン リビルドを行います。

  3. まだ 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 ファイルへの相対パス。
  4. プロジェクトのルート フォルダー内に、すべてのファイルとサブフォルダーを含む ZIP ファイルを作成します。

ボットを Azure に公開する

この時点で、ボットのコードを App Service リソースに展開する準備ができました。

Note

この手順は完了するまでに数分かかることがあります。 また、デプロイが完了してからボットがテストできるようになるまでにさらに数分かかる場合もあります。

コマンドラインから次のコマンドを実行して、App Service (Web アプリ) 用の Kudu の zip プッシュ展開を使用して展開を実行します。

az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-app-service>" --src "<project-zip-path>"
オプション 説明
resource-group ご利用のボットを含む Azure リソース グループの名前。
name 前に使用した App Service の名前。
src 作成して zip 圧縮したプロジェクト ファイルの絶対パスまたは相対パス。

ヒント

既定では、このコマンドは運用スロットに展開します。 別のスロットを指定するには、オプションの --slot パラメーターを使用します。 詳細については、az webapp deployment source config-zip コマンド リファレンスを参照してください。

Web チャットでのテスト

  1. ブラウザーで Azure portal に移動します。
  2. ボット リソースに移動します。
  3. [Test in Web Chat]\(Web チャットでのテスト\) ウィンドウを開きます。
  4. 展開したボットと対話します。

ボット登録の詳細については、「ボットを Bot Service に登録する」を参照してください。

リソースをクリーンアップする

このアプリケーションを公開しない場合は、次の手順で、関連付けられているリソースを削除します。

  1. Azure portal で、ボットのリソース グループを開きます。
    1. [リソース グループの削除] を選択して、グループとそれに含まれるすべてのリソースを削除します。
    2. 確認ウィンドウでリソース グループ名を入力して、[削除] を選択します。
  2. シングルテナント アプリまたはマルチテナント アプリを作成した場合:
    1. [Microsoft Entra ID] ブレードに移動します。
    2. ボットに使用したアプリ登録を見つけて削除します。

その他のリソース

ボットをホストするために使用される Azure アプリケーションとリソースの詳細については、次の記事を参照してください。

情報カテゴリ 記事
Azure CLI Azure CLI とは
Azure サブスクリプション管理 Azure CLI を使用して Azure サブスクリプションを管理する方法
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 にファイルをデプロイする方法を参照してください。

次のステップ