Trouble Ticket Open API 개발자 가이드

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 11분
  • 문제 티켓 오픈 API를 사용하여 외부 티켓팅 시스템과 ServiceNow AI Platform. 이 API는 케이스 [sn_customerservice_case] 및 인시던트 [incident] 테이블에서 데이터를 생성, 업데이트 및 검색합니다.

    이 개발자 가이드에서는 다양한 사용자 지정을 위해 확장하는 문제 티켓 오픈 API 방법에 대한 정보를 제공합니다.

    문제 티켓 오픈 API 확장

    문제 티켓 열기 API는 스크립트 포함을 편집하여 확장할 수 있습니다.

    이러한 스크립트 포함은 변경의 결과를 이해하는 경우에만 편집해야 합니다.
    • TMFTroubleTicketAPIConstants: 상수 및 필수 매개변수 정보를 포함합니다.
    • TMFTroubleTicketAPIUtil: POST, GET 및 PATCH 요청을 처리하는 함수를 포함합니다.
    • TroubleTicketProcessorOOB: TMFTroubleTicketAPIUtil의 함수를 지원하는 도우미 함수를 포함합니다.
    • TroubleTicketProcessor: 빈 스크립트 포함 파일입니다. 이 파일을 사용하여 TroubleTicketProcessorOOB에서 재정의할 함수를 정의합니다.

    문제 티켓 열기 API를 확장하여 다음과 같이 사용자 지정합니다.

    필수 매개변수

    필요한 요청 본문 매개 변수를 변경하려면 TMFTroubleTicketAPIConstants 스크립트 포함을 업데이트합니다. 기본적으로 티켓(POST)을 만들기 위한 요청 본문에는 매개변수 description, severity, 및 ticketType가 필요합니다. 기본적으로 티켓 업데이트 요청 본문(PATCH)에는 필수 매개변수가 없습니다.
    • TMFTroubleTicketAPIConstants.TROUBLE_TICKET_CREATION_SCHEMA: 티켓을 만드는 데 필요한 요청 본문 매개변수를 설정합니다.
    • TMFTroubleTicketAPIConstants.TROUBLE_TICKET_UPDATE_SCHEMA: 티켓을 업데이트하는 데 필요한 요청 본문 매개변수를 설정합니다.
    이 예에서 티켓을 생성하려면 , severity, statusticketType 매개변수가 description필요합니다.
    // TMFTroubleTicketAPIConstants
    TMFTroubleTicketAPIConstants.TROUBLE_TICKET_CREATION_SCHEMA = {
        "title": "CreateTroubleTicket",
        "type": "object",
        "properties": {
            "description": {
                "type": "string"
            },
            "severity": {
                "type": "string"
            },
            "status": {
                "type": "string"
            },
            "ticketType": {
                "type": "string"
            }
        },
        "required": [
            "description",
            "severity",
            "status",
            "ticketType"
        ]
    };

    요청 본문 확인

    요청 본문에 대한 추가 유효성 검사를 수행하려면 TroubleTicketProcessorOOB 함수를 재정의합니다. TroubleTicketProcessorOOB에는 기본적으로 true 를 반환하는 다음과 같은 6개의 도우미 함수가 포함되어 있습니다. 이러한 함수는 TMFTroubleTicketAPIUtil에서 호출됩니다.
    • verifyGetRequestForCase() - processGetRequestForCase()에 의해 호출됩니다.
    • verifyPatchRequestForCase() - processPatchRequestForCase()에 의해 호출됩니다.
    • verifyPostRequestForCase() - processPostRequestForCase()에 의해 호출됩니다.
    • verifyGetRequestForIncident() - processGetRequestForIncident()에 의해 호출됩니다.
    • verifyPatchRequestForIncident() - processPatchRequestForIncident()에 의해 호출됩니다.
    • verifyPostRequestForIncident() - processPostRequestForIncident()에 의해 호출됩니다.
    도우미 함수가 false를 반환하면 API 작업이 중지됩니다. 사용자 지정 유효성 검사를 적용하려면 TroubleTicketProcessor에서 이름과 매개 변수가 동일한 함수를 만들어 TroubleTicketProcessorOOB 도우미 함수를 재정의합니다. 이러한 새 TroubleTicketProcessor 함수는 TMFTroubleTicketAPIUtil에서 호출되어 기본 TroubleTicketProcessorOOB 도우미 함수를 대체합니다.
    이 예제에서 TroubleTicketProcessor의 함수는 TroubleTicketProcessorOOB의 기본 함수를 재정의하여 이름 특성에 대한 유효성 검사를 수행합니다.
    // TroubleTicketProcessor
    var TroubleTicketProcessor = Class.create();
    TroubleTicketProcessor.prototype = Object.extendsObject(TroubleTicketProcessorOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides
    
        verifyPostRequestForCase: function(caseObject, apiResponseProcessor){
            // Returning false terminates the POST request
            // Make sure to assign error message and reason
            if (caseObject.name != "Hello world") {
                apiResponseProcessor.setMessage(TMFTroubleTicketAPIConstants.MESSAGES.CASE_CREATION_FAILURE);
                apiResponseProcessor.setReason("No reason needed");
                return false;
            }
        },
    
        type: 'TroubleTicketProcessor'
    });
    

    추가 REST 작업

    기존의 GET, PATCH 및 POST 작업 외에 추가 작업을 생성하려면 문제 티켓 오픈 API에 대해 스크립팅된 REST 자원을 추가로 생성합니다 . 새로 스크립팅된 REST 자원의 논리는 기존 작업과 일치해야 합니다. TMFTroubleTicketAPIUtil에서 새 작업에 대한 함수를 정의합니다.

    필드 매핑

    기록을 만들거나 업데이트할 때 API는 요청 본문 매개변수를 케이스 및 인시던트 기록 필드에 매핑합니다. 기록을 검색할 때 API는 기록 필드를 응답 객체 속성에 매핑합니다.

    TroubleTicketProcessorOOB에는 PATCH 또는 POST 요청 본문을 케이스 또는 인시던트 GlideRecord에 매핑하는 다음 함수가 포함되어 있습니다.
    • mapPatchRequestToCase()
    • mapPostRequestToCase()
    • mapPatchRequestToIncident()
    • mapPostRequestToIncident()
    TroubleTicketProcessorOOB에는 케이스 또는 인시던트 GlideRecord를 GET, PATCH 또는 POST 요청에 대한 JSON 응답 객체에 매핑하는 다음 함수가 포함되어 있습니다.
    • createGetResponseForCase ()
    • createPatchResponseForCase()
    • createPostResponseForCase ()
    • createGetResponseForIncident()
    • createPatchResponseForIncident()
    • createPostResponseForIncident()

    필드 매핑을 사용자 지정하여 추가 케이스 및 인시던트 필드에 대한 데이터를 추가 및 검색하거나 필드의 기본 매핑을 변경합니다. 필드 매핑을 사용자 지정하려면 TroubleTicketProcessor에서 이름과 매개 변수가 같은 함수를 만들어 TroubleTicketProcessorOOB 매핑 함수를 재정의합니다. 이러한 새로운 TroubleTicketProcessor 함수는 TMFTroubleTicketAPIUtil에서 기본 TroubleTicketProcessorOOB 매핑 함수를 대체하는 데 사용됩니다.

    이 예제에서 TroubleTicketProcessor의 두 함수는 TroubleTicketProcessorOOB의 기본 함수를 재정의하여 설명 필드 매핑을 변경하고 계약 필드에 대한 매핑을 추가합니다.
    // TroubleTicketProcessor
    var TroubleTicketProcessor = Class.create();
    TroubleTicketProcessor.prototype = Object.extendsObject(TroubleTicketProcessorOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides
    
        mapPostRequestToCase: function(caseGr, caseObject){
            // Override default mapping for the Description field
            caseGr.description = "All cases will be created with this description";
            // Add new mapping to the Contract field
            caseGr.contract = caseObject.contract;
         },
    
        createPostResponseForCase: function(caseGr, caseObject){
            // Override default mapping for the description attribute
            caseObject.description = "This will always be the retrieved description";
            // Add new contract attribute to the response object
            caseObject.contract = caseGr.contract;    
        },
    
        type: 'TroubleTicketProcessor'
    });
    

    선택 필드에 대한 매핑 논리

    상태, 우선순위contact_type 필드는 각 선택이 레이블과 해당 값으로 구성된 선택 필드입니다. 예를 들어, 상태 필드가 신규로 설정된 경우 레이블은 신규 이고 값은 1입니다. 선택 레이블과 값 간의 매핑은 선택 필드 매핑 기능을 재정의하여 변경할 수 있습니다.

    TroubleTicketProcessorOOB에는 다음과 같은 선택 필드 매핑 기능이 포함되어 있습니다.
    • transformCaseSeverity()
    • transformCaseChannel()
    • transformCaseStatus()
    • transformIncidentSeverityToUrgency()
    • transformIncidentSeverityToImpact()
    • transformIncidentChannel()
    • transformIncidentStatus()
    TroubleTicketProcessor에서 동일한 이름과 매개 변수를 사용하여 함수를 만들어 TroubleTicketProcessorOOB 선택 필드 매핑 함수를 재정의합니다. 이러한 새로운 TroubleTicketProcessor 함수는 TMFTroubleTicketAPIUtil에서 기본 TroubleTicketProcessorOOB 선택 필드 매핑 함수를 대체하는 데 사용됩니다.
    이 예제에서 TroubleTicketProcessor의 함수는 TroubleTicketProcessorOOB의 기본 함수를 재정의하여 상태 필드에 대한 선택 매핑을 변경합니다.
    // TroubleTicketProcessor
    var TroubleTicketProcessor = Class.create();
    TroubleTicketProcessor.prototype = Object.extendsObject(TroubleTicketProcessorOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides
    
        transformCaseStatus: function(status){
            if (status == "Draft")
                return 1;
            else return 10;
        },
    
        type: 'TroubleTicketProcessor'
    });