トラブルチケットオープン API 開発者ガイド

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:11分
  • トラブルチケットオープン API を使用して、外部チケットシステムと ServiceNow AI Platform の間のチケット情報を管理します。この API は、ケース [sn_customerservice_case] およびインシデント [incident] テーブルのデータを作成、更新、取得します。

    この開発者ガイドでは、 トラブルチケットオープン API を拡張してさまざまなカスタマイズを行う方法について説明します。

    トラブルチケットオープン API の拡張

    Trouble Ticket Open API は、スクリプトインクルードを編集することで拡張できます。

    これらのスクリプトインクルードは、変更の結果を理解した状態でのみ編集する必要があります。
    • TMFTroubleTicketAPIConstants:定数と必須パラメーター情報を記載します。
    • TMFTroubleTicketAPIUtil: POST、GET、および PATCH 要求を処理する関数が含まれています。
    • TroubleTicketProcessorOOB: TMFTroubleTicketAPIUtil の関数をサポートするヘルパー関数が含まれています。
    • TroubleTicketProcessor:空のスクリプトインクルードファイル。このファイルを使用して、TroubleTicketProcessorOOB から上書きする関数を定義します。

    Trouble Ticket Open API を拡張して、次のカスタマイズを行います。

    必要なパラメーター

    必須または不要の要求本文パラメーターを変更するには、TMFTroubleTicketAPIConstants スクリプトインクルードを更新します。デフォルトでは、チケット (POST) を作成するための要求本文には、パラメーター descriptionseverity、および ticketType が必要です。デフォルトでは、チケット (PATCH) を更新するための要求本文には必須パラメーターがありません。
    • TMFTroubleTicketAPIConstants.TROUBLE_TICKET_CREATION_SCHEMA:チケットを作成するために必要な要求本文パラメーターを設定します。
    • TMFTroubleTicketAPIConstants.TROUBLE_TICKET_UPDATE_SCHEMA:チケットを更新するために必要な要求本文パラメーターを設定します。
    この例では、チケットを作成するために descriptionseveritystatus、および ticketType パラメーターが必要です。
    // 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 関数は、デフォルトの TroubleTicketProcessorOOB ヘルパー関数を置き換えるために TMFTroubleTicketAPIUtil によって呼び出されます。
    この例では、TroubleTicketProcessor の関数が TroubleTicketProcessorOOB のデフォルト関数を上書きして、name 属性の検証を実行します。
    // 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 操作以外の操作を追加するには、Trouble Ticket Open 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 関数は、デフォルトの TroubleTicketProcessorOOB マッピング関数を置き換えるために TMFTroubleTicketAPIUtil によって使用されます。

    この例では、TroubleTicketProcessor の 2 つの関数が 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 関数は、デフォルトの TroubleTicketProcessorOOB 選択フィールド マッピング関数を置き換えるために TMFTroubleTicketAPIUtil によって使用されます。
    この例では、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'
    });