設定 Node.js Bot 以進行擴充功能

從 2023 年 9 月 1 日起,強烈建議採用 Azure 服務標籤 方法來隔離網路。 DL-ASE 的使用率應僅限於高度特定的案例。 在生產環境中實作此解決方案之前,建議您諮詢您的支援小組以取得指引。

適用于: SDK v4

本文說明如何更新 Node.js Bot 以使用具名管道,以及如何在裝載 Bot 的 Azure App 服務 資源中啟用 Direct Line App Service 擴充功能。

必要條件

  • Azure 帳戶。 如果您還沒有帳戶,請在開始之前建立 免費帳戶
  • 部署在 Azure 中的 Node.js Bot。
  • 適用于 Node.js、4.7 或更新版本的 Bot Framework SDK。

啟用 Direct Line App Service 擴充功能

本節說明如何從 Bot 的 Direct Line 通道組態使用 App Service 擴充功能金鑰來啟用 Direct Line App Service 擴充功能。

更新 Bot 程式碼

若要允許您的應用程式使用 Direct Line App Service 擴充功能具名管道

  1. 編輯 Bot 的 index.js 檔案。

    1. 找出您建立 Bot 配接器的行。

    2. 建立配接器之後,新增下列語句,這會從環境提取 App Service 名稱,並指示配接器連線到適當的具名管道。

      • 如果您的 Bot 使用 CloudAdapter (建議):

        adapter.connectNamedPipe(
            process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline',
            async (context) => {
                await myBot.run(context);
            },
            process.env.MicrosoftAppId,
            AuthenticationConstants.ToChannelFromBotOAuthScope);
        
      • 如果您的 Bot 使用已被取代的 BotFrameworkAdapter

        adapter.useNamedPipe(async (context) => {
            await myBot.run(context);
            },
            process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline'
        );
        
    3. 儲存您的變更。

  2. 編輯 Bot 的 web.config 檔案,將 Direct Line App Service 延伸模組所需的處理常式和規則新增 AspNetCore 至服務要求。

    1. 編輯 Bot 的 web.config 檔案。

    2. webSocket 標記的 enabled 屬性變更為 true

      <webSocket enabled="true" />
      
    3. 在 區 <handlers> 段中,新增下列處理常式的註冊。

      <add name="aspNetCore" path="*/.bot/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      
    4. 在 區 <rewrite> 段中,將下列規則新增至規則清單。

      <!-- Do not interfere with Direct Line App Service extension requests. (This rule should be as high in the rules section as possible to avoid conflicts.) -->
      <rule name ="DLASE" stopProcessing="true">
        <conditions>
          <add input="{REQUEST_URI}" pattern="^/.bot"/>
        </conditions>
      </rule>
      
    5. 儲存您的變更。

  3. 將更新的 Bot 重新部署至 Azure。

啟用 Bot Direct Line App Service 擴充功能

  1. 在Azure 入口網站中,移至您的 Azure Bot 資源。

    1. [設定 選取 [通道 ] 以設定 Bot 接受訊息的來源通道。
    2. 如果尚未啟用,請從 [可用的通道] 清單中 選取 [Direct Line 通道 ],以啟用通道。
    3. 啟用 Direct Line 之後,請從 [通道 ] 頁面再次選取它。
    4. 選取 [App Service 擴充功能 ] 索引標籤。
    5. [App Service 擴充功能金鑰 ] 底下,選取對應金鑰旁的眼睛圖示。
  2. 移至首頁,然後選取 頁面頂端的 [應用程式服務 ]。 或者,顯示入口網站功能表,然後選取 [應用程式服務] 功能表項目。 Azure 會顯示 [應用程式服務 ] 頁面。

  3. 在搜尋方塊中,輸入您的 Azure Bot 資源名稱。 您的資源將會列出。

    請注意,如果您將滑鼠停留在圖示或功能表項目上,就會取得上次檢視的資源清單。 您的 Azure Bot 資源可能會列出。

  4. 選取您的資源連結。

    1. [設定] 區段中,選取 [ 組態 ] 功能表項目。

    2. 在右側面板中,新增下列設定:

      名稱
      DirectLineExtensionKey 您稍早複製的 App Service 延伸模組金鑰值。
      DIRECTLINE_EXTENSION_VERSION latest
    3. 如果您的 Bot 裝載于主權或受限制的 Azure 雲端,而您無法透過 公用入口網站 存取 Azure,您也必須新增下列設定:

      名稱
      DirectLineExtensionABSEndpoint Bot 裝載于 Azure 雲端專屬的端點。 例如,針對 USGov 雲端,端點為 https://directline.botframework.azure.us/v3/extension
    4. 從 [ 組態] 區段內,選取 [ 一般 設定] 區段並開啟 [Web 通訊端 ]。

    5. 選取 [ 儲存 ] 以儲存設定。 這會重新開機Azure App 服務。

確認 Direct Line 延伸模組和 Bot 已設定

在瀏覽器中,前往 https://<your_app_service>.azurewebsites.net/.bot。 如果一切正確,頁面會傳回下列 JSON 內容:

    {"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
  • v 顯示 Direct Line App Service 延伸模組的組建版本。
  • k 表示延伸模組是否能夠從其組態讀取延伸模組金鑰。
  • 初始化 表示延伸模組是否能夠從 Azure AI Bot Service 下載 Bot 中繼資料。
  • ib 指出延伸模組是否能夠建立 Bot 的輸入連線。
  • ob 指出延伸模組是否能夠從 Bot 建立輸出連線。

疑難排解

  • 如果 .bot 端點 顯示的 ib ob 值是 false,Bot 和 Direct Line App Service 擴充功能就無法彼此連線。

    1. 請仔細檢查使用具名管道的程式碼已新增至 Bot。
    2. 確認 Bot 能夠啟動並執行。 實用的工具是在 WebChat 中測試、連接其他通道、遠端偵錯或記錄。
    3. 重新開機 Bot 裝載于內的整個 Azure App 服務 ,以確保清除所有進程的啟動。
  • 如果 .bot 端點 初始化 值為 false,Direct Line App Service 擴充功能就無法驗證新增至上述 Bot 應用程式設定 App Service 擴充功能金鑰。

    1. 確認已正確輸入值。
    2. 切換至 Bot 的 [設定直接線路 ] 頁面上顯示的替代擴充金鑰。

下一步