布建和發佈 Bot

適用於: SDK v4

本文說明如何使用 Azure CLI 來建立 Bot 的資源、準備 Bot 以進行部署,以及將 Bot 部署至 Azure。

本文假設您已準備好部署 Bot。 如需如何建立簡單回應 Bot 的資訊,請參閱 使用 Bot Framework SDK 建立 Bot。 您也可以使用 Bot Framework 範例存放庫中提供的其中一個範例。

提示

本文會為您的 Bot 建立 Azure Bot 資源。 使用 Web 應用程式 Bot 資源或 Bot 通道註冊資源的現有 Bot 將會繼續運作,但您無法建立使用這些資源類型的新 Bot。

注意

Bot Framework JavaScript、C# 和 Python SDK 將會繼續受到支援,不過,Java SDK 即將淘汰,最終長期支援將於 2023 年 11 月結束。 只會執行此存放庫中的重要安全性和錯誤修正。

使用 Java SDK 建置的現有 Bot 將繼續運作。

針對新的 Bot 建置,請考慮使用 Power Virtual Agents ,並閱讀 選擇正確的聊天機器人解決方案

如需詳細資訊,請參閱 Bot 建置的未來。

必要條件

  • 若為 Java Bot,請安裝 Maven

  • 此程式會使用兩個 Azure Resource Manager 範本(ARM 範本)為您的 Bot 建立資源。

    如果您沒有目前的範本,請在 deploymentTemplates 資料夾的 Bot 專案中建立複本:C#JavaScriptPythonJava

若要使用 Azure CLI 來布建和發佈 Bot,您需要:

  • 具有作用中訂用帳戶的 Azure 帳戶。 建立免費帳戶

  • Azure CLI 的安裝。

    針對您的程式設計語言,請使用下列版本的 Azure CLI。 某些步驟不適用於較新版本的 CLI。

    語言 CLI 版本
    C# 和 JavaScript 2.39.0 或更新版本
    Python 2.36.0
    Java 2.29.2

注意

如果您的 Bot 使用其他資源,例如記憶體服務或語言服務,則必須個別部署這些資源。

規劃您的部署

開始之前,請先做出這些決策。

Decision 備註
如何在 Azure 中管理 Bot 資源的身分識別 您可以使用使用者指派的受控識別、單一租使用者應用程式註冊,或 Mutli 租使用者應用程式註冊。 如需詳細資訊,請參閱 建立身分識別資源
您將在其中建立 Bot 資源的資源群組或資源群組 在您熟悉此程式之前,建議您使用一個資源群組。 如需詳細資訊,請參閱 管理 Azure 資源
您的 Bot 是 區域性 還是 全球 如需區域 Bot 的相關信息,請參閱 Azure AI Bot Service 中的區域化。

您的 Bot 身分識別可以透過數種不同的方式在 Azure 中管理。

  • 身為 使用者指派的受控識別,因此您不需要自行管理 Bot 的認證。
  • 作為單一 用戶應用程式。
  • 作為多租用戶應用程式。

在 4.15.0 版中,已將使用者指派的受控識別和單一租使用者應用程式類型的支援新增至適用於 C# 和 JavaScript 的 Bot Framework SDK。 其他語言或 Bot Framework Composer、Bot Framework Emulator 或 ngrok 不支援這些應用程式類型。

應用程式類型 支援
使用者指派的受控識別 Azure AI Bot Service 和 C# 和 JavaScript SDK
單一租使用者 Azure AI Bot Service 和 C# 和 JavaScript SDK
多租用戶 Azure AI Bot Service、所有 Bot Framework SDK 語言、Composer、模擬器和 ngrok

重要

Python Bot 無法部署到包含 Windows 服務或 Bot 的資源群組。 不過,多個 Python Bot 可以部署到相同的資源群組。 在不同的資源群組中建立其他服務,例如 Azure AI 服務。

Azure 資源

您必須先建立 Azure 資源,才能部署 Bot。 針對某些步驟,您可以使用現有的資源或建立新的資源。

您可能會發現,事先決定您將建立的新資源名稱,以及您將使用的現有資源名稱會很有説明。 您的 Bot 會使用這些類型的資源。

  • 您將用來布建、發佈和管理 Bot 的 Azure 訂用帳戶
  • 一或多個資源群組
  • 使用者指派的受控識別 Microsoft Entra ID 應用程式註冊
  • App Service 方案資源
  • App Service 資源
  • Azure Bot 資源

跨資源使用的資訊

當您在 Azure 中建立資源時,Azure 會產生或要求標識碼、密碼,以及稍後步驟中所需的其他資訊。 下表列出您需要記錄的資源名稱以外的信息、產生的步驟,以及所使用的步驟。

警告

其中許多標識碼和密碼都是敏感性資訊。 如需常見安全性指導方針的相關信息,請參閱 Bot Framework 安全性指導方針

資訊 產生或找到的位置 使用的位置
租用戶識別碼 登入並選取訂用帳戶 使用 Azure CLI 建立 App Service 資源、使用 Azure CLI 建立或更新 Azure Bot 資源更新專案組態設定
應用程式類型 建立身分識別資源 使用 Azure CLI 建立 App Service 資源、使用 Azure CLI 建立或更新 Azure Bot 資源更新專案組態設定
Client ID 建立身分識別資源 使用 Azure CLI 建立 App Service 資源、使用 Azure CLI 建立或更新 Azure Bot 資源更新專案組態設定
基底應用程式服務URL 使用 Azure CLI 建立 App Service 資源 使用 Azure CLI 建立或更新 Azure Bot 資源
App Service 名稱 使用 Azure CLI 建立 App Service 資源 將 Bot 發佈至 Azure

登入並選取訂用帳戶

  1. 開啟命令視窗。

  2. 登入Azure。

    az login
    
    • 瀏覽器視窗隨即開啟。 完成登入程式。
    • 成功時,命令會輸出您的帳戶可存取的訂用帳戶清單。
  3. 若要設定要使用的訂用帳戶,請執行:

    az account set --subscription "<subscription>"
    

    針對 <訂用帳戶>,請使用要使用的訂用帳戶標識碼或名稱。

  4. 如果您要建立使用者指派的受控識別或單一租使用者 Bot,請記錄 tenantId 訂用帳戶的 。 您將在下列步驟中使用租用戶標識碼。

提示

如果您需要在非公用雲端中工作,請參閱 使用 Azure CLI 的 Azure 雲端管理。

建立資源群組

如果您還沒有適當的資源群組,請使用 az group create 命令來建立您需要的新資源群組。

az group create --name "<group>" --location "<region>"
選項 描述
NAME 要建立的資源群組名稱。
location 要在其中建立資源群組的區域。

如需詳細資訊,請參閱 如何使用 Azure CLI 管理 Azure 資源群組。

建立身分識別資源

  1. 若要建立使用者指派的受控識別,請使用 az identity create 命令。 成功時,命令會產生 JSON 輸出。

    az identity create --resource-group "<group>" --name "<identity>"
    
    選項 描述
    資源群組 要在其中建立身分識別的資源群組名稱。
    NAME 要建立的識別資源名稱。

    如需詳細資訊,請參閱 az identity 參考。

  2. 在後續步驟中,您將需要記錄值。

    1. 識別資源的資源組名
    2. 身分識別資源的名稱
    3. clientId來自命令輸出的

使用 ARM 範本建立資源

為您的 Bot 建立 App Service 和 Azure Bot 資源。 這兩個步驟都使用ARM範本和 az deployment group create Azure CLI 命令來建立資源或資源。

  1. 為您的 Bot 建立 App Service 資源。 App Service 可以位於新的或現有的 App Service 方案中。

    如需詳細步驟,請參閱 使用 Azure CLI 建立 App Service

  2. 為您的 Bot 建立 Azure Bot 資源。

    如需詳細步驟,請參閱 使用 Azure CLI 來建立或更新 Azure Bot

重要

您可以依任一順序執行這些步驟。 不過,如果您先建立 Azure Bot,您必須在建立 App Service 資源之後更新其傳訊端點。

更新項目組態設定

Bot 身分識別資訊

請遵循下列步驟,將身分識別資訊新增至 Bot 的組態檔。 檔案會根據您用來建立 Bot 的程式設計語言而有所不同。

重要

Bot Framework SDK 的 Java 和 Python 版本僅支援多租使用者 Bot。 C# 和 JavaScript 版本支援這三種應用程式類型來管理 Bot 的身分識別。

語言 File name 備註
C# appsettings.json 支援這三種應用程式類型來管理 Bot 的身分識別。
JavaScript .env 支援這三種應用程式類型來管理 Bot 的身分識別。
Java application.properties 僅支援多租使用者 Bot。
Python config.py 僅支援多租使用者 Bot。 提供識別屬性做為方法呼叫的 os.environ.get 自變數。

您需要新增的身分識別資訊取決於 Bot 的應用程式類型。 在您的組態檔中提供下列值。

僅適用於 C# 和 JavaScript Bot。

屬性
MicrosoftAppType UserAssignedMSI
MicrosoftAppId 使用者指派受控識別的用戶端標識碼。
MicrosoftAppPassword 不適用。 針對使用者指派的受控識別 Bot,將此保留空白。
MicrosoftAppTenantId 使用者指派受控識別的租用戶標識碼。

準備項目檔

在部署 Bot 之前,請先準備您的項目檔。

  1. 切換至專案的根資料夾。 對於 C#,根目錄是包含 .csproj 檔案的資料夾。

  2. 在發行模式執行全新重建。

  3. 如果您之前尚未這麼做,請執行 az bot prepare-deploy 以將必要的檔案新增至本機原始程式碼目錄的根目錄。 此命令會在 .deployment Bot 專案資料夾中產生檔案。

    az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "<my-cs-proj>"
    
    選項 描述
    Bot 的語言或運行時間。 使用 Csharp
    code-dir 要放置所產生部署檔案的目錄。 使用專案的根資料夾。 預設值為目前目錄。
    proj-file-path Bot 的 .csproj 檔案路徑,相對於 code-dir 選項。
  4. 在專案的根資料夾中,建立包含所有檔案和子資料夾的 zip 檔案。

將您的 Bot 發佈到 Azure

此時,您已準備好將 Bot 的程式代碼部署到 App Service 資源。

注意

此步驟可能需要幾分鐘的時間才能完成。 此外,部署完成和 Bot 可供測試時,可能需要幾分鐘的時間。

從命令行執行下列命令,以使用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>"
選項 描述
資源群組 包含 Bot 的 Azure 資源群組名稱。
NAME 您稍早使用之 App Service 的名稱。
src 您所建立之壓縮項目檔的絕對或相對路徑。

提示

根據預設,此命令會部署到生產位置。 使用選擇性 --slot 參數來指定不同的位置。 如需詳細資訊,請參閱 az webapp deployment source config-zip 命令參考。

在網路聊天中測試

  1. 在您的瀏覽器中,流覽至 Azure 入口網站
  2. 移至您的 Bot 資源。
  3. [網路聊天] 窗格中開啟 [測試]。
  4. 與已部署的 Bot 互動。

如需 Bot 註冊的詳細資訊,請參閱 向 Bot Service 註冊 Bot。

清除資源

如果您不打算發布此應用程式,請使用下列步驟刪除相關聯的資源:

  1. 在 Azure 入口網站 中,開啟 Bot 的資源群組。
    1. 選取 [ 刪除資源群組 ] 以刪除群組及其包含的所有資源。
    2. 確認窗格中輸入資源組名 ,然後選取 [ 刪除]。
  2. 如果您已建立單一租使用者或多租使用者應用程式:
    1. 移至 [Microsoft Entra ID] 刀鋒視窗。
    2. 找出您用於 Bot 的應用程式註冊,並加以刪除。

其他資源

如需用來裝載 Bot 之 Azure 應用程式和資源的詳細資訊,請參閱這些文章。

主旨 發行項
Azure CLI 什麼是 Azure CLI?
Azure 訂用帳戶管理 如何使用 Azure CLI 管理 Azure 訂用帳戶
Azure 區域 地區與可用性區域
資源群組和資源管理 管理 Azure 資源
受控識別 什麼是 Azure 資源受控識別?
單一租用戶與多租用戶應用程式 Microsoft Entra 識別碼中的租用
Web 應用程式 應用程式服務
Web 應用程式的計算資源 App Service 方案
Azure Resource Manager 範本 (ARM 範本) 什麼是 ARM 範本? 以及如何 搭配 Azure CLI 使用 Azure Resource Manager (ARM) 部署範本
Azure 計費 計費和成本管理

Kudu 檔案

Web 應用程式部署命令會使用 Kudu 來部署 C#、JavaScript 和 Python Bot。 使用未設定 的 zip 部署 API 來部署 Bot 的程式代碼時,行為如下所示:

Kudu 預設會假設從 .zip 檔案部署已準備好執行,而且部署期間不需要額外的建置步驟,例如 npm 安裝或 dotnet restore/dotnet publish。

請務必在所部署的 zip 檔案中包含內建程式代碼與所有必要的相依性;否則,您的 Bot 將無法如預期般運作。 如需詳細資訊,請參閱關於如何將 檔案部署至 App Service 的 Azure 檔。

下一步