Guia do desenvolvedor de API de abertura de tíquete de problemas
Use Abrir API de tíquete de problemas para gerenciar informações de tíquete entre sistemas de tíquete externos e o. ServiceNow AI Platform. Esta API cria, atualiza e recupera dados das tabelas Caso [sn_customerservice_case] e Incidente [incident].
Este guia do desenvolvedor fornece informações sobre como estender o. Abrir API de tíquete de problemas para fazer várias personalizações.
Estender a API de Tíquete de problemas em aberto
. Abrir API de tíquete de problemas pode ser estendido 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 no TMFTroubleTicketAPIUtil.TroubleTicketProcessor: Um arquivo de inclusão de script vazio. Use este arquivo para definir todas as funções que você deseja substituir de TroubleTicketProcessorOOB.
Estenda Abrir API de tíquete de problemas para fazer as personalizações a seguir.
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.TMFTROUBLE TICKETAPICONSTANTS.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"
]
};Validação do corpo da solicitação
verdadeiro por padrão. Essas funções são chamadas em TMFTroubleTicketAPIUtil. VerifyGetRequestForCase()- Chamado porProcessGetRequestForCase().VerifyPatchRequestForCase()- Chamado porProcessPatchRequestForCase().VerifyPostRequestForCase()- Chamado porProcessPostRequestForCase().VerifyGetRequestForIncident()- Chamado porProcessGetRequestForIncident().VerifyPatchRequestForIncident()- Chamado porProcessPatchRequestForIncident().VerifyPostRequestForIncident()- Chamado porProcessPostRequestForIncident().
falso , Interrompe a operação da API. Para aplicar validação personalizada, substitua as funções auxiliares do TroubleTicketProcessorOOB criando funções com nomes e parâmetros idênticos em TroubleTicketProcessor. Essas novas funções do TroubleTicketProcessor serão chamadas pelo TMFTroubleTicketAPIUtil para substituir as funções auxiliares padrão do 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, Criar recursos REST com script adicionais Para a API de Tíquete de problemas em aberto. A lógica dos novos recursos REST com script deve ser consistente com as operações existentes. Defina funções para as novas operações no 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()CriarPostResponseForCase()CreateGetResponseForIncident()CreatePatchResponseForIncident()CreatePostResponseForIncident()
Personalize mapeamentos de campo para adicionar e recuperar dados para campos adicionais de caso e incidente ou para mudar os mapeamentos padrão para 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 do TroubleTicketProcessor serão usadas pelo TMFTroubleTicketAPIUtil para substituir as funções de mapeamento padrão do 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
. Estado , Prioridade e contact_type campos são campos de seleção, em que cada opção é composta por um rótulo e um valor correspondente. Por exemplo, se o Estado o campo está definido como Novo , o rótulo é Novo e o valor é 1 . O mapeamento entre rótulos de opção e valores pode ser alterado substituindo as funções de mapeamento do campo de escolha.
TransformSeveridade do CasoCaso()TransformCaseChannel()TransformCaseStatus()SeverdadeToUrgency()SeverdadeToImpact()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'
});