I am unable to send the attached through REST message.

VIKAS MISHRA
Tera Contributor

We have one REST message integration already setup with 3rd party servicenow, but when i am attachinhg one attachment to my SC task then it should triggere that attachmentto 3rd patry sc task but gettoing error "SCTASK0022969 ResponseStatus 500" and "SCTASK0022969 ResponseBody {"error":{"message":"com.glide.rest.util.RESTRuntimeException: The payload is not valid JSON.","detail":""},"status":"failure"}".

 

Not sure what is wrong here, please suggest .

 

Below is the BR using for the same .

(function executeRule(current, previous /*null when async*/ ) {

    //INCIDENT ATTACHMENT
    if (current.table_name == 'incident') {
        var inc = new GlideRecord('incident');
        inc.addQuery('sys_id', current.table_sys_id);
        inc.addQuery('u_external_ticket_no', '!=', '');
        inc.query();
        if (inc.next()) {
            if (current.size_bytes <= 5000000) { // check attachment size < 5MB
                //Convert attachment into base64 format
                var incsa = new GlideSysAttachment();
                var incbinData = incsa.getBytes(current);
                var incbase64Data = GlideStringUtil.base64Encode(incbinData);

                //Send Attachments
                var increquestAttachment = new sn_ws.RESTMessageV2('Ultima', 'addAttachment');

                increquestAttachment.setStringParameterNoEscape('filename', current.file_name);
                increquestAttachment.setStringParameterNoEscape('contenttype', current.content_type);
                increquestAttachment.setStringParameterNoEscape('number', inc.u_external_ticket_no);
                increquestAttachment.setStringParameterNoEscape('b64content', incbase64Data);

                var incresponse = increquestAttachment.execute();
                gs.log(inc.number + " RequestBody " + increquestAttachment.getRequestBody(), 'ultimaINCAttach');
                var incresponseBody = incresponse.getBody();
                gs.log(inc.number + " ResponseBody " + incresponseBody, 'ultimaINCAttach');
                var inchttpStatus = response.getStatusCode();
                gs.log(inc.number + " ResponseStatus " + inchttpStatus, 'ultimaINCAttach');
            } else {
                gs.log("Incident:  " + inc.number + " File Name: " + current.file_name + " Size: " + current.size_bytes + " - Attachment size is more than 5 MB.", 'ultimaINCAttach');
            }
        }
    }

    //INCIDENT TASK ATTACHMENT
    if (current.table_name == 'incident_task') {
        var incTask = new GlideRecord('incident_task');
        incTask.addQuery('sys_id', current.table_sys_id);
        incTask.addQuery('u_external_ticket_no', '!=', '');
        incTask.query();
        if (incTask.next()) {
            if (current.size_bytes <= 5000000) { // check attachment size < 5MB
                //Convert attachment into base64 format
                var inctsksa = new GlideSysAttachment();
                var inctskbinData = inctsksa.getBytes(current);
                var inctskbase64Data = GlideStringUtil.base64Encode(inctskbinData);

                //Send Attachments
                var inctskrequestAttachment = new sn_ws.RESTMessageV2('Ultima', 'addAttachment');

                inctskrequestAttachment.setStringParameterNoEscape('filename', current.getValue('file_name'));
                inctskrequestAttachment.setStringParameterNoEscape('contenttype', current.content_type);
                inctskrequestAttachment.setStringParameterNoEscape('number', incTask.u_external_ticket_no);
                inctskrequestAttachment.setStringParameterNoEscape('b64content', inctskbase64Data);

                var inctskresponse = inctskrequestAttachment.execute();
                gs.log(incTask.number + " RequestBody " + inctskrequestAttachment.getRequestBody(), 'ultimaINCTaskAttach');
                var inctskresponseBody = inctskresponse.getBody();
                gs.log(incTask.number + " ResponseBody " + inctskresponseBody, 'ultimaINCTaskAttach');
                var inctaskhttpStatus = inctskresponse.getStatusCode();
                gs.log(incTask.number + " ResponseStatus " + inctaskhttpStatus, 'ultimaINCTaskAttach');
            } else {
                gs.log("Incident Task:  " + incTask.number + " File Name: " + current.file_name + " Size: " + current.size_bytes + " - Attachment size is more than 5 MB.", 'ultimaINCTaskAttach');
            }
        }
    }

    //SC TASK ATTACHMENT
    if (current.table_name == 'sc_task') {
        var SRTask = new GlideRecord('sc_task');
        SRTask.addQuery('sys_id', current.table_sys_id);
        SRTask.addQuery('u_external_ticket_number', '!=', '');
        SRTask.query();
        if (SRTask.next()) {
            if (current.size_bytes <= 5000000) { // check attachment size < 5MB
                //Convert attachment into base64 format
                var srtsksa = new GlideSysAttachment();
                var srtskbinData = srtsksa.getBytes(current);
                var srtskbase64Data = GlideStringUtil.base64Encode(srtskbinData);
                //  var jsonBody = {};

                //Send Attachments
                var srtaskAttachment = new sn_ws.RESTMessageV2('Ultima Request', 'addAttachment');
                //                 jsonBody.filename = current.getValue('file_name');
                //                 jsonBody.contenttype = current.getValue('content_type');
                //                 jsonBody.ticket_number = SRTask.getValue('number');
                //                 jsonBody.b64content = srtskbase64Data;

                srtaskAttachment.setStringParameterNoEscape('filename', current.file_name);
                srtaskAttachment.setStringParameterNoEscape('contenttype', current.content_type);
                srtaskAttachment.setStringParameterNoEscape('number', SRTask.u_external_ticket_number);
                srtaskAttachment.setStringParameterNoEscape('b64content', srtskbase64Data);
                srtaskAttachment.setRequestBodyFromAttachment(current.sys_id);
				
				//srtaskAttachment.setRequestBody(jsonBody);

                var srtaskresponse = srtaskAttachment.execute();
                //  gs.log(SRTask.number + " RequestBody " + srtaskresponse, 'ultimaSRTaskAttach');
                var srtaskresponseBody = srtaskresponse.getBody();
                gs.log(SRTask.number + " ResponseBody " + srtaskresponseBody, 'ultimaSRTaskAttach');
                var srtaskhttpStatus = srtaskresponse.getStatusCode();
                gs.log(SRTask.number + " ResponseStatus " + srtaskhttpStatus, 'ultimaSRTaskAttach');
            } else {
                gs.log("SR Task:  " + SRTask.number + " File Name: " + current.file_name + " Size: " + current.size_bytes + " - Attachment size is more than 5 MB.", 'ultimaSRTaskAttach');
            }
        }
    }
})(current, previous);

 

Below is the HTTP method of rest message.

VIKASMISHRA_0-1687860714010.png

 

 

3 REPLIES 3

Ankur Bawiskar
Tera Patron
Tera Patron

@VIKAS MISHRA 

similar question was asked sometime ago by another member

Unable to add attachment via api 

Is it the same case with you?

 

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Ankur Bawiskar
Tera Patron
Tera Patron

@VIKAS MISHRA 

you want to transfer files between instances right?

if yes then check these links

Unable to send attachment via REST 

Business rule to send attachment to 3rd Party Tool via REST 

Send attachment via rest message 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

@VIKAS MISHRA 

Hope you are doing good.

Did my reply answer your question?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader