启用 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 提供两个主要网站:
- 主 ServiceNow 网站:您的 ServiceNow 实例对应的网站。
- 管理用户、群组和系统管理任务。
- 网址:您的 ServiceNow 实例的网址。
- 使用管理员凭证登录。
- 开发者网站:
- 配置知识库、设置工作流和开发自定义应用。
- 网址:
https://developer.service-now.com
。 - 使用您的 ServiceNow ID 登录。
创建 OAuth 端点
如需创建 OAuth 端点,请执行以下操作:
- 以管理员权限登录主 ServiceNow 实例。
- 依次前往全部 > 系统 OAuth > 应用注册。
- 点击新建,然后选择为外部客户端创建 OAuth API 端点。检索客户端 ID 和客户端密钥。
- 填写必填信息:
- 名称:唯一名称。
- 重定向网址:
https://vertexaisearch.cloud.google.com/oauth-redirect
- 点击提交以创建凭证。
- 提交后,点击名称以查看客户端密钥。
- 密钥已被遮盖。点击密钥旁边的锁形图标,即可取消遮盖并查看密钥。
- 保留客户端 ID 和密钥的副本,以便在需要时使用。
- 前往
developer.service-now.com
,然后点击管理实例密码。 - 保留用户名和密码的副本,以便在需要时使用。
- 在此阶段,设置 ServiceNow 数据存储区所需的所有五项信息均已准备就绪。如果对使用管理员角色拉取数据不存在顾虑,请继续创建数据存储区。
设置角色和权限
您必须具有安全管理员角色才能创建和管理用户。如果您没有此角色,请点击个人资料下的提升角色,将您的角色提升为 security_admin。选择 security_admin 角色,然后点击更新。创建角色和管理用户需要 security_admin 角色。
- 创建实施 ACL 规则的自定义角色:
- 依次前往全部 > 用户管理 > 角色。
- 点击新建以创建新角色。
- 选择一个名称,然后点击提交。
- 依次前往系统安全性 > 访问权限控制 (ACL),以创建新的 ACL 规则。
- 点击新建以创建新的 ACL 规则。
- 选择一个角色,例如
sys_user_role
。 - 点击提交,然后分配角色。
- 重复此过程,直到授予所有表的访问权限。连接器需要访问每个实体的以下表才能成功运行:
- 事件:
incident
。 - 目录商品:
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
。 - 知识:
kb_knowledge
、kb_knowledge_base
、kb_uc_can_read_mtom
、kb_uc_can_contribute_mtom
。 - 附件:所有列出的项目。
- 身份:
sys_user_role
、sys_user_has_role
、sys_user_group
、sys_user_grmember
、sys_user
。 - 会随着新条件的提取而更新:
core_company
、cmn_location
、cmn_department
。 - 用户条件:
user_criteria
。
- 事件:
- 在搜索栏中前往
sys_security_acl_role_list.do
,验证所有 ACL 是否都已更新。 - 选择要验证的角色。
- 确认已向所选角色分配所有必需的 ACL。
- 向服务账号授予角色:
- 依次前往全部 > 用户管理 > 用户,然后选择相应用户。
- 找到要授予角色的用户,然后选择该用户。
- 如果没有可用用户,请依次前往系统安全性 > 用户和群组 > 用户。
- 点击新建,在用户表中创建新的服务账号。
- 选中仅限 Web 服务访问复选框。
- 前往页面底部的角色表格。
- 点击右侧的修改。
- 向用户授予之前创建的角色,并将其分配给用户。根据创建的角色类型,选择相应的角色并进行分配。
- 获取用户的用户名和密码。在同一页面上,点击设置密码。
- 自动生成密码并将其保存以备后用:
- 用户 ID:
manager
。 - 密码:输入自动生成的密码。
- 用户 ID:
创建专用角色并分配 ACL
当您使用非管理员用户角色时,即使您的用户角色包含所需的权限,您在执行 ServiceNow 操作时也可能会遇到问题。 为避免此问题,请创建专用角色并分配所需权限。
创建新角色
- 依次前往用户管理 > 角色。
- 点击 New(新建)。
- 为新角色指定名称,例如
database_admin_restricted
。 - (可选)输入说明。
- 点击提交。
为进行身份验证的用户分配新角色
- 依次前往用户管理 > 用户。
- 选择需要受限访问权限的用户。
- 在用户记录中,前往角色相关列表。
- 在角色相关列表中,点击修改。
- 在集合列中,找到并选择刚创建的角色。
- 点击添加,将该角色移至角色列表。
- 点击保存。
实现行级权限
- 依次前往系统安全性 > 访问权限控制 (ACL)。
- 点击 New(新建)。
配置以下字段:
- 类型:选择记录。
- 操作:选择读取。
- 姓名:
- 在第一个下拉菜单中,选择 sys_db_object 表。
- 在第二个下拉菜单中,选择无。
- 需要角色:在插入新行字段中,搜索并选择新创建的角色。
点击提交。
重复上述步骤,为 sys_glide_object 和 sys_dictionary 表实现行级权限。
实现字段级权限
- 依次前往系统安全性 > 访问权限控制 (ACL)。
- 点击 New(新建)。
- 配置以下字段:
- 类型:选择记录。
- 操作:选择读取。
- 姓名:
- 在第一个下拉菜单中,选择目标表,例如 sys_db_object。
- 在第二个下拉菜单中,对表中的所有字段应用权限,或选择特定字段名称,例如 name。
- 需要角色:在插入新行字段中,搜索并选择新创建的角色。
- 点击提交。
- 重复上述步骤,为 sys_glide_object 和 sys_dictionary 表中的特定字段或所有字段实现字段级权限。
配置员工池
按照说明设置员工池,并采用以下配置之一:
配置 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 操作
如需使用控制台向应用添加操作,请执行以下操作:
- 在 Google Cloud 控制台中,前往 Agent Builder 页面。
- 在导航菜单中,点击操作。
- 点击添加操作。
- 如需选择 ServiceNow 作为操作的来源,请在 ServiceNow 卡片中点击关联。
- 在配置页面上,从选择实例下拉列表中选择 ServiceNow 数据存储区。
配置 ServiceNow 设置 为所选连接器实例输入授权信息:
- 输入您在创建 OAuth 端点时检索到的新客户端 ID 和新客户端密钥。
- 输入 ServiceNow 授权 URI。请使用格式
https://<var>INSTANCE_NAME</var>.service-now.com/oauth_auth.do
。 - 输入 ServiceNow 目标 URI。请使用格式
https://<var>INSTANCE_NAME</var>.service-now.com
。 - 输入 ServiceNow 令牌 URI。请使用格式
https://<var>INSTANCE_NAME</var>.service-now.com/oauth_token.do
。 - 输入 ServiceNow 管理员的用户账号和密码。
可选:选择启用 PKCE 支持,为应用添加额外的安全层。
可选:选择包含系统表,以允许访问 ServiceNow 的底层系统信息(系统表)。请仔细考虑后再选择此选项,并且仅在绝对必要时才选择此选项。
选择要启用的 ServiceNow 操作。
点击完成设置。您的操作会显示在操作页面上。操作需要几分钟时间才能在应用中生效。
使用 API 配置 ServiceNow 操作
如需使用 API 向应用添加操作,请执行以下操作。
为操作创建 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。
更新连接器以包含操作配置。
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 网站的实例网址。
为 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 许可。