- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2024 09:26 AM
Hi folks,
Working on a script to bring in some JSON from a webhook and populate a table with it. One of the JSON fields is called 'class' and when I reference it in my script, I am getting the error below:
and it breaks another script I am working on to raise incidents:
I loaded my script into an online JavaScript checker and it came back clean so I suspect it is something with the way ServiceNow is handling the script. Here is my code:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var bodyString = request.body.dataString + '';
var requestObj = JSON.parse(bodyString + '');
var database = new GlideRecord('u_rubrik_notifications');
database.initialize();
database.setValue('u_class',requestObj.class); //This is the line that breaks the script
database.setValue('u_summary',requestObj.summary);
database.setValue('u_severity',requestObj.severity);
database.setValue('u_source',requestObj.source);
database.setValue('u_location',requestObj.custom_details.location);
database.setValue('u_timestamp',requestObj.timestamp);
database.setValue('u_audituserid',requestObj.custom_details.auditUserId);
database.setValue('u_auditusername',requestObj.custom_details.auditUserName);
database.setValue('u_clusterid',requestObj.custom_details.clusterId);
database.setValue('u_id',requestObj.custom_details.id);
database.setValue('u_seriesid',requestObj.custom_details.seriesId);
database.setValue('u_status',requestObj.custom_details.status);
database.setValue('u_errorcode',requestObj.custom_details.errorCode);
database.setValue('u_errorid',requestObj.custom_details.errorId);
database.setValue('u_errorreason',requestObj.custom_details.errorReason);
database.setValue('u_errorremedy',requestObj.custom_details.errorRemedy);
database.setValue('u_objectid',requestObj.custom_details.objectId);
database.setValue('u_objectname',requestObj.custom_details.objectName);
database.setValue('u_objecttype',requestObj.custom_details.objectType);
database.insert();
})(request, response);
Here is a sample of the JSON we are receiving:
{
"summary":"Started replicating logs for Microsoft SQL Server Database 'fakeDB' on 'MY-FAKESERVER\\\\MYARCHIVE' from 'MY-CLUSTER' to 'CLUSTER-NAME'",
"source":"some-system-id | some-other-system-id",
"severity":"info",
"timestamp":"2024-02-14T14:28:51.821Z",
"class":"Replication",
"custom_details":{"seriesId":"4c4de3e2-e512-4039-af47-7a29d88363c5",
"id":"59575c16-1c9f-4b3a-93d6-d904653892bc",
"type":"Event",
"objectId":"fdf2458a-039c-5d34-bc03-667da1800a3e",
"objectName":"fakeDB",
"objectType":"Mssql",
"status":"Running",
"clusterId":"some-other-randon-string-of-characters",
"clusterName":"MY-CLUSTER",
"eventName":"Mssql.LogReplicationStarted",
"errorId":"",
"errorCode":"",
"errorRemedy":"",
"errorReason":"",
"auditUserName":"",
"auditUserId":"",
"location":"MY-LOCATION\\MYARCHIVE",
"url":""}
}
If anyone has an idea how to make this work in ServiceNow, I would be very grateful.
Thanks,
Ken
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2024 10:59 AM
We were able to get it to work like so:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var bodyString = request.body.dataString + '';
var requestObj = JSON.parse(bodyString + '');
var bodyStringClass = bodyString.split('class":"')[1].split('"')[0];
var database = new GlideRecord('u_rubrik_notifications');
database.initialize();
database.setValue('u_class',bodyStringClass);
database.setValue('u_summary',requestObj.summary);
database.setValue('u_severity',requestObj.severity);
database.setValue('u_source',requestObj.source);
database.setValue('u_location',requestObj.custom_details.location);
database.setValue('u_timestamp',requestObj.timestamp);
database.setValue('u_audituserid',requestObj.custom_details.auditUserId);
database.setValue('u_auditusername',requestObj.custom_details.auditUserName);
database.setValue('u_clusterid',requestObj.custom_details.clusterId);
database.setValue('u_id',requestObj.custom_details.id);
database.setValue('u_seriesid',requestObj.custom_details.seriesId);
database.setValue('u_status',requestObj.custom_details.status);
database.setValue('u_errorcode',requestObj.custom_details.errorCode);
database.setValue('u_errorid',requestObj.custom_details.errorId);
database.setValue('u_errorreason',requestObj.custom_details.errorReason);
database.setValue('u_errorremedy',requestObj.custom_details.errorRemedy);
database.setValue('u_objectid',requestObj.custom_details.objectId);
database.setValue('u_objectname',requestObj.custom_details.objectName);
database.setValue('u_objecttype',requestObj.custom_details.objectType);
database.insert();
})(request, response);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2024 10:34 AM
Hi Ken,
Try use bracket notation:
database.setValue('u_class',requestObj[class]);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2024 10:52 AM
Hi Brad,
Thanks for you help. I am getting the following:
Best,
Ken
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2024 10:59 AM
We were able to get it to work like so:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var bodyString = request.body.dataString + '';
var requestObj = JSON.parse(bodyString + '');
var bodyStringClass = bodyString.split('class":"')[1].split('"')[0];
var database = new GlideRecord('u_rubrik_notifications');
database.initialize();
database.setValue('u_class',bodyStringClass);
database.setValue('u_summary',requestObj.summary);
database.setValue('u_severity',requestObj.severity);
database.setValue('u_source',requestObj.source);
database.setValue('u_location',requestObj.custom_details.location);
database.setValue('u_timestamp',requestObj.timestamp);
database.setValue('u_audituserid',requestObj.custom_details.auditUserId);
database.setValue('u_auditusername',requestObj.custom_details.auditUserName);
database.setValue('u_clusterid',requestObj.custom_details.clusterId);
database.setValue('u_id',requestObj.custom_details.id);
database.setValue('u_seriesid',requestObj.custom_details.seriesId);
database.setValue('u_status',requestObj.custom_details.status);
database.setValue('u_errorcode',requestObj.custom_details.errorCode);
database.setValue('u_errorid',requestObj.custom_details.errorId);
database.setValue('u_errorreason',requestObj.custom_details.errorReason);
database.setValue('u_errorremedy',requestObj.custom_details.errorRemedy);
database.setValue('u_objectid',requestObj.custom_details.objectId);
database.setValue('u_objectname',requestObj.custom_details.objectName);
database.setValue('u_objecttype',requestObj.custom_details.objectType);
database.insert();
})(request, response);