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

適用対象: SDK v4

この記事では、Azure CLI を使用してボットのリソースを作成し、デプロイ用にボットを準備し、ボットを Azure にデプロイする方法について説明します。

この記事では、ボットをデプロイする準備ができていることを前提としています。 単純なエコー ボットを作成する方法については、「 Bot Framework SDK を使用してボットを作成する」を参照してください。 Bot Framework サンプル リポジトリで提供されているサンプルのいずれかを使用することもできます。

ヒント

この記事では、ボット用の Azure Bot リソースを作成します。 Web App Bot リソースまたは Bot Channels Registration リソースを使用する既存のボットは引き続き機能しますが、これらのリソースの種類を使用する新しいボットを作成することはできません。

注意

Bot Framework JavaScript と C# SDK は引き続きサポートされますが、Python SDK と Java SDK は、2023 年 11 月に終了する最終的な長期サポートで廃止されます。 このリポジトリ内の重要なセキュリティとバグの修正のみが行われます。

これらの SDK で構築された既存のボットは引き続き機能します。

新しいボット構築の場合は、 Power Virtual Agents の 使用を検討し、 適切なチャットボット ソリューションの選択に関する記事を参照してください。

詳細については、「 ボット構築の未来」を参照してください。

前提条件

  • 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

注意

ボットでストレージ サービスや言語サービスなどの追加のリソースを使用する場合は、これらを個別にデプロイする必要があります。

デプロイを計画する

開始する前に、これらの決定を行います。

決定 Notes
Azure でボット リソースの ID を管理する方法 ユーザー割り当てマネージド ID、シングルテナント アプリ登録、またはマルチテナント アプリ登録を使用できます。 詳細については、「 ID リソースを作成する」を参照してください。
ボット リソースを作成するリソース グループまたはリソース グループ このプロセスを理解するまでは、1 つのリソース グループを使用することをお勧めします。 詳細については、「 Azure リソースの管理」を参照してください。
ボットがリージョングローバル リージョン ボットの詳細については、「Azure AI Bot Serviceの地域化」を参照してください。

ボット ID は、いくつかの異なる方法で Azure で管理できます。

  • ボットの資格情報を自分で管理する必要がないように、 ユーザー割り当てマネージド ID として。
  • シングルテナント アプリとして。
  • マルチテナント アプリとして。

ユーザー割り当てマネージド ID とシングルテナント アプリの種類のサポートが、バージョン 4.15.0 の Bot Framework SDK for C# と JavaScript に追加されました。 これらのアプリの種類は、他の言語やBot Framework Composer、Bot Framework Emulator、ngrok ではサポートされていません。

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

重要

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

Azure リソース

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

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

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

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

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

注意事項

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

Information 生成または検出された場所 使用する場所
テナント 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 リソースを作成または更新するプロジェクト構成設定を更新する
ベース アプリ サービスの 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 リソース グループを作成するリージョン。

ヒント

現在、リージョン化されたボットはヨーロッパでのみ使用できます。 地域化されたボットの場合は、場所に "westeurope" を使用します。

詳細については、「 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 reference を 参照してください。

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

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

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

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

  1. ボットのApp Service リソースを作成します。 App Service は、新規または既存のApp Service プラン内に配置できます。

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

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

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

重要

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

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

ボット ID 情報

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

重要

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

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

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

C# および JavaScript ボットでのみ使用できます。

プロパティ
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 オプションに対する相対的な、ボットの .csproj ファイルへの code-dir パス。
  4. プロジェクトのルート フォルダー内に、すべてのファイルとサブフォルダーを含む zip ファイルを作成します。

ボットを Azure に公開する

この時点で、ボットのコードを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 前に使用したアプリ サービスの名前。
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. [Azure Active Directory] ブレードに移動します。
    2. ボットに使用したアプリ登録を見つけて削除します。

その他のリソース

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

サブジェクト [アーティクル]
Azure CLI Azure CLI とは
Azure サブスクリプション管理 Azure CLI を使用して Azure サブスクリプションを管理する方法
Azure Azure リージョン リージョンと可用性ゾーン
リソース グループとリソース管理 Azure リソースを管理する
マネージド ID Azure リソースのマネージド ID とは
単一テナント アプリとマルチテナント アプリ Azure Active Directory のテナント
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 デプロイ API を使用してボットのコードをデプロイする場合、動作は次のようになります。

Kudu では、既定では、.zip ファイルからのデプロイを実行する準備が整っており、デプロイ中に npm のインストールや dotnet restore/dotnet publish などの追加のビルド手順は必要ないと想定しています。

ビルドされたコードと、デプロイされる zip ファイルに必要なすべての依存関係を含める必要があります。そうしないと、ボットは意図したとおりに機能しません。 詳細については、App Serviceにファイルをデプロイする方法に関する Azure ドキュメントを参照してください。

次のステップ