Need to create a inbound call URL

vinuth v
Tera Expert

Hi All,

 

I am working on one of the integration form and it is inbound call from 3rd party to service now, 

 

Fields need to map in the ServiceNow

        "requested_for": "VINUTH",

        "contact_phone_number": "959165",

        "please_select_priority_level": "P5",

        "is_this_an_account_creation_request": "Yes",

        "short_description": " Test",

        "please_provide_a_description_of_the_request_application_name_for_account_creation": "Apple iPhone",

        "please_provide_a_list_of_users_that_require_an_account": "TEST"

   

 

Note : requested_for field is reference and referring to sys_user table.

 

I tried with the scripted Rest API like below,

 

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

    // implement resource here

    (function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

        var requestBody = request.body.dataString;
        //gs.log("requestBodyrequestBodysr"+requestBody);
        var requestBody1 = request.body.data;
        var parser = new global.JSON();
        var parsedData = parser.decode(requestBody);
        var userRec = new GlideRecord('sys_user');

var userSys_id='';

userRec.addEncodedQuery('nameSTARTSWITH'+requested_for);

userRec.query();

if(userRec.next()){

userSys_id=userRec.getValue('sys_id');

}

        var number = parsedData.requestNumber;
        var requested_for = parsedData.userSys_id;
        var contact_phone_number = parsedData.contact_phone_number;
        var please_select_priority_level = parsedData.please_select_priority_level;
        var is_this_an_account_creation_request = parsedData.is_this_an_account_creation_request;
        var short_description = parsedData.short_description;
        var please_provide_a_description_of_the_request_application_name_for_account_creation = parsedData.please_provide_a_description_of_the_request_application_name_for_account_creation;
        var please_provide_a_list_of_users_that_require_an_account = parsedData.please_provide_a_list_of_users_that_require_an_account;
        var rec = new GlideRecord('sc_req_item');
        rec.addQuery('number', number);
        rec.query();
        if (rec.next()) {

            var responseBody = {};
            responseBody.incNumber = number;
            responseBody.status = "Success";
            response.setBody(responseBody);
        } else {
            var responseBodyFailure = {};
            responseBodyFailure.status = "Failure";
            response.setBody(responseBodyFailure);
        }


    })(request, response);

})(request, response);
 
I tried this in the post man, I am getting like this 
{
    "result": {
        "status""Failure"
    }
}

 

Please any one suggest me,

 

Thanks in advance,

Vinuth

 

1 REPLY 1

Community Alums
Not applicable

Hi @vinuth v 

 

Please try the below code.

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    try {
        var requestBody = request.body.dataString;
        var requestBody1 = request.body.data;
        var parser = new JSON();
        var parsedData = parser.decode(requestBody);

        var number = parsedData.requestNumber;
        var requested_for = parsedData.requested_for;
        var contact_phone_number = parsedData.contact_phone_number;
        var please_select_priority_level = parsedData.please_select_priority_level;
        var is_this_an_account_creation_request = parsedData.is_this_an_account_creation_request;
        var short_description = parsedData.short_description;
        var please_provide_a_description_of_the_request_application_name_for_account_creation = parsedData.please_provide_a_description_of_the_request_application_name_for_account_creation;
        var please_provide_a_list_of_users_that_require_an_account = parsedData.please_provide_a_list_of_users_that_require_an_account;

        var userSys_id = '';
        var userRec = new GlideRecord('sys_user');
        userRec.addQuery('name', requested_for);
        userRec.query();

        if (userRec.next()) {
            userSys_id = userRec.getValue('sys_id');
        }

        var rec = new GlideRecord('sc_req_item');
        rec.addQuery('number', number);
        rec.query();

        if (rec.next()) {
            var responseBody = {};
            responseBody.incNumber = number;
            responseBody.status = "Success";
            response.setStatus(200); 
            response.setBody(responseBody);
        } else {
            var responseBodyFailure = {};
            responseBodyFailure.status = "Failure";
            response.setStatus(404); // Set HTTP status code to 404 Not Found or adjust as needed
            response.setBody(responseBodyFailure);
        }
    } catch (ex) {
        response.setStatus(400);
        var errorResponse = {
            status: "Error",
            message: ex.getMessage()
        };
        response.setBody(errorResponse);
    }
})(request, response);