- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 02:55 AM
Hello Developers,
We are doing E-bonding b/w X & Y companies.
X company is passing Incident data & it's flowing as expected & creating ticket on Y company Incident table with information passed.
I want to receive the ticket number created on Y company on correlation ID field of X company, to confirm that ticket is created.
I have done below stuff but not receiving it. Not sure what is missed.
Please guide me
ebondIncidentUpdate: function() {
//var pathParams = request.pathParams;
//var table = pathParams.tableName;
var requestBody = request.body;
var requestData = requestBody.data;
if (requestData.u_partner_ticket_id == undefined || requestData.u_partner_ticket_id == '')
{
response.setError(new sn_ws_err.BadRequestError('Correlation ID is missing'));
return;
}
if (requestData.number == undefined || requestData.number == '')
{
response.setError(new sn_ws_err.BadRequestError('Number is missing'));
return;
}
var gr = new GlideRecord('incident');
gr.addQuery('number', requestData.number);
gr.query();
if (gr.next()) {
gr.correlation_id = requestData.u_partner_ticket_id;
gr.update();
} else {
response.setError(new sn_ws_err.BadRequestError('Incident not found'));
return;
}
// start building response object
response.setStatus(200);
response.setContentType('application/json');
var body = {
status: 'ok',
requesterId: gr.number,
providerId: gr.correlation_id,
sys_id: gr.getUniqueValue()
};
response.setBody(body);
var jsonObj = JSON.parse(responseBody)
var ticketid = jsonObj.result.u_partner_ticket_id;
},
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 05:29 AM
Please ignore.
I have found the solution.
I had to modify the BR.
var response = r.execute();
var responseBody = response.getBody();
gs.info("responseBody Wipro" + responseBody);
var jsonObj = JSON.parse(responseBody)
var ticketid = jsonObj.result.u_partner_ticket_id;
current.correlation_id = ticketid;
var httpStatus = response.getStatusCode();
} catch (ex) {
var message = ex.message;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 03:19 AM
Hi @Naveen87
Y company can send the number in successful response to which X company needs to map with the correlation_id to confirm if the incident is created or not.
Sharing the outline of scripted rest api-
ebondIncidentUpdate: function() {
var requestBody = request.body;
var requestData = requestBody.data;
if (!requestData.u_partner_ticket_id || !requestData.number) {
response.setError(new sn_ws_err.BadRequestError('Correlation ID or Incident Number is missing'));
return;
}
var gr = new GlideRecord('incident');
gr.addQuery('number', requestData.number);
gr.query();
if (gr.next()) {
gr.correlation_id = requestData.u_partner_ticket_id;
gr.update();
response.setStatus(200);
response.setContentType('application/json');
var responseBody = {
status: 'ok',
requesterId: requestData.number, // Assuming 'number' is the incident number from company Y
providerId: requestData.u_partner_ticket_id, // Assuming 'u_partner_ticket_id' is the ticket ID from company X
sys_id: gr.getUniqueValue()
};
response.setBody(responseBody);
} else {
response.setError(new sn_ws_err.BadRequestError('Incident not found'));
}
}
Please mark my answer helpful and correct.
Regards,
Amit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 03:59 AM - edited 03-21-2024 04:14 AM
Y company needs to call the API of X company to receive correlation id?
Also, correlation_id is a string field. I want to set, 'Y 1234'.
So we can understand this ID is coming from Y company.
Please suggest the line of code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 04:30 AM
Y company can parse the response and update from it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 04:54 AM
Sorry but I don't understand.
I will share my current configuration. Maybe this can be helpful for u to guide me.
Let me know, If i need to add modify these. Please Share the line of code.
OUTBOPUND
BR
(function executeRule(current, previous /*null when async*/ ) {
try {
var r = new sn_ws.RESTMessageV2('global.EUW Ebonding', 'POST Incident');
r.setStringParameterNoEscape('u_customer_ticket_id', current.number);
r.setStringParameterNoEscape('u_shr_priority', current.priority);
r.setStringParameterNoEscape('u_shr_assignment_group', current.getDisplayValue('assignment_group'));
var response = r.execute();
var responseBody = response.getBody();
gs.info("responseBody " + responseBody);
var httpStatus = response.getStatusCode();
} catch (ex) {
var message = ex.message;
}
})(current, previous);
Scripted REST API
Script Include
ebondIncidentUpdate: function() {
var requestBody = request.body;
var requestData = requestBody.data;
//u_partner_ticket_id is the Y company field to store number (Ex:- Incident number).
if (requestData.u_partner_ticket_id == undefined || requestData.u_partner_ticket_id == '') {
response.setError(new sn_ws_err.BadRequestError('Correlation ID is missing'));
return;
}
if (requestData.number == undefined || requestData.number == '') {
response.setError(new sn_ws_err.BadRequestError('Number is missing'));
return;
}
var gr = new GlideRecord('incident');
gr.addQuery('number', requestData.number);
gr.query();
if (gr.next()) {
gr.correlation_id = requestData.u_partner_ticket_id;
gr.update();
} else {
response.setError(new sn_ws_err.BadRequestError('Incident not found'));
return;
}
// start building response object
response.setStatus(200);
response.setContentType('application/json');
var body = {
status: 'ok',
requesterId: gr.number,
providerId: gr.correlation_id,
sys_id: gr.getUniqueValue()
};
response.setBody(body);
},