將機器人連接到 Direct Line
本文說明如何將 Bot 連線到 Direct Line 通道。 使用此通道透過用戶端應用程式與 Bot 通訊。
注意
Direct Line 是透過 HTTPS 通訊協定的標準通道,可允許用戶端應用程式與 Bot 之間的通訊。 如果您需要網路隔離,請使用透過 WebSocket 的 Direct Line App Service 擴充功能 。
必要條件
- Azure 帳戶。 如果您還沒有帳戶,請在開始之前建立 免費帳戶 。
- 已發佈至 Azure 的現有 Bot。
新增 Direct Line 通道
您需要做的第一件事是將 Direct Line 通道新增至 Bot。
- 前往 Azure 入口網站。
- 移至您的 Azure Bot 資源。 在 [Bot 設定 ] 下,選取 [ 通道 ]。
- 從 [可用的通道 ] 清單中 選取 [直接線路 ]。
Bot 現在已設定為使用 預設網站 使用 Direct Line。
或者,您可以新增網站,而不是使用預設網站。 選取 [Direct Line 頻道] 頁面上的 [ 新增網站 ] 按鈕,以建立新的網站。
管理秘密金鑰
當您新增直接通道時,Bot Framework 會產生秘密金鑰。 用戶端應用程式會使用這些金鑰來驗證它發出與 Bot 通訊時所發出之 Direct Line API 要求。 如需詳細資訊,請參閱 驗證 。
若要以純文字檢視網站的 Direct Line 秘密,請移至 Direct Line 頻道頁面。
選取 [ Direct Line ] 索引標籤,然後選取您要取得金鑰的網站,例如 Default_Site 。 Azure 會開啟 [ 設定網站 ] 窗格。
在 [ 秘密金鑰 ] 底下,選取對應金鑰旁的眼睛圖示。
複製並安全地儲存金鑰。 使用金鑰來 驗證 用戶端應用程式發出與 Bot 通訊的 Direct Line API 要求。
注意
秘密不應該公開或內嵌在用戶端應用程式中。 請參閱下一個步驟。
最佳做法是使用 Direct Line API 來 交換權杖 的金鑰。 用戶端應用程式接著會使用權杖,在單一交談的範圍內驗證其要求。
組態設定
若要設定您的網站設定:
在 [Direct Line 頻道] 頁面上,從 [網站] 清單中選取您想要設定的網站 。 [ 設定網站 ] 窗格隨即開啟,如下所示:
選取用戶端應用程式將用來與 Bot 通訊的 Direct Line 通訊協定版本。
提示
如果您要在用戶端應用程式與 Bot 之間建立新的連線,請使用 Direct Line API 3.0。
完成後,選取 [ 套用 ] 以儲存月臺組態。 針對您想要連線至 Bot 的每個用戶端應用程式,從新的月臺開始重複此程式。
設定增強式驗證
其中一個可用的月臺組態是 增強的驗證選項 ,有助於在連線到 Bot 時降低安全性風險(例如,使用網路聊天控制項)。 如需詳細資訊,請參閱 Direct Line 增強驗證 。
若要新增增強的驗證:
啟用 增強驗證選項 。 一則訊息,指出「您必須至少有一個受信任的來源」,其會顯示為 [新增信任的來源] 連結。 如果您啟用增強式驗證,則必須至少指定一個受信任的來源。
受信任的來源是系統用來驗證使用者的網域。 在此情況下,Direct Line 會使用網域來產生權杖。
- 如果您將信任的來源設定為組態 UI 頁面的一部分,這些設定一律會作為產生權杖的唯一集合。 當產生權杖或啟動交談時,傳送其他信任的來源(或將信任的來源設定為無)將會被忽略(不會附加至清單或交叉驗證)。
- 如果您未啟用增強式驗證,則會使用您作為 API 呼叫一部分傳送的任何原始 URL。
新增受信任的網域 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);
}
}
}