send multiple attachments via REST Outbound API
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-02-2022 10:02 PM
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=="
}
}
]
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-02-2022 10:11 PM
Hi,
you will have to form the json object first and then use REST Message
Can you share complete script?
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-02-2022 10:59 PM
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);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-02-2022 11:03 PM
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);
}