在 ServiceNow 中集成预配置的服务代理

您可以将预配置的服务代理直接嵌入 ServiceNow 桌面,并根据上下文了解底层平台。 这种集成有助于应用程序提供更好的响应,并有助于进一步简化 AI 代理的工作流程。

先决条件

开始之前,您必须具有以下环境和控制台:

  • 连接到 ServiceNow 环境的适用于服务人员的 Copilot 实例。
  • ServiceNow 生产环境或试用环境。

此外,要使客户服务代表能够使用 ServiceNow 中的代理,您必须为他们分配基本用户和全渠道代理角色。 了解更多信息,请参阅为用户指定安全角色

在 ServiceNow 中集成代理

  1. 复制服务用 Copilot 小组件 URL

    1. 登录到您的服务用 Copilot 实例。
    2. 在站点地图上,选择渠道,然后选择 ServiceNow
    3. 从 <iframe src= 之后开始复制 URL。 例如,https://copilotforservice-test.azureedge.net/widget/index.html?dynamicsUrl=https://XXXXXX.crm10.dynamics.com
    4. 在本地保存 URL,然后复制该 URL 并将其粘贴到下一步中。
  2. 安装知识 API 插件

    1. 在您的 ServiceNow 环境中,选择全部,搜索插件,然后选择系统定义>插件
    2. 搜索 Knowledge API。 系统应返回 Knowledge API 插件(应用程序 id:sn_km_api)
    3. 选择 Knowledge API 卡片。
    4. 选择安装,然后选择最新版本。
    5. 选择立即安装,然后等待 Knowledge API 安装完成。
  3. 安装 Openframe 插件

    1. 在您的 ServiceNow 环境中,选择全部,搜索插件,然后选择系统定义>插件
    2. 搜索 Openframe。 系统应该返回 openframe 插件(Plugin ID:com.sn_openframe)
    3. 选择安装,开始插件安装。
    4. 选择安装,然后等待安装完成。
  4. 安装 Customer Service 插件

    1. 在您的 ServiceNow 环境中,选择全部,搜索插件,然后选择系统定义>插件
    2. 搜索 com.sn_customerservice。 系统应返回 Customer Service(插件 id:com.sn_customerservice)
    3. 选择安装,开始插件安装。
    4. 选择安装,然后等待安装完成。
  5. 为经典 UI 导航器添加 UI 脚本

    1. 在您的 ServiceNow 环境中,确保您处于全局工作区:选择右上角的地球图标,然后验证应用程序范围是否设置为全局
    2. 选择所有,然后搜索 UI 脚本,然后选择系统 UI>UI 脚本
    3. 选择新建,然后按如下方式填写表格:
      • API 名称:Copilot 打开框架桌面脚本

      • UI 类型:桌面

      • 选中全局复选框。

      • 脚本:复制以下脚本的内容:

        (function () {
          try {
            var logMoniker = "Copilot Navigator UI script: ";
            if (
              !window.parent.navigationListenerAdded &&
              !window.copilotNavigationClassicListenerAdded
            ) {
              console.log(logMoniker + "loading desktop navigator....");
              var payload = {
                url: window.location.href,
                source: "classicUIScript",
                sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                configType: "singleFrame"
              };
              var context = {
                payload: JSON.stringify(payload),
                method: "openframe_communication"
              };
              CustomEvent.fireAll("openframe_request", context);
        
              window.navigation.addEventListener("navigate", (event) => {
                console.log(
                  logMoniker +
                    "desktop PAGE NAVIGATED: " +
                    "\n Old Url: " +
                    window.location.href +
                    "\n New url: " +
                    event.destination.url
                );
        
                var payload = {
                  url: event.destination.url,
                  source: "classicUIScript",
                  sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                  configType: "singleFrame"
                };
                var context = {
                  payload: JSON.stringify(payload),
                  method: "openframe_communication"
                };
                CustomEvent.fireAll("openframe_request", context);
              });
        
              window.copilotNavigationClassicListenerAdded = true;
            } else {
              console.log(logMoniker + "Skipping desktop navigator load....");
            }
          } catch (error) {
            console.log(logMoniker + "Classic UI navigator error");
            console.log(error);
          }
        })();
        
  6. 为工作区导航器添加客户端脚本

    1. 在 ServiceNow 环境中,确保您处于全局工作区:选择地球仪图标,然后确认应用程序范围已设置为全局
    2. 选择全部,然后搜索客户端脚本,然后选择系统定义>客户端脚本
    3. 选择新建,然后按如下方式填写表格:
    • 名称:Copilot 打开框架工作区导航脚本

    • :全局 [全局]

    • UI 类型:移动/服务门户

    • 类型:onLoad

    • 脚本:复制以下脚本的内容:

      function onLoad() {
          var table = g_form.getTableName();
          try {
              if (table == 'incident' || table == 'sys_email' || table == 'sn_customerservice_case' || table == 'interaction') {
                  var logMoniker = "Copilot Navigator Workspaces Client script: ";
      
                  if (!globalThis.copilotNavigationWorkspaceListenerAdded) {
                      console.log(logMoniker + "loading workspace navigator....");
                      var payload = {
                          url: globalThis.window.location.href,
                          source: "workspaceClientScript",
                          sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                          configType: "singleFrame"
                      };
                      var context = {
                          payload: JSON.stringify(payload),
                          method: "openframe_communication"
                      };
                      globalThis.CustomEvent.fireAll("openframe_request", context);
      
                      globalThis.window.navigation.addEventListener("navigate", (event) => {
                          console.log(
                              logMoniker +
                              "Workspace PAGE NAVIGATED: " +
                              "\n Old Url: " +
                              globalThis.window.location.href +
                              "\n New url: " +
                              event.destination.url
                          );
      
                          var payload = {
                              url: event.destination.url,
                              source: "workspaceClientScript",
                              sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                              configType: "singleFrame"
                          };
                          var context = {
                              payload: JSON.stringify(payload),
                              method: "openframe_communication"
                          };
                          globalThis.CustomEvent.fireAll("openframe_request", context);
                      });
      
                      globalThis.copilotNavigationWorkspaceListenerAdded = true;
                  } else {
                      console.log(logMoniker + "Workspace navigator already loaded....");
                  }
              }
          } catch (error) {
              console.error(logMoniker + "Workspace Navigator error");
              console.error(error);
          }
      }
      
  7. 在您的 ServiceNow 环境中,确保您处于全局工作区:选择右上角的地球图标,然后验证应用程序范围是否设置为全局

    1. 选择全部,然后搜索客户端脚本,然后选择系统定义>客户端脚本
    2. 选择新建,然后按如下方式填写表格:
    • 名称:Copilot 开放框架事件表脚本

    • :事件 [事件]

    • UI 类型:桌面

    • 类型:onLoad

    • 脚本:复制以下脚本的内容:

        function onLoad() {
          try {
              var tableName = g_form.getTableName();
              var id = g_form.getUniqueValue();
              var payload = {
                  recordId: id,
                  objectType: tableName,
                  source: "classicClientScript",
                  sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                  configType: "singleFrame"
              };
              var context = {
                  payload: JSON.stringify(payload),
                  method: "openframe_communication"
              };
              CustomEvent.fireAll("openframe_request", context);
          } catch (error) {
              console.log(
                  "Copilot Navigator UI script: CopilotClassicClientScriptCase navigator error"
              );
              console.log(error);
          }
      }
      

    d. 再次选择新建,然后按如下方式填写表格:- 名称:Copilot 打开框架电子邮件表脚本 - :电子邮件 [sys_email] - UI 类型:桌面 - 类型:onLoad

    • 脚本:复制以下脚本的内容:
      function onLoad() {
            try {
                var tableName = g_form.getTableName();
                var id = g_form.getUniqueValue();
                var payload = {
                    recordId: id,
                    objectType: tableName,
                    source: "classicClientScript",
                    sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                    configType: "singleFrame"
                };
                var context = {
                    payload: JSON.stringify(payload),
                    method: "openframe_communication"
                };
                CustomEvent.fireAll("openframe_request", context);
            } catch (error) {
                console.log(
                    "Copilot Navigator UI script: CopilotClassicClientScriptCase navigator error"
                );
                console.log(error);
            }
         }
    

    e. 再次选择新建,然后按如下方式填写表格:

    • 名称:Copilot 开放框架案例表脚本

    • :案例 [sn_customerservice_case]

    • UI 类型:桌面

    • 类型:onLoad

    • 脚本:复制以下脚本的内容:

      function onLoad() {
          try {
              var tableName = g_form.getTableName();
              var id = g_form.getUniqueValue();
              var payload = {
                  recordId: id,
                  objectType: tableName,
                  source: "classicClientScript",
                  sourceId: "b54abfa8-3d78-4aa0-ae3f-1e2ffbc56850",
                  configType: "singleFrame"
              };
              var context = {
                  payload: JSON.stringify(payload),
                  method: "openframe_communication"
              };
              CustomEvent.fireAll("openframe_request", context);
          } catch (error) {
              console.log(
                  "Copilot Navigator UI script: CopilotClassicClientScriptCase navigator error"
              );
              console.log(error);
          }
      }
      
  8. 在 ServiceNow 中配置小组件

    1. 在您的环境中 ServiceNow,选择所有,搜索 OpenFrame,然后选择 Openframe>配置
    2. 在右上角,选择新建
    3. 键入 Microsoft Copilot 作为名称和标题。
    4. 键入 450 作为宽度,键入 600 作为高度。
    5. 选择您要为其启用适用于服务人员的 Copilot 的用户组
    6. 选择 URL 字段旁边的锁图标将其解锁,然后粘贴您之前从适用于服务人员的 Copilot 管理页面保存的适用于服务人员的 Copilot 小组件 URL。
    7. 选择提交
    8. 刷新该页面。 对于您选择的图标,顶部导航栏上应显示适用于服务人员的 Copilot 小组件。
    9. 在您打开适用于服务人员的 Copilot 之前,请确保您的 ServiceNow 页面允许弹出窗口。