對 Bot Framework 驗證進行疑難排解

適用于: SDK v4

本指南可藉由評估一系列案例來判斷問題是否存在,協助您針對 Bot 的驗證問題進行疑難排解。

注意

若要完成本指南中的所有步驟,您必須下載並使用 Bot Framework 模擬器 ,而且必須能夠存取Azure 入口網站 中的 Bot 註冊設定。

App 識別碼及密碼

Bot 安全性是由 您在向 Bot Framework 註冊 Bot 時取得的 Microsoft 應用程式識別碼 Microsoft 應用程式密碼 所設定。 這些值通常會在 Bot 的組態檔內指定,並用來從 Microsoft 帳戶服務擷取存取權杖。

如果您尚未這麼做, 請將 Bot 部署至 Azure ,以取得 可用來進行驗證的 Microsoft 應用程式識別碼 Microsoft 應用程式密碼

注意

若要尋找已部署 Bot 的 AppID AppPassword ,請參閱 MicrosoftAppID 和 MicrosoftAppPassword

步驟 1:停用 localhost 上的安全性和測試

在此步驟中,您會在停用安全性時,確認 Bot 可存取且可在 localhost 上運作。

警告

停用 Bot 的安全性可能會允許未知的攻擊者模擬使用者。 只有在您在受保護的偵錯環境中作業時,才實作下列程式。

停用安全性

若要停用 Bot 的安全性,請編輯其組態設定,以移除應用程式識別碼和密碼的值。

如果您使用適用于 .NET 的 Bot Framework SDK,請在 appsettings.json 檔案中 新增或編輯設定:

"MicrosoftAppId": "",
"MicrosoftAppPassword": ""

在 localhost 上測試 Bot

接下來,使用 Bot Framework 模擬器在 localhost 上測試 Bot。

  1. 在 localhost 上啟動 Bot。
  2. 啟動 Bot Framework 模擬器。
  3. 使用模擬器將連線至 Bot。
    • 輸入 http://localhost:port-number/api/messages 模擬器的網址列,其中 埠號碼 符合應用程式執行所在瀏覽器中顯示的埠號碼。
    • 確定 [Microsoft 應用程式識別碼 ] 和 [Microsoft 應用程式密碼 ] 欄位都是空的。
    • 按一下 連線
  4. 若要測試 Bot 的連線能力,請在模擬器中輸入一些文字,然後按 Enter。

如果 Bot 回應輸入,且聊天視窗中沒有錯誤,則您已確認當安全性停用時,您的 Bot 可存取且可在 localhost 上運作。 繼續進行步驟 2

如果在聊天視窗中指出一或多個錯誤,請按一下錯誤(s)以取得詳細資料。 常見問題包括:

  • 模擬器設定會指定 Bot 不正確的端點。 請確定您已在 URL 中包含適當的埠號碼,以及 URL 結尾的適當路徑,例如 /api/messages
  • 模擬器設定會指定以 開頭的 https Bot 端點。 在 localhost 上,端點應該以 http 開頭。
  • 模擬器設定會指定 [Microsoft 應用程式識別碼 ] 欄位和/或 [Microsoft 應用程式密碼 ] 欄位的值。 這兩個欄位應該是空的。
  • Bot 的安全性尚未停用。 確認 Bot 未指定應用程式識別碼或密碼的值。

步驟 2:驗證 Bot 的應用程式識別碼和密碼

在此步驟中,您將確認 Bot 將用於驗證的應用程式識別碼和密碼是否有效。 (如果您不知道這些值, 請立即取得這些 值。

警告

下列指示會停用 的 login.microsoftonline.com SSL 驗證。 只有在安全網路上執行此程式,並考慮在之後變更應用程式的密碼。

對 Microsoft 登入服務發出 HTTP 要求

這些指示說明如何使用 cURL 向 Microsoft 登入服務發出 HTTP 要求。 您可以使用 Postman 之類的替代工具,只要確定要求符合 Bot Framework 驗證通訊協定 即可。

若要確認 Bot 的應用程式識別碼和密碼是否有效,請使用 cURL 發出下列要求,並以 APP_ID Bot 的應用程式識別碼和密碼取代 和 APP_PASSWORD

提示

您的密碼可能包含使下列呼叫不正確特殊字元。 如果是,請嘗試將您的密碼轉換成 URL 編碼。

curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentials&client_id=APP_ID&client_secret=APP_PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default"

此要求會嘗試交換 Bot 的應用程式識別碼和密碼,以取得存取權杖。 如果要求成功,您會收到 JSON 承載,其中包含 access_token 屬性等等。

{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}

如果要求成功,您已確認您在要求中指定的應用程式識別碼和密碼有效。 繼續進行步驟 3

如果您在回應要求時收到錯誤,請檢查回應以識別錯誤的原因。 如果回應指出應用程式識別碼或密碼無效, 請從 Bot Framework 入口網站取得正確的值,並使用新的值 重新發出要求,以確認它們有效。

步驟 3:在 localhost 上啟用安全性和測試

此時,您已確認在停用安全性時,Bot 可存取且可在 localhost 上運作,並確認 Bot 將用於驗證的應用程式識別碼和密碼有效。 在此步驟中,您會在啟用安全性時,確認 Bot 可存取且可在 localhost 上運作。

啟用安全性

即使 Bot 只在 localhost 上執行,Bot 的安全性仍依賴Microsoft 服務。 若要啟用 Bot 的安全性,請編輯其組態設定,以使用您在步驟 2 驗證的值填入應用程式識別碼和密碼。 此外,請確定您的套件是最新的,特別是 System.IdentityModel.Tokens.JwtMicrosoft.IdentityModel.Tokens

如果您使用適用于 .NET 的 Bot Framework SDK,請在檔案 appsettings.configappsettings.json 填入這些設定或對應的值:

<appSettings>
  <add key="MicrosoftAppId" value="APP_ID" />
  <add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>

如果您使用適用于 Node.js 的 Bot Framework SDK,請填入這些設定(或更新對應的環境變數):

var connector = new builder.ChatConnector({
  appId: 'APP_ID',
  appPassword: 'PASSWORD'
});

注意

若要尋找 Bot 的 AppID 和 AppPassword ,請參閱 MicrosoftAppID 和 MicrosoftAppPassword

在 localhost 上測試 Bot

接下來,使用 Bot Framework 模擬器在 localhost 上測試 Bot。

  1. 在 localhost 上啟動 Bot。
  2. 啟動 Bot Framework 模擬器。
  3. 使用模擬器將連線至 Bot。
    • 輸入 http://localhost:port-number/api/messages 模擬器的網址列,其中 埠號碼 符合應用程式執行所在瀏覽器中顯示的埠號碼。
    • 在 [Microsoft 應用程式識別碼] 欄位中輸入您的 Bot 應用程式識別碼
    • 在 [Microsoft 應用程式密碼] 欄位中輸入您的 Bot 密碼
    • 按一下 連線
  4. 若要測試 Bot 的連線能力,請在模擬器中輸入一些文字,然後按 Enter。

如果 Bot 回應輸入,且聊天視窗中沒有任何錯誤,則您已確認啟用安全性時,Bot 可存取且可在 localhost 上運作。 繼續進行步驟 4

如果在聊天視窗中指出一或多個錯誤,請按一下錯誤(s)以取得詳細資料。 常見問題包括:

  • 模擬器設定會指定 Bot 不正確的端點。 請確定您已在 URL 中包含適當的埠號碼,以及 URL 結尾的適當路徑,例如 /api/messages
  • 模擬器設定會指定以 開頭的 https Bot 端點。 在 localhost 上,端點應該以 http 開頭。
  • 在 [模擬器] 設定中,[ Microsoft 應用程式識別碼 ] 欄位和/或 [Microsoft 應用程式密碼 ] 未包含有效值。 這兩個欄位都應該填入,而且每個欄位都應該包含您在步驟 2 驗證的對應值。
  • Bot 尚未啟用安全性。 確認 Bot 組態設定同時指定應用程式識別碼和密碼的值。

步驟 4:在雲端中測試 Bot

此時,您已確認 Bot 在停用安全性時可在 localhost 上存取並正常運作、確認 Bot 的應用程式識別碼和密碼有效,並在啟用安全性時確認您的 Bot 可存取且可在 localhost 上運作。 在此步驟中,您會將 Bot 部署至雲端,並確認其可存取且功能已啟用安全性。

將 Bot 部署至雲端

Bot Framework 需要從網際網路存取 Bot,因此您必須將 Bot 部署至 Azure 等雲端裝載平臺。 請務必在部署前啟用 Bot 的安全性,如步驟 3 中所述

注意

如果您還沒有雲端裝載提供者,您可以註冊 免費帳戶

如果您將 Bot 部署至 Azure,系統會自動為您的應用程式設定 SSL,藉此啟用 Bot Framework 所需的 HTTPS 端點。 如果您部署到另一個雲端裝載提供者,請務必確認您的應用程式已針對 SSL 進行設定,讓 Bot 具有 HTTPS 端點。

測試您的機器人

若要在已啟用安全性的雲端中測試 Bot,請完成下列步驟。

  1. 請確定您的 Bot 已成功部署並正在執行。
  2. 登入 Azure 入口網站
  3. 在入口網站中流覽至 Bot 的 Azure Bot 資源。
  4. 按一下 左側 [Bot 管理 ] 窗格中網路聊天 中的 [測試]。
  5. 若要測試 Bot 的連線能力,請在網路聊天控制項中輸入一些文字,然後按 Enter。

如果在聊天視窗中指出錯誤,請使用錯誤訊息來判斷錯誤的原因。 常見問題包括:

  • Bot Framework 入口網站中 Bot 設定 頁面上指定的傳訊端點 不正確。 請確定您已在 URL 結尾包含適當的路徑,例如 /api/messages
  • Bot Framework 入口網站中 Bot 的 [設定] 頁面上指定的 傳訊端點 不會以 https Bot Framework 開頭或不受 Bot Framework 信任。 您的 Bot 必須具有有效的鏈結信任憑證。
  • Bot 會針對應用程式識別碼或密碼設定遺漏或不正確的值。 確認 Bot 組態設定指定應用程式識別碼和密碼的有效值。

如果 Bot 會適當地回應輸入,表示您已確認您的 Bot 可存取且可在雲端中運作,且已啟用安全性。 此時,您的 Bot 已準備好安全地 連線到 Facebook Messenger、Direct Line 等通道

其他資源

如果您在完成上述步驟之後仍遇到問題,您可以: