send multiple attachments via REST Outbound API

tanz
Tera Expert

Hi,

I have created a BR on after insert on Incident table to send the attachments. I am facing no issues in sending single attachment. However when I try to send the multiple attachments during the creation of Incident , it does not send. please can you help me with the solution and the scripting part.

if (current.operation() == 'insert') {
            var t = [];
            var base64Data = [];
            var attach = new GlideRecord('sys_attachment');
            attach.addQuery('table_name', 'incident');
            attach.addQuery('table_sys_id', current.sys_id);
            attach.query();
            while (attach.next()) {
                t =attach.file_name.toString();
                var sa = new GlideSysAttachment();
                var binData = sa.getBytes(attach);
                base64Data = GlideStringUtil.base64Encode(binData);
                gs.info('Sap rise attachment ' + t +" "+ base64Data +" "+attach.sys_id);
                r.setStringParameterNoEscape('filename', t);               
                r.setStringParameterNoEscape('data', base64Data);
                //r.setRequestBodyFromAttachment(attach.sys_id);
            }
            }

I am trying to create a payload something like this for multiple attachments:

{

"attachments": [

 

    {

 

      "attachment": {

 

        "filename": "testpayload.txt",

 

        "file": "dGVzdA=="

 

      }

 

    },

 

    {

 

      "attachment": {

 

        "filename": "testpayload2.txt",

 

        "file": "dGVzdA=="

 

      }

 

    }

 

  ]

}

3 REPLIES 3

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

you will have to form the json object first and then use REST Message

Can you share complete script?

Regards
Ankur

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

Hi Ankur,

PFB my script

try{

 var r = new sn_ws.RESTMessageV2('Integration', 'CreateTkt');
            r.setRequestHeader("authorizationToken", "Bearer " + token);//replace token will the value
            r.setRequestHeader("Content-Type", "application/JSON");
            r.setRequestHeader("Accept", "application/JSON");


            if (current.operation() == 'insert') {
            var t = [];
            var base64Data = [];
            var attach = new GlideRecord('sys_attachment');
            attach.addQuery('table_name', 'incident');
            attach.addQuery('table_sys_id', current.sys_id);
            attach.query();
            while (attach.next()) {
                t =attach.file_name.toString();
                var sa = new GlideSysAttachment();
                var binData = sa.getBytes(attach);
                base64Data = GlideStringUtil.base64Encode(binData);
                gs.info('Sap rise attachment ' + t +" "+ base64Data +" "+attach.sys_id);
                r.setStringParameterNoEscape('filename', t);               
                r.setStringParameterNoEscape('data', base64Data);
                //r.setRequestBodyFromAttachment(attach.sys_id);
            }
            } 

            var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();
            gs.log("Response Body : " + responseBody + "  Status Code : " + httpStatus);
            }
         catch (ex) {
            var message = ex.message;
            gs.log(" in Catch loop " + message);
        }

 Hi Ankur,

PFB my complete script:

try {
            var r = new sn_ws.RESTMessageV2('Integration', 'CreateUpdateTkt');
            r.setRequestHeader("authorizationToken", "Bearer " + token);// replace token with value
            r.setRequestHeader("Content-Type", "application/JSON");
            r.setRequestHeader("Accept", "application/JSON");

 if (current.operation() == 'insert') {
            var t = [];
            var base64Data = [];
            var attach = new GlideRecord('sys_attachment');
            attach.addQuery('table_name', 'incident');
            attach.addQuery('table_sys_id', current.sys_id);
            attach.query();
            while (attach.next()) {
                t =attach.file_name.toString();
                var sa = new GlideSysAttachment();
                var binData = sa.getBytes(attach);
                base64Data = GlideStringUtil.base64Encode(binData);
                gs.info('attachment ' + t +" "+ base64Data +" "+attach.sys_id);
                r.setStringParameterNoEscape('filename', t);               
                r.setStringParameterNoEscape('data', base64Data);
                //r.setRequestBodyFromAttachment(attach.sys_id);
            }
            }

           var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();
            gs.log("Response Body : " + responseBody + " Status Code : " + httpStatus);
            }
         catch (ex) {
            var message = ex.message;
            gs.log("in Catch loop " + message);
        }