Trouble Ticket Open API-Entwicklerleitfaden

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 4 Minuten Lesedauer
  • Verwenden Sie die Trouble Ticket Open-API, um Ticketinformationen zwischen externen Ticketerstellungssystemen und der Now Platform zu verwalten. Diese API erstellt, aktualisiert und ruft Daten aus den Tabellen „Fall“ [sn_customerservice_case] und „Incident“ [incident] ab.

    Dieser Entwicklerleitfaden enthält Informationen zum Erweitern von Trouble Ticket Open-API, um verschiedene Anpassungen vorzunehmen.

    Erweitern der Trouble Ticket Open-API

    Die Open Trouble Ticket API kann durch Bearbeiten von Skripteinbindungen erweitert werden.

    Diese Skripteinbindungen sollten nur bearbeitet werden, wenn die Konsequenzen der Änderungen bekannt sind.
    • TMFTroubleTicketAPIConstants: Enthält Konstanten und erforderliche Parameterinformationen.
    • TMFTroubleTicketAPIUtil: Enthält Funktionen zur Verarbeitung von POST-, GET- und PATCH-Anforderungen.
    • TroubleTicketProcessorOOB: Enthält Hilfsfunktionen, die Funktionen in TMFTroubleTicketAPIUtil unterstützen.
    • TroubleTicketProcessor: Eine leere Skripteinbindungsdatei. Verwenden Sie diese Datei, um alle Funktionen zu definieren, die Sie von TroubleTicketProcessorOOB überschreiben möchten.

    Erweitern Sie die API Trouble Ticket Open, um die folgenden Anpassungen vorzunehmen.

    Erforderliche Parameter

    Um zu ändern, welche Parameter für den Anforderungstext erforderlich sind oder nicht, aktualisieren Sie die Skripteinbindung TMFTroubleTicketAPIConstants. Standardmäßig erfordert der Anforderungstext zum Erstellen eines Tickets (POST) die Parameter description, severityund ticketType. Standardmäßig enthält der Anforderungstext zum Aktualisieren eines Tickets (PATCH) keine erforderlichen Parameter.
    • TMFTroubleTicketAPIConstants.TROUBLE_TICKET_CREATION_SCHEMA: Legt die erforderlichen Anforderungstextparameter fest, um ein Ticket zu erstellen.
    • TMFTroubleTicketAPIConstants.TROUBLE_TICKET_UPDATE_SCHEMA: Legt die erforderlichen Anforderungstextparameter fest, um ein Ticket zu aktualisieren.
    In diesem Beispiel sind die Parameter description, severity, statusund ticketType erforderlich, um ein Ticket zu erstellen.
    // 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"
        ]
    };

    Validierung des Anforderungstexts

    Um eine zusätzliche Validierung für den Anforderungstext durchzuführen, überschreiben Sie die TroubleTicketProcessorOOB-Funktionen. TroubleTicketProcessorOOB enthält die folgenden sechs Hilfsfunktionen, die standardmäßig „ true “ zurückgeben. Diese Funktionen werden in TMFTroubleTicketAPIUtil aufgerufen.
    • überprüfenGetRequestForCase() – Wird von processGetRequestForCase()aufgerufen.
    • überprüfenPatchRequestForCase() – Wird von processPatchRequestForCase()aufgerufen.
    • überprüfenPostRequestForCase() – Wird von processPostRequestForCase()aufgerufen.
    • überprüfenGetRequestForIncident() – Wird von processGetRequestForIncident()aufgerufen.
    • überprüfenPatchRequestForIncident() – Wird von processPatchRequestForIncident()aufgerufen.
    • überprüfenPostRequestForIncident() – Wird von processPostRequestForIncident()aufgerufen.
    Wenn eine Hilfsfunktion falsezurückgibt, wird der API-Vorgang angehalten. Um eine benutzerdefinierte Validierung anzuwenden, überschreiben Sie TroubleTicketProcessorOOB-Hilfsfunktionen, indem Sie Funktionen mit identischen Namen und Parametern in TroubleTicketProcessor erstellen. Diese neuen TroubleTicketProcessor-Funktionen werden von TMFTroubleTicketAPIUtil aufgerufen, um die standardmäßigen TroubleTicketProcessorOOB-Hilfsfunktionen zu ersetzen.
    In diesem Beispiel überschreibt eine Funktion in TroubleTicketProcessor eine Standardfunktion in TroubleTicketProcessorOOB, um eine Validierung für das Namensattribut durchzuführen.
    // 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'
    });
    

    Zusätzliche REST-Vorgänge

    Um zusätzliche Vorgänge zu erstellen, die über die vorhandenen GET-, PATCH- und POST-Vorgänge hinausgehen, erstellen Sie zusätzliche geskriptete REST-Ressourcen für die Trouble Ticket Open-API. Die Logik der neuen geskripteten REST-Ressourcen sollte mit den vorhandenen Vorgängen übereinstimmen. Definieren Sie Funktionen für die neuen Vorgänge in TMFTroubleTicketAPIUtil.

    Feldzuordnung

    Beim Erstellen oder Aktualisieren von Datensätzen ordnet die API Anforderungstextparameter den Fall- und Incident-Datensatzfeldern zu. Beim Abrufen von Datensätzen ordnet die API Datensatzfelder Antwortobjektattributen zu.

    TroubleTicketProcessorOOB enthält die folgenden Funktionen, um einen PATCH- oder POST-Anforderungstext einem Fall- oder Incident-GlideRecord zuzuordnen.
    • mapPatchRequestToCase()
    • mapPostRequestToCase()
    • mapPatchRequestToIncident()
    • mapPostRequestToIncident()
    TroubleTicketProcessorOOB enthält die folgenden Funktionen, um einen Fall- oder Incident-GlideRecord einem JSON-Antwortobjekt für GET-, PATCH- oder POST-Anforderungen zuzuordnen.
    • createGetResponseForCase()
    • erstellenPatchResponseForCase()
    • createPostResponseForCase()
    • erstellenGetResponseForIncident()
    • erstellenPatchResponseForIncident()
    • createPostResponseForIncident()

    Passen Sie die Feldzuordnungen an, um Daten für zusätzliche Fall- und Incident-Felder hinzuzufügen und abzurufen oder um die Standardzuordnungen für Felder zu ändern. Um die Feldzuordnungen anzupassen, überschreiben Sie TroubleTicketProcessorOOB-Zuordnungsfunktionen, indem Sie Funktionen mit identischen Namen und Parametern in TroubleTicketProcessor erstellen. Diese neuen TroubleTicketProcessor-Funktionen werden von TMFTroubleTicketAPIUtil verwendet, um die standardmäßigen TroubleTicketProcessorOOB-Zuordnungsfunktionen zu ersetzen.

    In diesem Beispiel überschreiben zwei Funktionen in TroubleTicketProcessor die Standardfunktionen in TroubleTicketProcessorOOB, um die Feldzuordnung Beschreibung zu ändern und eine Zuordnung für das Feld Vertrag hinzuzufügen.
    // 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'
    });
    

    Zuordnungslogik für Auswahlfelder

    Die Felder State, Priorityund contact_type sind Auswahlfelder, in denen jede Auswahl aus einer Bezeichnung und einem entsprechenden Wert besteht. Beispiel: Wenn das Feld Status auf Neufestgelegt ist, lautet die Bezeichnung Neu und der Wert ist 1. Die Zuordnung zwischen Auswahlbezeichnungen und Werten kann durch Überschreiben der Auswahlfeldzuordnungsfunktionen geändert werden.

    TroubleTicketProcessorOOB enthält die folgenden Zuordnungsfunktionen für Auswahlfelder.
    • transformCaseSeverity()
    • transformCaseChannel ()
    • transformCaseStatus()
    • transformIncidentSeverityToUrgency()
    • transformIncidentSeverityToImpact()
    • transformIncidentChannel()
    • transformIncidentStatus()
    Überschreiben Sie TroubleTicketProcessorOOB-Auswahlfeldzuordnungsfunktionen, indem Sie Funktionen mit identischen Namen und Parametern in TroubleTicketProcessor erstellen. Diese neuen TroubleTicketProcessor-Funktionen werden von TMFTroubleTicketAPIUtil verwendet, um die standardmäßigen TroubleTicketProcessorOOB-Auswahlfeldzuordnungsfunktionen zu ersetzen.
    In diesem Beispiel überschreibt eine Funktion in TroubleTicketProcessor eine Standardfunktion in TroubleTicketProcessorOOB, um die Auswahlzuordnung für das Feld Status zu ändern.
    // 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'
    });