共用方式為


設定 ServiceNow 服務以擷取 ServiceNow Knowledge 連接器

ServiceNow Knowledge Microsoft 365 Copilot 連接器讓組織能將 ServiceNow 知識庫文章索引至 Microsoft 365 Copilot 及搜尋體驗中。 本文提供有關 ServiceNow 管理員在部署 ServiceNow 知識連接器前必須完成的設定步驟資訊。

關於如何部署連接器的資訊,請參見 部署 ServiceNow 知識連接器

設定檢查清單

以下檢查清單列出設定環境及設定連接器前置條件的步驟。

設定環境

工作 角色
識別實例網址 ServiceNow 管理員
識別入口配置 ServiceNow 管理員
定義屬性映射 ServiceNow 管理員
檢查是否有進階腳本和階層權限 ServiceNow 管理員

設置先決條件

工作 角色
建立服務帳號並設定權限 ServiceNow 管理員
辨識食用項目數量 ServiceNow 管理員
設定 REST API ServiceNow 管理員
設定階層權限 (預覽) ServiceNow 管理員
將 Microsoft 365 IP 位址加入允許清單 ServiceNow 管理員/網路管理員
解決單點登入設定問題 ServiceNow 管理員

配置 ServiceNow 環境

以下章節說明如何設定 ServiceNow 環境以啟用並優化連線。

識別 ServiceNow 實例的網址

ServiceNow 實例網址通常格式如下:

https://<your-organization-name>.service-now.com

要驗證 ServiceNow 實例的 URL ,請查看 ServiceNow 管理儀表板或您組織使用的登入網址。

如果你有自訂網址:

  • 在你的 ServiceNow 實例中,點到「所有>自訂網址>自訂網址」。

識別 ServiceNow 入口網站的配置

預設情況下,當使用者選擇 Copilot 產生的 ServiceNow 內容連結時,網址會遵循標準格式:

https://<your-organization-name>.service-now.com/kb_view.do?sys_kb_id=bf1ab5ee47c31e90af178339736d

如果你的組織使用不同的 URL,部署連接器時可以自訂網址。 更多資訊請參閱 「自訂特定結構屬性的值」。

定義 ServiceNow 屬性映射

預設情況下,Microsoft Entra ID 會透過檢查 ServiceNow 使用者的電子郵件 ID 是否與 UPN) 或 Mail 屬性 (Microsoft Entra ID 的使用者主體名稱相符,來對應你的資料來源。

如果這個預設映射不符合你組織的需求,你可以自訂一套映射公式。 欲了解更多資訊,請參閱 「映射您的非Entra ID身份」。

檢查 ServiceNow 裡是否有進階腳本和階層權限

確認您的 ServiceNow 環境中的知識文章是否具備以下設定:

  • 使用者標準中啟用的進階腳本
  • 階層式權限已設定

這些設定會影響在 Microsoft 365 體驗(如 Copilot)中呈現內容時的索引行為與存取控制。

要判斷是否有使用者 標準 啟用進階腳本,請執行以下 API 呼叫:

<ServiceNowURL>/api/now/table/user_criteria?advanced=true&sysparm_limit=1

如果你的實例使用進階腳本使用者條件,部署連接器時選擇 進階流程 。 欲了解更多資訊,請參閱 「根據使用者標準選擇流程」。

什麼是階層式權限?

ServiceNow Knowledge 支援在知識庫 (父) 層級及個別條目中子) 層級 (設定權限。 這些權限會被合併評估,以判斷使用者是否擁有文章的存取權。 此模型稱為階層式權限。

ServiceNow 知識連接器僅支援) 預覽 (階層式權限。 這項功能在政府、主權雲端或多租戶環境中的專用森林中無法使用。 欲了解更多資訊,請參閱 預覽 (設定階層權限)

設定連接器前置條件

以下章節說明部署 ServiceNow 連接器前必須完成的前置步驟。

建立服務帳號並設定索引項目的權限

要連接 ServiceNow 並讓 ServiceNow 知識連接器定期更新項目,你需要一個服務帳號,並能讀取特定 ServiceNow 的資料表記錄。 下表列出所需的表格記錄。

功能 讀取存取所需資料表 描述
索引人人可用的知識文章 kb_knowledge 用於爬取知識條目
索引擴展表屬性 sys_db_object 閱讀延伸表格細節以取得範本
sys_dictionary 閱讀擴充的資料表屬性和爬取範本
sys_properties 閱讀屬性以評估權限
sys_attachment 用於爬取知識條目的附件
kb_feedback 用於知識條目的爬行留言
索引與支援使用者條件權限 kb_uc_can_read_mtom 誰可以閱讀這個知識庫
kb_uc_can_contribute_mtom 誰能為這個知識庫做出貢獻
kb_uc_cannot_read_mtom 誰看不懂這個知識庫
kb_uc_cannot_contribute_mtom 誰無法為這個知識庫做出貢獻
sys_user 讀取使用者表
sys_user_has_role 閱讀使用者的角色資訊
sys_user_grmember** 閱讀使用者群組成員資料
user_criteria 讀取使用者條件權限
kb_knowledge_base 閱讀知識庫資訊
sys_user_group 閱讀使用者群組片段
sys_user_role 讀取使用者角色
cmn_location** 閱讀地點資訊
cmn_department** 閱讀系所資訊
core_company** 閱讀公司屬性

** 只有在選擇簡單流程時才需要存取這些表格。 如果你選擇進階流程來讀取使用者條件,就不需要存取這些表格。

你可以為你用來連接 Microsoft Search 的服務帳號建立並指派角色。 欲了解更多資訊,請參閱 「指派角色給使用者」。 你可以將資料表的讀取權限分配給你所建立的角色。

關於如何建立使用者、指派角色,以及對所有適用的資料表記錄授予讀取權限,請參閱 ServiceNow 中的「授予資料表存取權給使用者」。

如果服務帳號沒有所需的權限,或列級或欄位層級的權限受到限制,Microsoft 端會排除特定項目的索引功能。

注意事項

不要明確套用 snc_read_only 服務帳號。 此角色會拒絕對使用者可存取的任何資料表進行寫入操作。 帳號需要將代幣及其他與認證相關的資訊寫入某些資料表。 由於代幣會定期更新,這個帳號在初次驗證後無法被設為唯讀。 服務帳號需要對資料表的寫入權限 oauth_credential 才能進行認證。

若服務帳號無法存取完整的使用者標準表,可能導致與使用者權限相關的行為不一致,包括無意內容過度分享。

辨識食用項目數量

索引時會套用以下預設過濾器。 如果你需要做修改,請在連接器設定時編輯查詢字串。 更多資訊請參閱 自訂查詢字串

active=true^workflow_state=published

為了確認預期的攝取項目數量:

  1. 請前往以下網址: https://<instance-name>.service-now.com/api/now/table/kb_knowledge?sysparm_fields=sys_id&workflow_state=published。 此網址會開啟一個 sys_ids.

    注意事項

    如果你編輯了索引選取文章的預設查詢字串,請使用對應的網址來反映這些查詢條件。

  2. 在同一視窗開啟開發者工具,並在主控台視窗輸入以下程式碼:

        fetch('<<same URL as in 1>>')
        .then(res => res.json())
        .then(data => console.log("Count of sys_ids:", data.result.length))
        .catch(err => console.error(err));
    
  3. 注意物品數量。

當連結器設定完成並完成項目同步後,你可以將索引項目數量與預期數量進行比較,以確認所有文章都已被索引。 欲了解更多資訊,請參閱查看連線統計。

設定 REST API

為了讓連接器能擷取進階使用者條件,請在你的 ServiceNow 實例中建立一個腳本化的 REST API。

  • 將您在ServiceNow的角色提升為 security_admin

建立存取控制:

  1. 在 ServiceNow 中,前往 ACL) 存取控制 (所有>系統安全>
  2. 選擇 以建立新的 ACL。
  3. 請設定以下數值:
    • 類型REST_Endpoint
    • 操作:Execute
    • 姓名Microsoft Copilot
    • 角色admin (或同一個角色分配給爬蟲帳號)
  4. Choose Submit.

建立腳本化 REST API:

  1. 前往 所有 > 系統網路服務 > 、腳本化網路服務 > 、腳本化 REST API
  2. 選擇 [新建]。
  3. 輸入下列資訊:
    • 姓名Microsoft Copilot
    • API IDmicrosoft_copilot
  4. Choose Submit.
  5. 腳本化 REST API 清單頁面,選擇 Microsoft Copilot
  6. 將預設 ACL 設為 Microsoft Copilot。 為避免授權問題,也加入 腳本化 REST 外部預設 ACL。

在 API 中新增資源:

  1. 資源 標籤中,選擇 「新」

  2. 填寫詳細資訊:

    • 姓名GetAllUserCriteria
    • 相對路徑/user_criteria
    • 腳本:貼上以下程式碼:
    (function execute (/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var queryParams = request.queryParams;
        var user = new String(queryParams.user);
        return (new sn_uc.UserCriteriaLoader()).getAllUserCriteria(user);
    })(request, response);
    
  3. 務必確認以下兩項:

    • 需要驗證
    • 需要ACL授權
  4. 確保 ACL 設定為 Microsoft Copilot。 為避免授權問題,也加入 腳本化 REST 外部預設 ACL。

  5. Choose Update.

為了驗證設定:

  1. 確認以下為 資源路徑/api/<API Namespace>/microsoft_copilot/user_criteria
  2. 選擇 更新 以儲存設定。

Microsoft 365 管理員在部署 ServiceNow Knowledge 連接器時會進入 API 命名空間。 以下範例中,API 命名空間為 abcdef

/api/abcdef/microsoft_copilot/user_criteria

設定階層權限 (預覽)

階層式權限允許 ServiceNow 知識連接器評估任何 ServiceNow 知識文章的使用者權限。 連接器會根據 ServiceNow 所使用的規則,評估知識庫 (父) 及知識文章在子) 層級所應用的使用者條件 (。 欲了解更多 ServiceNow 如何評估文章權限的資訊,請參閱 「管理知識庫與知識文章存取」。

要設定階層式權限:

  • 在連接器部署時,根據 你的使用者條件在 ServiceNow 中選擇「 進階」。 如果你設定連接器時選擇 了 Simple ,請將現有連接器更新為使用 進階模式。

    注意事項

    當你選擇 進階時,必須在 ServiceNow 實例中設定腳本化的 REST API,** 當你選擇「進階」時。 請依照 Set Up REST API 中所描述的步驟操作。

  • 提供用於連接器設定的服務帳號的讀取存取 sys_properties 權。 欲了解更多資訊,請參閱 ServiceNow 中「授予服務帳號存取權」表格。

    注意事項

    • 如果使用者和角色已經設定好,請依照 授權列級存取 權和 欄位級存取 權的步驟,將 Copilot Connector 帳戶 () 的角色加入你為資料表存取建立 sys_properties 的新 ACL 中。
  • 在欄位名稱中使用 * 來套用對資料表所有欄位的存取權限。

內部而言,您需要對以下屬性的名稱與值欄位提供唯讀權限,這些屬性對評估階層式 ACL 至關重要:

  • glide.knowman.apply_article_read_criteria
  • glide.knowman.block_access_with_no_user_criteria

如果你不想讓帳號存取表格中 sys_properties 所有欄位,限制帳號只能存取必填欄位:

  1. 建立一個新的 ACL,並只授權你想讀取的特定屬性,讓資料表在列層級存取 sys_properties 。 請提供以下數值:

    1. 類型:紀錄
    2. 應用:全球
    3. 啟動:已確認
    4. 決策類型:允許 若
    5. 管理員覆寫:已勾選
    6. 操作:已讀
    7. 名稱:系統屬性 [sys_properties]。 保持相鄰的場格為 ——無
    8. 適用於:
      1. 選擇 名稱,運算 子是,並輸入欄位名稱: glide.knowman.apply_article_read_criteria
      2. 選擇 手術室 操作員。
      3. 在第二行選擇 名稱,運算子 ,並輸入欄位名稱: glide.knowman.block_access_with_no_user_criteria
    9. 條件 > 需求角色中,選擇你想允許此 ACL 的角色,並建立 ACL。
  2. 建立另一個新的 ACL,並授權存取該物業 的名稱 欄位。 請提供以下數值:

    1. 類型:紀錄
    2. 應用:全球
    3. 啟動:已確認
    4. 決策類型:允許 若
    5. 管理員覆寫:已勾選
    6. 操作:已讀
    7. 名稱:系統屬性 [sys_properties]。 在相鄰欄位,選擇 「姓名」。
    8. 適用於:
      1. 選擇 名稱,運算 子是,並輸入欄位名稱: glide.knowman.apply_article_read_criteria。 1. 選擇 OR 運算子。 1. 在第二行選擇 名稱,運算子 ,並輸入欄位名稱: glide.knowman.block_access_with_no_user_criteria
    9. 條件 > 需求角色中,選擇你想允許此 ACL 的角色,並建立 ACL。
  3. 建立另一個新的ACL,並授權存取該物業 的價值 欄位。 請提供以下數值:

    1. 類型:紀錄
    2. 應用:全球
    3. 啟動:已確認
    4. 決策類型:允許 若
    5. 管理員覆寫:已勾選
    6. 操作:已讀
    7. 名稱:系統屬性 [sys_properties]。 在相鄰欄位選擇 「價值」。
    8. 適用於:
      1. 選擇 名稱,運算 子是,並輸入欄位名稱: glide.knowman.apply_article_read_criteria。 1. 選擇 OR 運算子。 1. 在第二行選擇 名稱,運算子 ,並輸入欄位名稱: glide.knowman.block_access_with_no_user_criteria
    9. 條件 > 需求角色中,選擇你想允許此 ACL 的角色,並建立 ACL。

你建立的三個 ACL 允許你只限制服務帳號的必要權限。 此限制允許它取得所需細節,以判斷 ServiceNow 實例中的權限評估流程。

將 Microsoft 365 IP 位址加入允許清單

如果任何網路設定——例如防火牆或代理設定——阻擋了對 ServiceNow 的存取,請務必將 IP 防火牆規則 中列出的 IP 位址加入允許清單。

有關 ServiceNow 專屬控制的資訊,請參見 IP 位址存取控制

解決 ServiceNow 單點 SSO 設定時的連接器設定問題

如果您的 ServiceNow 實例設定為單一登入 (SSO) ,在連接器設定時可能會遇到以下問題:

  • 在 OAuth 過程中,可能會跳出 一個成功登出 視窗,但不會提示 ServiceNow 憑證。
  • 可能會用 Microsoft 365 管理員憑證來授權 ServiceNow 連線,而非預期的服務帳號。

預設情況下,ServiceNow 嘗試使用 Microsoft 365 管理員憑證,透過瀏覽器登入的 SSO 連線。 此行為可能導致連線失敗,並出現登 出成功 訊息。

為了解決這些問題:

  1. 開啟私人瀏覽器視窗,並使用 ServiceNow 服務帳號的帳號登入。

  2. 在新分頁中,使用 Microsoft 365 管理員憑證登入 Microsoft 365 系統管理中心。

    注意事項

    初始登入可能會預設為 ServiceNow SSO。 如果發生這種情況,請切換到正確的帳號。

  3. 重新嘗試 OAuth 設定。 你現在應該會看到一個視窗,提示你用服務帳號的憑證授權連線。

下一步