Guia do desenvolvedor da Open API de tíquete de problema
Use a API de abertura de tíquete de problema para gerenciar informações de tíquete entre sistemas de registro de tíquete externos e a Now Platform. Esta API cria, atualiza e recupera dados das tabelas Caso [sn_customerservice_case] e Incidente [incidente].
Este guia do desenvolvedor fornece informações sobre como estender o API de abertura de tíquete de problema para fazer várias personalizações.
Como estender a API de abertura de tíquete de problema
A API de abertura de tíquete de problema pode ser estendida editando inclusões de script.
TMFTroubleTicketAPIConstants: contém constantes e informações de parâmetro necessárias.TMFTroubleTicketAPIUtil: contém funções para lidar com solicitações POST, GET e PATCH.TroubleTicketProcessorOOB: contém funções de ajuda que oferecem suporte a funções em TMFTroubleTicketAPIUtil.TroubleTicketProcessor: um arquivo de inclusão de script vazio. Use este arquivo para definir as funções que você deseja substituir de TroubleTicketProcessorOOB.
Estenda a API de abertura de tíquete de problema para fazer as seguintes personalizações.
Parâmetros obrigatórios
TMFTroubleTicketAPIConstants.TROUBLE_TICKET_CREATION_SCHEMA: define os parâmetros do corpo da solicitação necessários para criar um tíquete.TMFTroubleTicketAPIConstants.TROUBLE_TICKET_UPDATE_SCHEMA: define os parâmetros do corpo da solicitação necessários para atualizar um tíquete.
// 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"
]
};Solicitar validação do corpo
verdadeiro por padrão. Essas funções são chamadas em TMFTroubleTicketAPIUtil. verifiqueGetRequestForCase()— Chamado porprocessGetRequestForCase().verifiquePatchRequestForCase()— Chamado porprocessPatchRequestForCase().verifiquePostRequestForCase()— Chamado porprocessPostRequestForCase().verifiqueGetRequestForIncident()— Chamado porprocessGetRequestForIncident().verifiquePatchRequestForIncident()— Chamado porprocessPatchRequestForIncident().verifiquePostRequestForIncident()— Chamado porprocessPostRequestForIncident().
falso, ela interromperá a operação de API. Para aplicar a validação personalizada, substitua as funções auxiliares TroubleTicketProcessorOOB criando funções com nomes e parâmetros idênticos em TroubleTicketProcessor. Essas novas funções de TroubleTicketProcessor serão chamadas por TMFTroubleTicketAPIUtil para substituir as funções auxiliares padrão de 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'
});
Operações REST adicionais
Para criar operações adicionais além das operações GET, PATCH e POST existentes, crie recursos REST de script adicionais para a API Aberta de tíquete de problema. A lógica dos novos recursos REST de script deve ser consistente com as operações existentes. Defina funções para as novas operações em TMFTroubleTicketAPIUtil.
Mapeamento de campo
Ao criar ou atualizar registros, a API mapeia os parâmetros do corpo da solicitação para os campos de registro de caso e incidente. Ao recuperar registros, a API mapeia campos de registro para atributos de objeto de resposta.
mapPatchRequestToCase()mapPostRequestToCase()mapPatchRequestToIncident()mapPostRequestToIncident()
createGetResponseForCase()createPatchResponseForCase()createPostResponseForCase()createGetResponseForIncident()createPatchResponseForIncident()createPostResponseForIncident()
Personalize mapeamentos de campo para adicionar e recuperar dados para campos adicionais de caso e incidente ou para alterar os mapeamentos padrão dos campos. Para personalizar os mapeamentos de campo, substitua as funções de mapeamento TroubleTicketProcessorOOB criando funções com nomes e parâmetros idênticos em TroubleTicketProcessor. Essas novas funções de TroubleTicketProcessor serão usadas por TMFTroubleTicketAPIUtil para substituir as funções de mapeamento padrão de 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'
});
Lógica de mapeamento para campos de opção
Os campos Estado, Prioridadee contact_type são campos de opção, em que cada opção é composta por um rótulo e um valor correspondente. Por exemplo, se o campo Estado estiver definido como Novo, o rótulo será Novo e o valor será 1. O mapeamento entre rótulos e valores de opção pode ser alterado substituindo as funções de mapeamento do campo de opção.
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'
});