You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Scripted REST API实现ServiceNow与第三方应用集成的步骤咨询

ServiceNow与第三方应用集成通用步骤
  • 需求梳理与规划:明确集成的业务目标(比如数据同步、流程触发、双向交互),敲定数据字段映射规则、交互频率、权限控制要求,以及异常处理机制(重试、告警等)。
  • 选择集成方式:根据需求选适配方案,比如ServiceNow Store的原生连接器、REST/SOAP API、MID Server(针对内网第三方系统)、事件管理集成等。
  • 配置认证机制:按第三方系统支持的方式配置,常用的有OAuth2.0、Basic Auth、API Key、SAML等,在ServiceNow的System OAuth或Credentials模块创建对应凭证。
  • 搭建集成通道:
    • 原生连接器:直接安装对应应用,按向导配置第三方系统地址、凭证、字段映射。
    • API方式:在ServiceNow或第三方系统中配置API端点,设置请求方法、请求头、参数等。
  • 字段映射与数据转换:用ServiceNow的Transform Maps(导入数据场景)或脚本处理字段映射,搞定数据格式转换(日期、枚举值对应等),确保双方数据兼容。
  • 测试集成链路:分阶段验证:先测认证连通性,再测单条数据交互,最后测批量/高并发场景,确认数据准确、流程触发正常,异常处理符合预期。
  • 上线与监控:正式上线后,用ServiceNow的System Log、Integration Hub Health或第三方工具跟踪集成状态,设置告警规则,及时处理失败任务。
采用Scripted REST API实现集成的具体步骤

1. 在ServiceNow中创建Scripted REST API

  • 进入System Web Services > Scripted REST APIs,点击New。
  • 填写基本信息:名称、API ID(唯一标识,用于端点路径)、描述,勾选Requires authentication并选择已配置的认证方式(OAuth/Basic Auth等)。
  • 保存后,在该API下创建Resource(具体端点):点击New,填写资源名称、HTTP方法(GET/POST/PUT/DELETE)、相对路径(比如/incidents)。

2. 编写资源处理脚本

在Resource的Script标签页编写逻辑,以下是常用场景示例:

  • POST请求创建事件
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    // 获取第三方传入的请求体
    var requestBody = request.body.data;
    
    // 校验必填字段
    if (!requestBody.short_description || !requestBody.caller_id) {
        response.setStatus(400);
        response.setBody({error: "缺少必填字段:short_description或caller_id"});
        return;
    }
    
    // 创建ServiceNow事件记录
    var incidentGR = new GlideRecord('incident');
    incidentGR.initialize();
    incidentGR.short_description = requestBody.short_description;
    incidentGR.caller_id = requestBody.caller_id; // 需传入用户sys_id或可匹配的字段值
    if (requestBody.description) incidentGR.description = requestBody.description;
    
    var incidentSysId = incidentGR.insert();
    
    // 返回响应
    response.setStatus(201);
    response.setBody({
        success: true,
        incident_sys_id: incidentSysId,
        number: incidentGR.number
    });
})(request, response);
  • GET请求查询事件
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    // 获取请求参数
    var incidentNumber = request.queryParams.number;
    
    if (!incidentNumber) {
        response.setStatus(400);
        response.setBody({error: "请提供事件编号参数number"});
        return;
    }
    
    // 查询事件记录
    var incidentGR = new GlideRecord('incident');
    if (incidentGR.get('number', incidentNumber)) {
        var incidentData = {
            number: incidentGR.number,
            short_description: incidentGR.short_description,
            state: incidentGR.state.getDisplayValue(),
            caller_id: incidentGR.caller_id.getDisplayValue(),
            sys_id: incidentGR.sys_id
        };
        response.setBody(incidentData);
    } else {
        response.setStatus(404);
        response.setBody({error: "未找到对应事件"});
    }
})(request, response);

3. 配置API权限

在Scripted REST API的Security标签页,设置允许访问的角色(比如web_service_access_only或自定义角色),确保只有授权的第三方系统能调用。

4. 测试Scripted REST API

  • 用Postman、curl等工具测试:构造请求URLhttps://<你的ServiceNow实例名>.service-now.com/api/<API ID>/<Resource相对路径>,添加认证头后发送请求,验证响应是否符合预期。
  • 在ServiceNow的System Log中查看脚本执行日志,排查错误。

5. 第三方系统对接

  • 第三方系统按照ServiceNow生成的API文档(在Scripted REST API页面点击Generate API Documentation获取),配置请求地址、认证信息、请求体格式,实现调用逻辑。
  • 双方约定异常处理规则:比如请求失败的重试次数、错误码对应处理方式。

内容的提问来源于stack exchange,提问作者Madhuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 14:52:37