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
為了確認預期的攝取項目數量:
請前往以下網址:
https://<instance-name>.service-now.com/api/now/table/kb_knowledge?sysparm_fields=sys_id&workflow_state=published。 此網址會開啟一個sys_ids.注意事項
如果你編輯了索引選取文章的預設查詢字串,請使用對應的網址來反映這些查詢條件。
在同一視窗開啟開發者工具,並在主控台視窗輸入以下程式碼:
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));注意物品數量。
當連結器設定完成並完成項目同步後,你可以將索引項目數量與預期數量進行比較,以確認所有文章都已被索引。 欲了解更多資訊,請參閱查看連線統計。
設定 REST API
為了讓連接器能擷取進階使用者條件,請在你的 ServiceNow 實例中建立一個腳本化的 REST API。
- 將您在ServiceNow的角色提升為
security_admin。
建立存取控制:
- 在 ServiceNow 中,前往 ACL) 存取控制 (所有>系統安全>。
- 選擇 新 以建立新的 ACL。
- 請設定以下數值:
-
類型:
REST_Endpoint -
操作:
Execute -
姓名:
Microsoft Copilot -
角色:
admin(或同一個角色分配給爬蟲帳號)
-
類型:
- Choose Submit.
建立腳本化 REST API:
- 前往 所有 > 系統網路服務 > 、腳本化網路服務 > 、腳本化 REST API。
- 選擇 [新建]。
- 輸入下列資訊:
-
姓名:
Microsoft Copilot -
API ID:
microsoft_copilot
-
姓名:
- Choose Submit.
- 從腳本化 REST API 清單頁面,選擇 Microsoft Copilot。
- 將預設 ACL 設為 Microsoft Copilot。 為避免授權問題,也加入 腳本化 REST 外部預設 ACL。
在 API 中新增資源:
在 資源 標籤中,選擇 「新」。
填寫詳細資訊:
-
姓名:
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);-
姓名:
務必確認以下兩項:
- 需要驗證
- 需要ACL授權
確保 ACL 設定為 Microsoft Copilot。 為避免授權問題,也加入 腳本化 REST 外部預設 ACL。
Choose Update.
為了驗證設定:
- 確認以下為 資源路徑:
/api/<API Namespace>/microsoft_copilot/user_criteria。 - 選擇 更新 以儲存設定。
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 中「授予服務帳號存取權」表格。在欄位名稱中使用 * 來套用對資料表所有欄位的存取權限。
內部而言,您需要對以下屬性的名稱與值欄位提供唯讀權限,這些屬性對評估階層式 ACL 至關重要:
- glide.knowman.apply_article_read_criteria
- glide.knowman.block_access_with_no_user_criteria
如果你不想讓帳號存取表格中 sys_properties 所有欄位,限制帳號只能存取必填欄位:
建立一個新的 ACL,並只授權你想讀取的特定屬性,讓資料表在列層級存取
sys_properties。 請提供以下數值:- 類型:紀錄
- 應用:全球
- 啟動:已確認
- 決策類型:允許 若
- 管理員覆寫:已勾選
- 操作:已讀
- 名稱:系統屬性 [sys_properties]。 保持相鄰的場格為 ——無。
- 適用於:
- 選擇 名稱,運算 子是,並輸入欄位名稱: glide.knowman.apply_article_read_criteria。
- 選擇 手術室 操作員。
- 在第二行選擇 名稱,運算子 是,並輸入欄位名稱: glide.knowman.block_access_with_no_user_criteria。
- 在 條件 > 需求角色中,選擇你想允許此 ACL 的角色,並建立 ACL。
建立另一個新的 ACL,並授權存取該物業 的名稱 欄位。 請提供以下數值:
- 類型:紀錄
- 應用:全球
- 啟動:已確認
- 決策類型:允許 若
- 管理員覆寫:已勾選
- 操作:已讀
- 名稱:系統屬性 [sys_properties]。 在相鄰欄位,選擇 「姓名」。
- 適用於:
1. 選擇 名稱,運算 子是,並輸入欄位名稱: glide.knowman.apply_article_read_criteria。 1. 選擇 OR 運算子。 1. 在第二行選擇 名稱,運算子 是,並輸入欄位名稱: glide.knowman.block_access_with_no_user_criteria。 - 在 條件 > 需求角色中,選擇你想允許此 ACL 的角色,並建立 ACL。
建立另一個新的ACL,並授權存取該物業 的價值 欄位。 請提供以下數值:
- 類型:紀錄
- 應用:全球
- 啟動:已確認
- 決策類型:允許 若
- 管理員覆寫:已勾選
- 操作:已讀
- 名稱:系統屬性 [sys_properties]。 在相鄰欄位選擇 「價值」。
- 適用於:
1. 選擇 名稱,運算 子是,並輸入欄位名稱: glide.knowman.apply_article_read_criteria。 1. 選擇 OR 運算子。 1. 在第二行選擇 名稱,運算子 是,並輸入欄位名稱: glide.knowman.block_access_with_no_user_criteria。 - 在 條件 > 需求角色中,選擇你想允許此 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 連線。 此行為可能導致連線失敗,並出現登 出成功 訊息。
為了解決這些問題:
開啟私人瀏覽器視窗,並使用 ServiceNow 服務帳號的帳號登入。
在新分頁中,使用 Microsoft 365 管理員憑證登入 Microsoft 365 系統管理中心。
注意事項
初始登入可能會預設為 ServiceNow SSO。 如果發生這種情況,請切換到正確的帳號。
重新嘗試 OAuth 設定。 你現在應該會看到一個視窗,提示你用服務帳號的憑證授權連線。