連線 Bot 進行搜尋 (預覽)

本文說明如何建立自定義同盟搜尋提供者(由 Bot 提供電源),並將其連線至搜尋通道。 一旦租用戶系統管理員在其租用戶中啟用提供者,企業使用者就會從 Office.com、SharePoint.com 和 Bing.com 搜尋,包含自定義搜尋提供者的結果。

Microsoft 同盟搜尋平臺可讓您建置自定義的同盟搜尋提供者,讓您的資訊能夠參與 Microsoft 搜尋 的答案和垂直體驗,而不需要將該資訊與您的 Microsoft 365 索引合併。 如需詳細資訊,請參閱 Microsoft 同盟搜尋平臺Dynamics 365 同盟搜尋(預覽)的宣布開發人員預覽。

注意

搜尋通道處於私人預覽狀態。 若要要求存取權,請使用 Microsoft 搜尋 Developer Private Preview 窗體。 在問題 7 中,選取 [同盟搜尋]。

您必須執行下列步驟,才能將 Bot 連線至搜尋通道。 本文稍後會詳細說明這些步驟。

  1. 實作 Bot 以做為搜尋提供者。
  2. 如果您的 Bot 需要使用者登入:
    1. 在 Azure 入口網站 中,將 Bot API 公開至搜尋平臺。
    2. 在您的 Bot 程式代碼中,使用產生的範圍 URI 來產生使用者令牌。
  3. 將 Bot 部署到 Azure。
  4. 將搜尋通道新增至 Bot。
  5. 要求 IT 系統管理員檢閱 Bot 註冊,並在租用戶中發佈 Bot。

提示

建議您在生產環境中啟用搜尋提供者之前,先在測試租用戶中啟用搜尋提供者。

必要條件

您可以使用 Bot Framework SDK 所支援的任何語言來實作 Bot。 本文使用 C# 同盟搜尋 Bot 作為範例。

提示

只有在 Bot 需要存取受保護的用戶資源時,才需要此步驟。

在某些商務工作流程中,Bot 可能需要用戶認證,才能代表使用者執行動作。 若要在搜尋通道中為您的 Bot 建立單一登入 (SSO) 體驗,您必須允許搜尋平臺代表用戶保護來自 Microsoft Entra ID 的存取令牌。

若要為您的 Bot 產生範圍 URI 和應用程式識別碼:

  1. 前往 Azure 入口網站。
  2. 如果您還沒有 Bot 資源,請建立 Azure Bot 資源。
  3. 移至 Microsoft Entra ID 服務。
  4. 移至 [應用程式註冊] 窗格。
  5. 選取與您的 Bot 相關聯的應用程式。
  6. 移至 [ 公開 API ] 窗格。
  7. 選取新增範圍
    1. 在 [ 新增範圍 ] 窗格中,建議您保留自動產生的 應用程式標識碼 URI。 選取 [儲存並繼續] 。
    2. 輸入範圍名稱
    3. 對於 神秘 可以同意嗎?建議使用 管理員 和使用者,但兩個選項都可以運作。
    4. 輸入 管理員 同意顯示名稱和管理員 同意描述
    5. 或者,輸入使用者同意顯示名稱和使用者同意描述
    6. 確認 [狀態 ] 已設定為 [已啟用]。
    7. 選取新增範圍
  8. 選取新增用戶端應用程式
    1. 在 [新增用戶端應用程式] 窗格中,將 [用戶端標識符] 設定81473081-50b9-469a-b9d8-303109583ecb,搜尋平臺的用戶端識別碼。
    2. 在 [授權範圍] 下,選取您在上一個步驟中建立的範圍 URI。
    3. 選取新增應用程式
  9. 移至 [ 概觀 ] 窗格。 複製應用程式識別碼 URI。 當您在搜尋通道中註冊 Bot 時,您將需要此專案。

實作 Bot

搜尋通道會將每個使用者查詢傳送至 Bot,作為名為 「application/search」 的叫用活動。 您的 Bot 會在叫用回應中傳回查詢結果。 針對傳回至搜尋通道的查詢結果,使用調適型卡片格式。

  1. 將專案中的任何 Bot Framework 和調適型卡片套件更新為最新版本。
  2. 或者, 新增驗證碼 以產生使用者令牌。
  3. 針對要包含的每個數據源實作數據搜尋方法
  4. 產生調適型卡片以顯示 結果

取得搜尋平臺追蹤標識碼

搜尋平臺會將唯一的追蹤標識碼指派給傳送至 Bot 的每個查詢。 平臺會將此新增至叫用活動的通道數據。 您可能會決定記錄要求的追蹤識別碼。 使用通道數據的 traceId 屬性來取得追蹤標識符。

在同盟搜尋範例SearchHelper.GetSearchTraceId,方法示範如何從叫用活動取得追蹤標識符。

新增 驗證

如果您將 Bot API 公開至搜尋,並在將 Bot 連線至搜尋要求驗證,您可以從活動的通道數據取得使用者驗證令牌。

通道資料的 authorizations 屬性可以包含驗證令牌清單。 如果您將 Bot API 公開至 [搜尋],清單將會包含代表令牌。 清單中的權杖會有下列結構:

屬性名稱 類型​ 描述
authType 整數 驗證令牌類型: 0 未知或預設值,或 2 代表令牌。
token string 驗證令牌本身。

在同盟搜尋範例

  • 類別 SearchBotAuthenticationTokenAuthenticationTypes 列舉表示這項資訊。
  • 方法 SearchHelper.GetSearchOboToken 示範如何從叫用活動取得令牌。

擁有令牌之後,您可以在要求使用者的任何受保護資源時使用它。 如需使用代理令牌的資訊,請參閱 Microsoft 身分識別平台 和 OAuth 2.0 代理者流程

查詢每個數據存放區

搜尋通道會將查詢傳送至 Bot 做為 invoke 活動,而活動 value 屬性中的查詢詳細數據則代表具有下列結構的 JSON 物件:

屬性名稱 類型​ 描述
queryText string 查詢文字。
kind string 查詢類型:當結果會顯示在自定義垂直索引標籤中時,或當結果顯示為 [所有] 索引標籤中的答案時,則為 “searchAnswer”。
queryOptions object 用於分頁的其他查詢選項。
queryOptions.skip 整數 要傳送之第一個結果的索引。
queryOptions.top 整數 要傳送的結果數目上限。

您會在叫用回應中傳回搜尋結果:

  • 一律將叫用回應物件的 Status 屬性設定為 200,這表示網路連線沒問題。 對象的 Body 屬性有個別的狀態代碼。

  • 屬性 Body 代表具有下列結構的 JSON 物件:

    屬性名稱 類型​ 描述
    statusCode 整數 用來指出 Bot 是否能夠成功執行查詢的 HTTP 狀態代碼。
    type string 叫用回應的類型,定義值欄位的格式。 針對搜尋結果使用 「application/vnd.microsoft.search.searchResponse」,或針對錯誤訊息使用 “application/vnd.microsoft.error”。
    value object 對應至 值的值 type

    針對錯誤訊息, value 物件包含:

    屬性名稱 類型​ 描述
    code string Bot 所定義的錯誤碼,如果未指定, null 則為 。
    message string 錯誤訊息,如果未指定, null 則為 。

    針對搜尋結果, value 物件包含:

    屬性名稱 類型​ 描述
    結果 搜尋結果對象的陣列 結果,如果沒有 null ,則為 。
    displayLayouts 顯示配置物件的陣列 顯示版面配置,如果沒有 null 則為 。
    totalResultCount 整數 如果支援分頁,則提供的總結果;否則為 null
    moreResultsAvailable 布林值 指出是否有更多結果可供使用。

    搜尋結果物件包含:

    屬性名稱 類型​ 描述
    value string 此搜尋結果的唯一標識碼或值。
    layoutId string 要用於此結果的顯示配置識別碼。
    data.searchResultText string 此結果的文字。

    顯示版面設定物件包含:

    屬性名稱 類型​ 描述
    layoutId string 配置標識碼。
    layoutBody string 配置本文做為調適型卡片 JSON 物件。

在同盟搜尋範例SearchHelper.RunFederatedSearch方法示範如何從叫用活動取得查詢資訊,以及如何格式化叫用回應。

顯示搜尋結果

您可以建立搜尋垂直和結果類型,以自定義使用者在 SharePoint、Office 和 Bing 中搜尋時看到的搜尋結果。 垂直可讓使用者更輕鬆地尋找他們有權查看的資訊。 如需詳細資訊,請參閱 支援的調適型卡片元素 一節。

如果您的 Bot 收到沒有回應的查詢,其回復應包含空的回應。

在 Azure 中註冊 Bot

若要將 Bot 連線至搜尋通道,您必須在 Azure 中佈建 Bot 資源。 如需詳細資訊,請參閱如何使用 Azure 註冊 Bot,或如何在 Azure 中部署 Bot。

下列指示說明如何將 Bot 連線至搜尋。

提示

建議您在生產環境中啟用搜尋提供者之前,先在測試租用戶中啟用搜尋提供者。

  1. 前往 Azure 入口網站。

  2. 開啟 Bot 資源。

  3. 開啟 [ 通道][預覽] 窗格。

  4. 選取搜尋

  5. 在 [搜尋 設定] 索引標籤中,輸入 Bot 的資訊。

    Sample of the Search Settings tab

    1. 在 [搜尋提供者元數據] 下,輸入要顯示在搜尋UI中的名稱。

    2. 在 [觸發片語] 下,定義代表 Bot 可回答之查詢的片語。

      注意

      針對初始版本,只有英文 (en-US) 可用。

      • .csv上傳包含片語的檔案。 檔案應該包含一個數據行,沒有標頭。
      • 從 [ 語言喜好設定 ] 列表中,選取觸發片組寫入的語言。
    3. 在 [驗證] 底下,指出您的搜尋提供者是否需要用戶驗證。

      • 如果需要驗證,請輸入驗證 URL。 使用您在公開 Bot API 時所複製的應用程式識別碼 URI
    4. 選取 [下一步]。

  6. 在 [ 垂直] 索引 標籤中,如果您希望搜尋提供者的結果顯示在搜尋結果頁面中自己的自定義垂直,請在欄位中輸入垂直名稱;否則,請將此欄位保留空白。 然後選取下一步
    搜尋結果頁面適用於 Office.com、SharePoint.com 和 Bing.com。

  7. 在 [ 租用戶發佈] 索引標籤中,檢閱您的設定並新增發佈資訊。

    1. 檢閱搜尋提供者名稱和範例查詢。 如有必要,請返回先前的索引標籤,以變更這項資訊。
    2. 輸入搜尋提供者的描述。
    3. 輸入支援聯絡人電子郵件。 使用可存取搜尋提供者之開發人員或開發人員群組的電子郵件。
  8. 選取 [ 新增 ] 以向IT系統管理員要求核准。

核准租使用者中的搜尋提供者

租使用者中的搜尋提供者核准是由IT系統管理員在 Microsoft 365 系統管理中心中的搜尋與智慧頁面進行。

測試連線

建議您在生產環境中啟用搜尋提供者之前,先在測試租用戶中啟用搜尋提供者。

修改搜尋提供者

您可以在提交搜尋提供者以供IT系統管理員檢閱之前,先編輯搜尋提供者。 如果您的初始要求遭到拒絕,或您的服務已停用,您可能需要這麼做。

  1. 在 Azure 入口網站 中,移至包含您要編輯之搜尋提供者的 Bot 資源。
  2. 移至 [ 通道][預覽] 窗格。
  3. 選取 [ 搜尋 ] 頻道,然後選取 [ 編輯]。
    1. Azure 會顯示 [ 搜尋通道 ] 窗格。 在此窗格中,您可以編輯您的設定。
    2. 若要修改觸發片語,請下載檔案、在本機編輯檔案,然後上傳檔案。
    3. 完成編輯之後,請再次選取 [ 新增 ],提交搜尋提供者以供IT系統管理員檢閱。

刪除搜尋提供者

如果您從 Bot 資源移除搜尋通道,將會刪除您的搜尋提供者。

若要從 Bot 移除搜尋通道:

  1. 在 Azure 入口網站 中,移至您的 Bot 資源。
  2. 移至 [ 通道][預覽] 窗格。
  3. 選取 [搜尋] 信道。
  4. 在 [搜尋通道] 窗格頂端,選取 [刪除通道]。
  5. 選取 [ ] 以確認作業。

若要刪除 Bot 資源:

  1. 在 Azure 入口網站 中,移至您的 Bot 資源。
  2. 如果您尚未這麼做,請從 Bot 移除搜尋通道。
  3. 在 [概觀] 窗格頂端,選取 [刪除]。
  4. 選取確定以確認操作。

其他資訊

搜尋通道使用同盟搜尋和調適型卡片架構:

如需調適型卡片架構的詳細資訊,請參閱 適用於 Bot 開發人員的調適型卡片。

關於觸發片語

觸發片語是搜尋平臺用來將查詢路由傳送至 Bot 所提供之自定義搜尋提供者的片語。 當語句與其中一個觸發詞組完全相符時,同盟搜尋會將用戶的語句轉送給您的搜尋提供者。

提示

如果有多個搜尋提供者可用,同盟搜尋只會根據提供的觸發片組和使用者的查詢選擇一個。

例如,請考慮管理航班排程和狀態的 Bot。

  1. 想想用戶參考或使用 Bot 的一些常見方式。 請務必區分您的 Bot 與其他 Bot。

    而不是適用於學校和電視節目的一般詞彙,例如「時程表」,而是使用更具體的短語,例如「飛行時程表」和「航班排程」。

  2. 包含涵蓋 Bot 功能範圍的各種片語,例如出發時間和目前狀態。

    例如,包括有關:抵達或出發時間和機場的查詢。

這類 航班排程和狀態 Bot 的觸發片語可能包括:

  • 航班時程表
  • 正式發行前小眾測試版狀態
  • 航班 675 出發時間
  • 我的航班何時起飛
  • 航班 468 抵達時間
  • 西雅圖塔科馬航班狀態
  • 希思羅機場航班狀態

另一個範例中,氣象預報 Bot 的觸發片組可能包括:

  • 當地天氣預報
  • 天氣資訊
  • 明天的天氣
  • 10 天天氣預報
  • 今天的高
  • 今天的雨機會
  • 明天會下雪
  • 明天的風速
  • 外面有風嗎
  • 倫敦天氣

支援的調適型卡片元素

同盟搜尋支援調適型卡片架構的子集。 如需格式化搜尋結果的相關信息,請參閱 自定義搜尋結果頁面

支援包含下列調適型卡片元素:TextBlockRichTextBlock、ImageColumnSetImageSet 和 FactSet。 如需詳細資訊,請參閱 Microsoft 搜尋 管理搜尋結果配置和調適型卡片架構總管。

您可以將每個卡片直接撰寫為 JSON,也可以使用 AdaptiveCards NuGet 套件。

同盟搜尋不支援 HTML

重要

同盟搜尋不會轉譯包含 HTML 的調適型卡片文字。

搜尋平臺不包含 HTML 剖析器。 不過,您可以排除一些標記,並使用 Html2Markdown NuGet 套件將 HTML 轉換為 Markdown:

  1. 拿掉 <span><u> 專案。
  2. 將和 <br> 元素取代<div>為paragraph (<p>) 元素。
  3. 將其餘 HTML 轉換為 Markdown。

下一步