添加 ServiceNow 操作

启用 ServiceNow 操作后,最终用户可以要求助理执行以下 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 项目,并使用能够管理组织级配置的管理员账号,确保组织可以设置员工池。

  • 员工池:确保您的组织已设置为能够管理员工池。

如需了解详情,请参阅使用入站 REST 的 OAuth 2.0 博文。

设置 ServiceNow

ServiceNow 提供两个主要网站:

  1. 主 ServiceNow 网站:您的 ServiceNow 实例对应的网站。
    • 管理用户、群组和系统管理任务。
    • 网址:您的 ServiceNow 实例的网址。
    • 使用管理员凭证登录。
  2. 开发者网站
    • 配置知识库、设置工作流和开发自定义应用。
    • 网址:https://developer.service-now.com
    • 使用您的 ServiceNow ID 登录。

创建 OAuth 端点

如需创建 OAuth 端点,请执行以下操作:

  1. 以管理员权限登录主 ServiceNow 实例。
  2. 依次前往全部 > 系统 OAuth > 应用注册
  3. 点击新建,然后选择为外部客户端创建 OAuth API 端点。检索客户端 ID 和客户端密钥。
  4. 填写必填信息:
    1. 名称:唯一名称。
    2. 重定向网址https://vertexaisearch.cloud.google.com/oauth-redirect
  5. 点击提交以创建凭证。
  6. 提交后,点击名称以查看客户端密钥。
  7. 密钥已被遮盖。点击密钥旁边的锁形图标,即可取消遮盖并查看密钥。
  8. 保留客户端 ID 和密钥的副本,以便在需要时使用。
  9. 前往 developer.service-now.com,然后点击管理实例密码
  10. 保留用户名和密码的副本,以便在需要时使用。
  11. 在此阶段,设置 ServiceNow 数据存储区所需的所有五项信息均已准备就绪。如果对使用管理员角色拉取数据不存在顾虑,请继续创建数据存储区。

设置角色和权限

您必须具有安全管理员角色才能创建和管理用户。如果您没有此角色,请点击个人资料下的提升角色,将您的角色提升为 security_admin。选择 security_admin 角色,然后点击更新。创建角色和管理用户需要 security_admin 角色。

  1. 创建实施 ACL 规则的自定义角色:
    1. 依次前往全部 > 用户管理 > 角色
    2. 点击新建以创建新角色。
    3. 选择一个名称,然后点击提交
    4. 依次前往系统安全性 > 访问权限控制 (ACL),以创建新的 ACL 规则。
    5. 点击新建以创建新的 ACL 规则。
    6. 选择一个角色,例如 sys_user_role
    7. 点击提交,然后分配角色。
    8. 重复此过程,直到授予所有表的访问权限。连接器需要访问每个实体的以下表才能成功运行:
      1. 事件incident
      2. 目录商品sc_cat_itemsc_cat_item_user_criteria_mtomsc_cat_item_user_criteria_no_mtomsc_cat_item_user_mtomsc_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. 依次前往全部 > 用户管理 > 用户,然后选择相应用户。
    2. 找到要授予角色的用户,然后选择该用户。
  3. 如果没有可用用户,请依次前往系统安全性 > 用户和群组 > 用户
  4. 点击新建,在用户表中创建新的服务账号。
  5. 选中仅限 Web 服务访问复选框。
  6. 前往页面底部的角色表格。
  7. 点击右侧的修改
  8. 向用户授予之前创建的角色,并将其分配给用户。根据创建的角色类型,选择相应的角色并进行分配。
  9. 获取用户的用户名和密码。在同一页面上,点击设置密码
  10. 自动生成密码并将其保存以备后用:
    1. 用户 IDmanager
    2. 密码:输入自动生成的密码。

创建专用角色并分配 ACL

当您使用非管理员用户角色时,即使您的用户角色包含所需的权限,您在执行 ServiceNow 操作时也可能会遇到问题。 为避免此问题,请创建专用角色并分配所需权限。

创建新角色

  1. 依次前往用户管理 > 角色
  2. 点击 New(新建)。
  3. 为新角色指定名称,例如 database_admin_restricted
  4. (可选)输入说明。
  5. 点击提交

为进行身份验证的用户分配新角色

  1. 依次前往用户管理 > 用户
  2. 选择需要受限访问权限的用户。
  3. 在用户记录中,前往角色相关列表。
  4. 角色相关列表中,点击修改
  5. 集合列中,找到并选择刚创建的角色。
  6. 点击添加,将该角色移至角色列表
  7. 点击保存

实现行级权限

  1. 依次前往系统安全性 > 访问权限控制 (ACL)
  2. 点击 New(新建)。
  3. 配置以下字段:

    • 类型:选择记录
    • 操作:选择读取
    • 姓名
      • 在第一个下拉菜单中,选择 sys_db_object 表。
      • 在第二个下拉菜单中,选择
    • 需要角色:在插入新行字段中,搜索并选择新创建的角色。
  4. 点击提交

  5. 重复上述步骤,为 sys_glide_objectsys_dictionary 表实现行级权限。

实现字段级权限

  1. 依次前往系统安全性 > 访问权限控制 (ACL)
  2. 点击 New(新建)。
  3. 配置以下字段:
    • 类型:选择记录
    • 操作:选择读取
    • 姓名
      • 在第一个下拉菜单中,选择目标表,例如 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. 配置页面上,从选择实例下拉列表中选择 ServiceNow 数据存储区。
    立即设置服务
    配置 ServiceNow 设置
  6. 为所选连接器实例输入授权信息:

    1. 输入您在创建 OAuth 端点时检索到的新客户端 ID新客户端密钥
    2. 输入 ServiceNow 授权 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. 可选:选择包含系统表,以允许访问 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. 为 Google 助理启用 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。

添加操作后,助理可以代表最终用户在应用中执行这些操作。用户首次要求助理执行 ServiceNow 操作时,系统会要求用户授权访问其 ServiceNow 账号。如需使用助理,用户必须拥有 Gemini Enterprise Plus 许可。