Need help with multi-line long description in REST API POST.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2018 09:03 AM
I'm trying to figure out the best way to pass along a multi-line long description to a REST API.
I'm using PHP, but i think this is on the Javascript side.
any suggestions for how to parse it on the API side?
Thanks
Given
$messageText = "This is line 1
line 2";
$JSON = '{
"incident": {
"state": "NEW",
"resource": "testing",
"shortDescription": "this is text",
"messageText": "'.$messageText.'",
"ciName": "esmbatchcc",
"groupName": "Data Center Operations",
"catName": "",
"subCat": "",
"correlationID": "",
"severity": "LOW"
},
"version": 1.2
}';
When I send it along I get back ...
java.lang.IllegalArgumentException: Cannot decode: java.io.Strin
just a single line of text I get back my incident, as expected.
The API is this...
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var incidentNumber;
var queryString;
//POST data.
var incident = request.body.data.incident; //The inbound request container object is called "incident".
var callerID = "acgesm"; //Use this UserID
var state = incident.state.toUpperCase(); //Open or Resolved
var resource = incident.resource; //Hostname
var shortDesc = incident.shortDescription; //Short description
var longDesc = incident.messageText; //Long description
var ciName = incident.ciName; //Business Service CI
var groupName = incident.groupName; //Assignment Group
var catName = incident.catName; //Category
var subCat = incident.subCat; //Subcategory
var correlationID = incident.correlationID; //Reference ID
var severity = incident.severity; //Severity
//Look up Assignee Group SysID
//assignment_group
queryString = 'name='+groupName;
var groupSysID;
var grGroup = new GlideRecord("sys_user_group");
grGroup.addEncodedQuery(queryString);
grGroup.query();
if (grGroup.next()){
groupSysID = grGroup.sys_id;
//gs.log("groupName="+groupName+", groupSysID="+groupSysID);
} else {
gs.log("ACGESM REST Interface: Group Name '" + groupName + "' is not valid.");
}
//Look up Business Service SysID
//cmdb_ci
queryString = 'name='+ciName;
var serviceSysID;
var grService = new GlideRecord("cmdb_ci_service");
grService.addEncodedQuery(queryString);
grService.query();
if (grService.next()){
serviceSysID = grService.sys_id;
//gs.log("ciName="+ciName+", serviceSysID="+serviceSysID);
} else {
gs.log("ACGESM REST Interface: Service Name '" + ciName + "' is not valid.");
}
//Generate an incident.
//Map JSON values to Incident fields.
switch(state) {
case "NEW":
var grCreate = new GlideRecord('incident');
grCreate.initialize();
grCreate.caller_id = callerID;
grCreate.contact_type = "Automation";
grCreate.correlation_id = correlationID; //Reference for resolution.
grCreate.short_description = shortDesc;
grCreate.description = groupName + "\n" + longDesc;
grCreate.assignment_group = groupSysID;
grCreate.cmdb_ci = serviceSysID;
grCreate.u_host_name = resource.toUpperCase();
//grCreate.category = catName; //Might remove this for final.
//subcat goes here if defined.
incidentSysID = grCreate.insert(); //Actually create the incident here.
//Return the incident number to indicate success.
incidentNumber = grCreate.number.toString();
break;
case "UPDATE":
//Need to update incident here.
/*
var workNotes;
var grUpdate = new GlideRecord('incident');
queryString = "correlation_id=" + correlationID; //Incident reference.
grUpdate.addEncodedQuery(queryString);
grUpdate.query();
while (grUpdate.next()) {
incidentNumber = grUpdate.getValue('number').toString();
workNotes = grUpdate.getValue('work_notes');
if (workNotes != '') {
workNotes = workNotes + '\n';
}
workNotes = workNotes + " " + shortDecs;
grResolve.setValue('work_notes',workNotes);
grResolve.update(); //Update the incident.
}
*/
incidentNumber = -1; //Return value.
break;
case "RESOLVED":
//Need to resolve incident here.
/*
var closeNotes;
var grResolve = new GlideRecord('incident');
queryString = "correlation_id=" + correlationID; //Incident reference.
grResolve.addEncodedQuery(queryString);
grResolve.query();
while (grResolve.next()) {
incidentNumber = grResolve.getValue('number').toString();
closeNotes = grResolve.getValue('close_notes');
if (closeNotes != '') {
closeNotes = closeNotes + '\n';
}
closeNotes = closeNotes + "Incident updated by automation: ACGESM.";
grResolve.setValue('state',6); //Resolved.
grResolve.setValue('close_code','Solved (Permanently)');
grResolve.setValue('close_notes',closeNotes);
grResolve.update(); //Update the incident.
}
*/
incidentNumber = -1; //Return value.
break;
default:
incidentNumber = -1; //Return value.
}
//Send the incident number back for confirmation.
// A value of -1 indicates no incident was created or updated.
response.setStatus(200); //200 OK
return incidentNumber;
})(request, response);
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var incidentNumber;
var queryString;
//POST data.
var incident = request.body.data.incident; //The inbound request container object is called "incident".
var callerID = "acgesm"; //Use this UserID
var state = incident.state.toUpperCase(); //Open or Resolved
var resource = incident.resource; //Hostname
var shortDesc = incident.shortDescription; //Short description
var longDesc = incident.messageText; //Long description
var ciName = incident.ciName; //Business Service CI
var groupName = incident.groupName; //Assignment Group
var catName = incident.catName; //Category
var subCat = incident.subCat; //Subcategory
var correlationID = incident.correlationID; //Reference ID
var severity = incident.severity; //Severity
//Look up Assignee Group SysID
//assignment_group
queryString = 'name='+groupName;
var groupSysID;
var grGroup = new GlideRecord("sys_user_group");
grGroup.addEncodedQuery(queryString);
grGroup.query();
if (grGroup.next()){
groupSysID = grGroup.sys_id;
//gs.log("groupName="+groupName+", groupSysID="+groupSysID);
} else {
gs.log("ACGESM REST Interface: Group Name '" + groupName + "' is not valid.");
}
//Look up Business Service SysID
//cmdb_ci
queryString = 'name='+ciName;
var serviceSysID;
var grService = new GlideRecord("cmdb_ci_service");
grService.addEncodedQuery(queryString);
grService.query();
if (grService.next()){
serviceSysID = grService.sys_id;
//gs.log("ciName="+ciName+", serviceSysID="+serviceSysID);
} else {
gs.log("ACGESM REST Interface: Service Name '" + ciName + "' is not valid.");
}
//Generate an incident.
//Map JSON values to Incident fields.
switch(state) {
case "NEW":
var grCreate = new GlideRecord('incident');
grCreate.initialize();
grCreate.caller_id = callerID;
grCreate.contact_type = "Automation";
grCreate.correlation_id = correlationID; //Reference for resolution.
grCreate.short_description = shortDesc;
grCreate.description = groupName + "\n" + longDesc;
grCreate.assignment_group = groupSysID;
grCreate.cmdb_ci = serviceSysID;
grCreate.u_host_name = resource.toUpperCase();
//grCreate.category = catName; //Might remove this for final.
//subcat goes here if defined.
incidentSysID = grCreate.insert(); //Actually create the incident here.
//Return the incident number to indicate success.
incidentNumber = grCreate.number.toString();
break;
case "UPDATE":
//Need to update incident here.
incidentNumber = -1; //Return value.
break;
case "RESOLVED":
//Need to resolve incident here.
incidentNumber = -1; //Return value.
break;
default:
incidentNumber = -1; //Return value.
}
//Send the incident number back for confirmation.
// A value of -1 indicates no incident was created or updated.
response.setStatus(200); //200 OK
return incidentNumber;
})(request, response);
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2018 09:30 AM
ok, fixed it in PHP by changing to
$messageText = "This is line 1
line 2";
$messageText = json_encode($messageText);
$JSON = '{
"incident": {
"state": "NEW",
"resource": "testing",
"shortDescription": "this is text",
"messageText": '.$messageText.',
"ciName": "esmbatchcc",
"groupName": "Data Center Operations",
"catName": "",
"subCat": "",
"correlationID": "",
"severity": "LOW"
},
"version": 1.2
}';