Trouble Ticket Open API 개발자 가이드
문제 티켓 오픈 API를 사용하여 외부 티켓팅 시스템과 Now Platform 간의 티켓 정보를 관리합니다. 이 API는 케이스 [sn_customerservice_case] 및 인시던트 [incident] 테이블에서 데이터를 생성, 업데이트 및 검색합니다.
이 개발자 가이드에서는 다양한 사용자 지정을 위해 확장하는 문제 티켓 오픈 API 방법에 대한 정보를 제공합니다.
문제 티켓 오픈 API 확장
문제 티켓 열기 API는 스크립트 포함을 편집하여 확장할 수 있습니다.
TMFTroubleTicketAPIConstants: 상수 및 필수 매개변수 정보를 포함합니다.TMFTroubleTicketAPIUtil: POST, GET 및 PATCH 요청을 처리하는 함수를 포함합니다.TroubleTicketProcessorOOB: TMFTroubleTicketAPIUtil의 함수를 지원하는 도우미 함수를 포함합니다.TroubleTicketProcessor: 빈 스크립트 포함 파일입니다. 이 파일을 사용하여 TroubleTicketProcessorOOB에서 재정의할 함수를 정의합니다.
문제 티켓 열기 API를 확장하여 다음과 같이 사용자 지정합니다.
필수 매개변수
TMFTroubleTicketAPIConstants.TROUBLE_TICKET_CREATION_SCHEMA: 티켓을 만드는 데 필요한 요청 본문 매개변수를 설정합니다.TMFTroubleTicketAPIConstants.TROUBLE_TICKET_UPDATE_SCHEMA: 티켓을 업데이트하는 데 필요한 요청 본문 매개변수를 설정합니다.
// 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"
]
};요청 본문 확인
true 를 반환하는 다음과 같은 6개의 도우미 함수가 포함되어 있습니다. 이러한 함수는 TMFTroubleTicketAPIUtil에서 호출됩니다. verifyGetRequestForCase()-processGetRequestForCase()에 의해 호출됩니다.verifyPatchRequestForCase()-processPatchRequestForCase()에 의해 호출됩니다.verifyPostRequestForCase()-processPostRequestForCase()에 의해 호출됩니다.verifyGetRequestForIncident()-processGetRequestForIncident()에 의해 호출됩니다.verifyPatchRequestForIncident()-processPatchRequestForIncident()에 의해 호출됩니다.verifyPostRequestForIncident()-processPostRequestForIncident()에 의해 호출됩니다.
false를 반환하면 API 작업이 중지됩니다. 사용자 지정 유효성 검사를 적용하려면 TroubleTicketProcessor에서 이름과 매개 변수가 동일한 함수를 만들어 TroubleTicketProcessorOOB 도우미 함수를 재정의합니다. 이러한 새 TroubleTicketProcessor 함수는 TMFTroubleTicketAPIUtil에서 호출되어 기본 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는 기록 필드를 응답 객체 속성에 매핑합니다.
mapPatchRequestToCase()mapPostRequestToCase()mapPatchRequestToIncident()mapPostRequestToIncident()
createGetResponseForCase ()createPatchResponseForCase()createPostResponseForCase ()createGetResponseForIncident()createPatchResponseForIncident()createPostResponseForIncident()
필드 매핑을 사용자 지정하여 추가 케이스 및 인시던트 필드에 대한 데이터를 추가 및 검색하거나 필드의 기본 매핑을 변경합니다. 필드 매핑을 사용자 지정하려면 TroubleTicketProcessor에서 이름과 매개 변수가 같은 함수를 만들어 TroubleTicketProcessorOOB 매핑 함수를 재정의합니다. 이러한 새로운 TroubleTicketProcessor 함수는 TMFTroubleTicketAPIUtil에서 기본 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입니다. 선택 레이블과 값 간의 매핑은 선택 필드 매핑 기능을 재정의하여 변경할 수 있습니다.
transformCaseSeverity()transformCaseChannel()transformCaseStatus()transformIncidentSeverityToUrgency()transformIncidentSeverityToImpact()transformIncidentChannel()transformIncidentStatus()
// 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'
});