新增 ServiceNow 動作

啟用 ServiceNow 動作後,使用者可以要求 Google 助理執行下列 ServiceNow 動作:

  • 建立 ServiceNow 事件
  • 更新 ServiceNow 事件

舉例來說,使用者可以在應用程式中輸入「建立有關電腦硬體故障的 ServiceNow 事件」或「將 ServiceNow 事件 INC0010001 的緊急程度更新為高」。助理會視需要詢問其他詳細資料,然後要求使用者確認建立或更新要求。

助理可透過動作讀取及更新下列 ServiceNow 欄位:


欄位

說明

來電者

必要。代表建立事件的呼叫者電子郵件地址,例如 user@google.com。

標題

要建立的事件簡短標題。

說明

要建立的事件詳細資料。

類別

要建立的事件類別。

影響

事件的影響。

緊急

事件的緊急程度。

州/省

事件狀態。

指派對象

要指派事件的使用者電子郵件地址,例如 user@google.com

指派群組

要將事件指派給的使用者群組。

關閉代碼

事件的結案代碼。

關閉附註

關閉事件附註。

設定 ServiceNow 的驗證和權限

啟用 ServiceNow 動作前,ServiceNow 管理員必須授權並設定 ServiceNow 動作連接器。這是連結整合服務的必要步驟,可允許讀取和寫入權限,以便執行動作。

設定連結前,請確認已備妥下列項目:

  • 管理員權限:您必須是 ServiceNow 管理員。

  • ServiceNow 執行個體:按照 ServiceNow 開發人員文件中的操作說明,建立 ServiceNow 執行個體。

  • Google Cloud 專案:使用可管理組織層級設定的管理員帳戶,來設定 Google Cloud 專案,確保組織能設定工作團隊集區。

  • 工作團隊集區:請確認貴機構已完成設定,可管理工作團隊集區。

詳情請參閱「OAuth 2.0 with Inbound REST」網誌文章。

設定 ServiceNow

ServiceNow 提供兩個主要網站:

  1. 主要 ServiceNow 網站:ServiceNow 執行個體的網站。
    • 管理使用者、群組和系統管理工作。
    • 網址:ServiceNow 執行個體的網址。
    • 使用管理員憑證登入。
  2. 開發人員網站
    • 設定知識庫、建立工作流程,以及開發自訂應用程式。
    • 網址:https://developer.service-now.com
    • 使用 ServiceNow ID 登入。

建立 OAuth 端點

按照下列步驟,建立 OAuth 端點:

  1. 以管理員權限登入主要 ServiceNow 執行個體。
  2. 依序前往「All」(全部) >「System OAuth」(系統 OAuth) >「Application registry」(應用程式註冊資料庫)
  3. 按一下「新增」,然後選取「為外部用戶端建立 OAuth API 端點」。擷取用戶端 ID 和用戶端密鑰。
  4. 填寫必要資訊:
    1. 名稱:不重複的名稱。
    2. 重新導向網址https://vertexaisearch.cloud.google.com/oauth-redirect
  5. 按一下「Submit」(提交) 即可建立憑證。
  6. 提交後,按一下名稱即可查看用戶端密鑰。
  7. 密鑰會經過遮蓋。按一下旁邊的鎖頭圖示,即可取消遮蓋並查看密鑰。
  8. 請保留用戶端 ID 和密鑰的副本,在必要時使用。
  9. 前往 developer.service-now.com,然後點按「Manage instance password」(管理執行個體密碼)
  10. 請保留使用者名稱和密碼的副本,在必要時使用。
  11. 在這個階段,設定 ServiceNow 資料儲存庫所需的所有五項資訊都已備妥。如果使用管理員角色擷取資料沒有問題,請繼續建立資料儲存庫。

設定角色和權限

您必須具備安全性管理員角色,才能建立及管理使用者。如果沒有這個角色,請點按個人資料下方的「提升角色」,將角色提升為 security_admin。選取 security_admin 角色,然後按一下「更新」。您必須具備 security_admin 角色,才能建立角色及管理使用者。

  1. 建立含有 ACL 規則的自訂角色:
    1. 依序前往「All」(全部) >「User administration」(使用者管理) >「Roles」(角色)
    2. 按一下「新增」建立新角色。
    3. 選取名稱,然後按一下「提交」
    4. 依序前往「System security」(系統安全性) >「Access Control (ACL)」(存取控管 (ACL)),建立新的 ACL 規則。
    5. 按一下「New」(新增),建立新的 ACL 規則。
    6. 選取角色,例如 sys_user_role
    7. 按一下「提交」,然後指派角色。
    8. 重複這個程序,直到授予所有資料表的存取權為止。連接器需要存取每個實體的下列資料表,才能順利執行作業:
      1. 事件incident
      2. 目錄項目sc_cat_item, sc_cat_item_user_criteria_mtom, sc_cat_item_user_criteria_no_mtom, sc_cat_item_user_mtom, sc_cat_item_user_no_mtom
      3. 知識kb_knowledgekb_knowledge_basekb_uc_can_read_mtomkb_uc_can_contribute_mtom
      4. 附件:所有列出的項目。
      5. 身分sys_user_rolesys_user_has_rolesys_user_groupsys_user_grmembersys_user
      6. 根據新條件更新core_companycmn_locationcmn_department
      7. 使用者條件user_criteria
    9. 在搜尋列中前往 sys_security_acl_role_list.do,確認所有 ACL 都已更新。
    10. 選取要驗證的角色。
    11. 確認已將所有必要的 ACL 指派給所選角色。
  2. 將角色指派給服務帳戶:
    1. 依序前往「All」(全部) >「User Administration」(使用者管理) >「Users」(使用者),然後選取使用者。
    2. 找到要授予角色的使用者,然後選取該使用者。
  3. 如果沒有可用的使用者,請依序前往「System security」(系統安全性) >「Users and groups」(使用者和群組) >「Users」(使用者)
  4. 按一下「使用者」表格中的「新增」,建立新的服務帳戶。
  5. 選取「Web service access only」(僅限存取 Web 服務) 核取方塊。
  6. 前往頁面底部的「角色」表格。
  7. 按一下右側的「編輯」
  8. 授予先前建立的角色,並指派給使用者。根據建立的角色類型,選取適當的角色並指派。
  9. 取得使用者的使用者名稱和密碼。在同一頁面中,按一下「設定密碼」
  10. 自動產生密碼並儲存,供日後使用:
    1. 使用者 IDmanager
    2. 密碼:輸入系統自動產生的密碼。

建立專屬角色並指派 ACL

使用非管理員使用者角色時,即使使用者角色包含必要權限,執行 ServiceNow 動作時仍可能會遇到問題。為避免發生這個問題,請建立專屬角色並指派必要權限。

建立新角色

  1. 依序前往「User Administration」(使用者管理) >「Roles」(角色)
  2. 點選「New」(新增)
  3. 指定新角色的名稱,例如 database_admin_restricted
  4. 視需要輸入說明。
  5. 按一下「提交」

將新角色指派給驗證使用者

  1. 依序前往「User Administration」>「Users」
  2. 選取需要受限存取權的使用者。
  3. 在使用者記錄中,前往「角色」相關清單。
  4. 在「角色」相關清單中,按一下「編輯」
  5. 在「集合」欄中,找出並選取剛建立的角色。
  6. 按一下「新增」,將角色移至「角色清單」
  7. 按一下 [儲存]

實作資料列層級權限

  1. 依序前往「System Security」(系統安全性) >「Access Controls (ACL)」(存取控管 (ACL))
  2. 點選「New」(新增)
  3. 設定下列欄位:

    • 類型:選取「記錄」
    • 作業:選取「read」
    • 姓名:
      • 在第一個下拉式選單中,選取 sys_db_object 資料表。
      • 在第二個下拉式選單中,選取「無」
    • 必要角色:在「插入新列」欄位中,搜尋並選取新建立的角色。
  4. 按一下「提交」

  5. 重複上述步驟,為 sys_glide_objectsys_dictionary 資料表導入資料列層級權限。

實作欄位層級權限

  1. 依序前往「System Security」(系統安全性) >「Access Controls (ACL)」(存取控管 (ACL))
  2. 點選「New」(新增)
  3. 設定下列欄位:
    • 類型:選取「記錄」
    • 作業:選取「read」
    • 姓名:
      • 在第一個下拉式選單中,選取目標資料表,例如 sys_db_object
      • 在第二個下拉式選單中,對表格中的所有欄位套用權限,或選取特定欄位名稱,例如「name」
    • 必要角色:在「插入新列」欄位中,搜尋並選取新建立的角色。
  4. 按一下「提交」
  5. 重複執行上述步驟,為 sys_glide_objectsys_dictionary 表格中的特定或所有欄位,實作欄位層級權限。

設定工作團隊集區

請按照操作說明,使用下列其中一種設定建立工作團隊集區:

  1. Azure OIDC 設定
  2. Azure SAML 設定
  3. Okta 和 OIDC 設定
  4. Okta 和 SAML 設定

設定 ServiceNow 動作

開始前,請確認 Google Cloud 管理員已完成「為 ServiceNow 設定驗證和權限」一文中的步驟,並提供下列資訊:

欄位 說明
用戶端 ID ServiceNow 整合的用戶端 ID。
用戶端密鑰 ServiceNow 整合的用戶端密鑰
使用者名稱 整合作業的使用者帳戶。
密碼 整合作業的密碼。
執行個體網址 (或到達網頁主機) ServiceNow 網站的執行個體網址。格式如下: https://INSTANCE_NAME.service-now.com
驗證網址 ServiceNow API 用戶端的授權 URI。格式如下: https://INSTANCE_NAME.service-now.com/oauth_auth.do
權杖網址 ServiceNow API 用戶端的重新整理權杖 URI。格式如下: https://INSTANCE_NAME.service-now.com/oauth_token.do

在 Google Cloud 控制台中設定 ServiceNow 動作

如要使用控制台將動作新增至應用程式,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Agent Builder」頁面
  2. 在導覽選單中,按一下「動作」
  3. 按一下「新增動作」
  4. 如要選取 ServiceNow 做為動作的來源,請在 ServiceNow 資訊卡中按一下「連結」
  5. 在「Configuration」(設定) 頁面中,從「Select an instance」(選取執行個體) 下拉式清單選取 ServiceNow 資料存放區。
    立即設定服務
    設定 ServiceNow 設定
  6. 輸入所選連接器執行個體的授權資訊:

    1. 輸入您在建立 OAuth 端點時擷取的「新用戶端 ID」和「新用戶端密鑰」
    2. 輸入 ServiceNow Auth URI。請使用「https://<var>INSTANCE_NAME</var>.service-now.com/oauth_auth.do」格式。
    3. 輸入 ServiceNow 目的地 URI。請使用「https://<var>INSTANCE_NAME</var>.service-now.com」格式。
    4. 輸入 ServiceNow 權杖 URI。請使用「https://<var>INSTANCE_NAME</var>.service-now.com/oauth_token.do」格式。
    5. 輸入 ServiceNow 管理員的「使用者帳戶」和「密碼」
  7. 選用:選取「啟用 PKCE 支援」,為應用程式增添一層安全防護。

  8. 選用:選取「Include system tables」(包含系統資料表),即可存取 ServiceNow 的基礎系統資訊 (系統資料表)。請仔細考慮後再選取這個選項,且僅在絕對必要時才選取。

  9. 選取要啟用的 ServiceNow 動作。

  10. 點選「完成設定」。您的動作會顯示在「動作」頁面。動作會在幾分鐘後生效。

使用 API 設定 ServiceNow 動作

如要使用 API 在應用程式中新增動作,請按照下列步驟操作。

  1. 為動作建立 ServiceNow 連接器:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -H "X-GFE-SSL: yes" \
      -H "X-Goog-User-Project: PROJECT_ID" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global:setUpDataConnector" \
      -d '{
        "collectionId": "COLLECTION_ID",
        "collectionDisplayName": "COLLECTION_DISPLAY_NAME",
        "dataConnector": {
          "dataSource": "servicenow",
          "params": {
            "user_account": "USER_ACCOUNT",
            "client_id": "CLIENT_ID",
            "client_secret": "CLIENT_SECRET",
            "password": "PASSWORD",
            "instance_uri": "INSTANCE_URI",
            "auth_type": "OAUTH_PASSWORD_GRANT"
          },
          "refreshInterval": "86400s",
          "entities": [
            {
              "entityName": "knowledge_base",
              "params": {
                "inclusion_filters":{},
                "exclusion_filters":{}
              }
            },
            {
              "entityName": "catalog"
            },
            {
              "entityName": "knowledge"
            },
            {
              "entityName": "incident"
            },
            {
              "entityName": "attachment"
            }
          ],
          "syncMode": "PERIODIC",
          "staticIpEnabled": false
        }
      }'
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • COLLECTION_ID:集合的 ID。

    • COLLECTION_DISPLAY_NAME:集合的顯示名稱。

    • USER_ACCOUNT:ServiceNow 整合的使用者帳戶。

    • CLIENT_ID:ServiceNow 整合的用戶端 ID。

    • PASSWORD:ServiceNow 整合的密碼。

    • INSTANCE_URI:ServiceNow 網站的執行個體 URI。

  2. 更新連結器,加入動作設定。

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token --project "PROJECT_NUMBER")" \
      -H "Content-Type: application/json" \
      -H "X-Goog-User-Project: PROJECT_ID" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/COLLECTION_ID/dataConnector?update_mask=action_config,bap_config,destination_configs" \
      -d '{
      "name": "projects/PROJECT_ID/locations/global/collections/COLLECTION_ID/dataConnector",
      "actionConfig": {
        "isActionConfigured": true,
        "actionParams": {
          "client_id": "CLIENT_ID",
          "client_secret": "CLIENT_SECRET",
          "auth_uri": "AUTH_URI",
          "token_uri": "TOKEN_URI",
          "pkce_support_enabled": true,
          "include_system_tables": true
        }
      },
      "bapConfig": {
        "supported_connector_modes": "ACTIONS"
      },
      "destinationConfigs": [
        {
          "key": "host_url",
          "destinations": [
            {
              "host": "INSTANCE_URL"
            }
          ]
        }
      ]
    }'
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • COLLECTION_ID:集合的 ID。

    • USERNAME:ServiceNow 整合服務的使用者帳戶。

    • CLIENT_ID:ServiceNow 整合的用戶端 ID。

    • PASSWORD:ServiceNow 整合的密碼。

    • AUTH_URI:ServiceNow 整合的授權 URI。

    • TOKEN_URI:ServiceNow 整合的更新權杖 URI。

    • INSTANCE_URL:ServiceNow 網站的執行個體網址。

  3. 為助理啟用 ServiceNow 動作。

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token --project "PROJECT_NUMBER")" \
      -H "Content-Type: application/json" \
      -H "X-Goog-User-Project: PROJECT_NUMBER" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID/assistants/default_assistant?update_mask=enabledActions" \
      -d '{
        "name": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID/assistants/default_assistant",
        "enabledActions": {
          "projects/PROJECT_NUMBER/locations/global/collections/CONNECTOR_ID/dataConnector": {
            "actionInfo": [
              {
                "actionName": "create_servicenow_incident",
                "actionDisplayName": "Create ServiceNow Incident"
              },
              {
                "actionName": "update_servicenow_incident",
                "actionDisplayName": "Update ServiceNow Incident"
              }
            ]
          }
        }
      }'
    

    更改下列內容:

    • PROJECT_NUMBER:您的 Google Cloud 專案編號。

    • APP_ID:應用程式的 ID。

    • CONNECTOR_ID:您在上一個步驟中產生的連結器集合 ID。

新增動作後,Google 助理就能在應用程式中代表使用者執行這些動作。使用者首次要求 Google 助理執行 ServiceNow 動作時,系統會要求他們授權存取 ServiceNow 帳戶。如要使用助理,使用者必須擁有 Gemini Enterprise Plus 授權。