- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-04-2023 07:28 AM - edited 03-04-2023 07:29 AM
Hi All,
I have created the Scripted REST API and provide the API and payload to the 3rd party. But when I try to open the file from the Incident table I am getting
I am not able to open the file but file is attached to sys_attachment table
Tried with the different content types. I am facing this issue for Docs, Excl and Images.
Script is:
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var requestBody = request.body.dataString;
var requestBody1 = request.body.data;
var parser = new global.JSON();
var parsedData = parser.decode(requestBody);
var number = parsedData.incidentNumber;
var fileName = parsedData.fileName;
var fileContentType = parsedData.contentType;
var fileData = parsedData.fileData;
var rec = new GlideRecord('incident');
rec.addQuery('number', number);
rec.query();
if (rec.next()) {
var sa = new GlideSysAttachment();
// sa.write(rec, fileName, fileContentType, fileData);
sa.write(rec, fileName, fileContentType, GlideStringUtil.base64Decode(fileData));
var responseBody = {};
responseBody.incNumber = number;
responseBody.status = "Success";
response.setBody(responseBody);
} else {
var responseBodyFailure = {};
responseBodyFailure.status = "Failure";
response.setBody(responseBodyFailure);
}
})(request, response);
And Payload
{
"incidentNumber": "INC4969852",
"fileName": "test_6.doc",
"contentType": "application/octet-stream",
"fileData": ""
}
Please anyone provide me the inputs.
Thanks in advance,
Vinuth
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2023 01:33 AM
is 3rd party sending proper base64 encoded data?
If yes then try this
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var requestBody = request.body.dataString;
var requestBody1 = request.body.data;
var parser = new global.JSON();
var parsedData = parser.decode(requestBody);
var number = parsedData.incidentNumber;
var fileName = parsedData.fileName;
var fileContentType = parsedData.contentType;
var fileData = parsedData.fileData;
var rec = new GlideRecord('incident');
rec.addQuery('number', number);
rec.query();
if (rec.next()) {
var ecc = new GlideRecord('ecc_queue');
ecc.initialize();
ecc.agent = "AttachmentCreator";
ecc.topic = "AttachmentCreator";
ecc.name = fileName + ":" + fileContentType;
ecc.source = rec.getTableName() + ":" + rec.sys_id;
ecc.payload = fileData;
ecc.insert();
var responseBody = {};
responseBody.incNumber = number;
responseBody.status = "Success";
response.setBody(responseBody);
} else {
var responseBodyFailure = {};
responseBodyFailure.status = "Failure";
response.setBody(responseBodyFailure);
}
})(request, response);
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-04-2023 09:58 AM
Hi, I'm seeing you are parsing the attachment data in scripted API. I recommend to use ECC queue table. When you are parsing the attachment data from scripted API add a code to send it to ecc _queue table. But you should follow the syntax which field should have require value. I.e Attachment Creator is used , table name: sys_id of the record and send the base64 value in payload.
You can check the syntax in the Google or ServiceNow article.
Suresh.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2023 06:54 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2023 07:52 AM
Hi, Use the below link and follow the same syntax to achieve it
Suresh.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2023 01:26 AM
Hi @ersureshbe
I am using Scripted REST API, can you please provide example using Scripted REST API.
Thanks,
Vinuth