設定 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 擴充功能具名管道 :
編輯 Bot 的
index.js
檔案。找出您建立 Bot 配接器的行。
建立配接器之後,新增下列語句,這會從環境提取 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' );
儲存您的變更。
編輯 Bot 的
web.config
檔案,將 Direct Line App Service 延伸模組所需的處理常式和規則新增AspNetCore
至服務要求。編輯 Bot 的
web.config
檔案。將
webSocket
標記的enabled
屬性變更為true
。<webSocket enabled="true" />
在 區
<handlers>
段中,新增下列處理常式的註冊。<add name="aspNetCore" path="*/.bot/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
在 區
<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>
儲存您的變更。
將更新的 Bot 重新部署至 Azure。
啟用 Bot Direct Line App Service 擴充功能
在Azure 入口網站中,移至您的 Azure Bot 資源。
- 在 [設定 選取 [通道 ] 以設定 Bot 接受訊息的來源通道。
- 如果尚未啟用,請從 [可用的通道] 清單中 選取 [Direct Line 通道 ],以啟用通道。
- 啟用 Direct Line 之後,請從 [通道 ] 頁面再次選取它。
- 選取 [App Service 擴充功能 ] 索引標籤。
- 在 [App Service 擴充功能金鑰 ] 底下,選取對應金鑰旁的眼睛圖示。
移至首頁,然後選取 頁面頂端的 [應用程式服務 ]。 或者,顯示入口網站功能表,然後選取 [應用程式服務] 功能表項目。 Azure 會顯示 [應用程式服務 ] 頁面。
在搜尋方塊中,輸入您的 Azure Bot 資源名稱。 您的資源將會列出。
請注意,如果您將滑鼠停留在圖示或功能表項目上,就會取得上次檢視的資源清單。 您的 Azure Bot 資源可能會列出。
選取您的資源連結。
在 [設定] 區段中,選取 [ 組態 ] 功能表項目。
在右側面板中,新增下列設定:
名稱 值 DirectLineExtensionKey 您稍早複製的 App Service 延伸模組金鑰值。 DIRECTLINE_EXTENSION_VERSION latest 如果您的 Bot 裝載于主權或受限制的 Azure 雲端,而您無法透過 公用入口網站 存取 Azure,您也必須新增下列設定:
名稱 值 DirectLineExtensionABSEndpoint Bot 裝載于 Azure 雲端專屬的端點。 例如,針對 USGov 雲端,端點為 https://directline.botframework.azure.us/v3/extension
。從 [ 組態] 區段內,選取 [ 一般 設定] 區段並開啟 [Web 通訊端 ]。
選取 [ 儲存 ] 以儲存設定。 這會重新開機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 擴充功能就無法彼此連線。
- 請仔細檢查使用具名管道的程式碼已新增至 Bot。
- 確認 Bot 能夠啟動並執行。 實用的工具是在 WebChat 中測試、連接其他通道、遠端偵錯或記錄。
- 重新開機 Bot 裝載于內的整個 Azure App 服務 ,以確保清除所有進程的啟動。
如果 .bot 端點 的 初始化 值為 false,Direct Line App Service 擴充功能就無法驗證新增至上述 Bot 應用程式設定 的 App Service 擴充功能金鑰。
- 確認已正確輸入值。
- 切換至 Bot 的 [設定直接線路 ] 頁面上顯示的替代擴充金鑰。