將機器人連接到 Direct Line

本文說明如何將 Bot 連線到 Direct Line 通道。 使用此通道透過用戶端應用程式與 Bot 通訊。

注意

Direct Line 是透過 HTTPS 通訊協定的標準通道,可允許用戶端應用程式與 Bot 之間的通訊。 如果您需要網路隔離,請使用透過 WebSocket 的 Direct Line App Service 擴充功能

必要條件

  • Azure 帳戶。 如果您還沒有帳戶,請在開始之前建立 免費帳戶
  • 已發佈至 Azure 的現有 Bot。

新增 Direct Line 通道

您需要做的第一件事是將 Direct Line 通道新增至 Bot。

  1. 前往 Azure 入口網站
  2. 移至您的 Azure Bot 資源。 在 [Bot 設定 ] 下,選取 [ 通道 ]。
  3. 從 [可用的通道 ] 清單中 選取 [直接線路 ]。

Bot 現在已設定為使用 預設網站 使用 Direct Line。

或者,您可以新增網站,而不是使用預設網站。 選取 [Direct Line 頻道] 頁面上的 [ 新增網站 ] 按鈕,以建立新的網站。 Direct Line new site button in Azure portal

管理秘密金鑰

當您新增直接通道時,Bot Framework 會產生秘密金鑰。 用戶端應用程式會使用這些金鑰來驗證它發出與 Bot 通訊時所發出之 Direct Line API 要求。 如需詳細資訊,請參閱 驗證

  1. 若要以純文字檢視網站的 Direct Line 秘密,請移至 Direct Line 頻道頁面。

  2. 選取 [ Direct Line ] 索引標籤,然後選取您要取得金鑰的網站,例如 Default_Site 。 Azure 會開啟 [ 設定網站 ] 窗格。

  3. 在 [ 秘密金鑰 ] 底下,選取對應金鑰旁的眼睛圖示。

    Show Direct Line keys

  4. 複製並安全地儲存金鑰。 使用金鑰來 驗證 用戶端應用程式發出與 Bot 通訊的 Direct Line API 要求。

    注意

    秘密不應該公開或內嵌在用戶端應用程式中。 請參閱下一個步驟。

  5. 最佳做法是使用 Direct Line API 來 交換權杖 的金鑰。 用戶端應用程式接著會使用權杖,在單一交談的範圍內驗證其要求。

組態設定

若要設定您的網站設定:

  1. 在 [Direct Line 頻道] 頁面上,從 [網站] 清單中選取您想要設定的網站 。 [ 設定網站 ] 窗格隨即開啟,如下所示: Configure site pane

  2. 選取用戶端應用程式將用來與 Bot 通訊的 Direct Line 通訊協定版本。

    提示

    如果您要在用戶端應用程式與 Bot 之間建立新的連線,請使用 Direct Line API 3.0。

  3. 完成後,選取 [ 套用 ] 以儲存月臺組態。 針對您想要連線至 Bot 的每個用戶端應用程式,從新的月臺開始重複此程式。

設定增強式驗證

其中一個可用的月臺組態是 增強的驗證選項 ,有助於在連線到 Bot 時降低安全性風險(例如,使用網路聊天控制項)。 如需詳細資訊,請參閱 Direct Line 增強驗證

若要新增增強的驗證:

  1. 啟用 增強驗證選項 。 一則訊息,指出「您必須至少有一個受信任的來源」,其會顯示為 [新增信任的來源] 連結。 如果您啟用增強式驗證,則必須至少指定一個受信任的來源。

    受信任的來源是系統用來驗證使用者的網域。 在此情況下,Direct Line 會使用網域來產生權杖。

    • 如果您將信任的來源設定為組態 UI 頁面的一部分,這些設定一律會作為產生權杖的唯一集合。 當產生權杖或啟動交談時,傳送其他信任的來源(或將信任的來源設定為無)將會被忽略(不會附加至清單或交叉驗證)。
    • 如果您未啟用增強式驗證,則會使用您作為 API 呼叫一部分傳送的任何原始 URL。 Add trusted origin
  2. 新增受信任的網域 URL 之後,請選取 [ 套用 ]。

Direct Line 範例 Bot

您可以從此位置下載 .NET 範例: Direct Line Bot 範例

此範例包含兩個專案:

  • DirectLineBot 。 它會建立 Bot,以透過 Direct Line 通道進行連線。
  • DirectLineClient 。 這是主控台應用程式,可透過 Direct Line 通道與先前的 Bot 交談。

Direct Line API

  • Direct Line API 的認證必須從 Azure Bot 註冊取得,而且只會允許呼叫端連線到產生它們的 Bot。 在 Bot 專案中,以這些值更新 appsettings.json 檔案。

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • 在Azure 入口網站中,啟用頻道清單中的 Direct Line,然後設定 Direct Line 秘密。 請確定已核取 3.0 版的核取方塊。 在主控台用戶端專案中,使用 Direct Line 秘密金鑰和 Bot 控制碼來更新 App.config 檔案(Bot ID)。

    <appSettings>
        <add key="DirectLineSecret" value="YourBotDirectLineSecret" />
        <add key="BotId" value="YourBotHandle" />
    </appSettings>
    

使用者訊息會使用先前產生的 ,使用 ConversationId Direct Line Client Conversations.PostActivityAsync 方法傳送至 Bot。

while (true)
{
    string input = Console.ReadLine().Trim();

    if (input.ToLower() == "exit")
    {
        break;
    }
    else
    {
        if (input.Length > 0)
        {
            Activity userMessage = new Activity
            {
                From = new ChannelAccount(fromUser),
                Text = input,
                Type = ActivityTypes.Message
            };

            await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
        }
    }
}