- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 10:11 AM
Hi ServiceNow Experts,
I working on an integration with ibot and have an issue generating the value using slice and split.
I am receiving the respond in the below format. That contains user id, server name and group name in double quotes, all these are separated by a comma.
Server name and group name can have more then one value so its separated with semi colon.
server name starts after "3": (3 number will vary and is numberical)
Group name starts after "1": (1 number will vary and is numberical)
{"user_id":"gurao","3":"s-app-test.rs.ad.com;WUsers__;sntestcom","1":"test;WUsersgr__;sngrp"}
Values expected are
userId : gurao
serverName : s-app-test.rs.ad.com;WUsers__;sntestcom
groupName : test;WUsersgr__;sngrp
below is the current script
var user_id = current.variables.requested_for.user_name;
var userid = current.variables.requested_for.user_name.getDisplayValue();
var mail = current.variables.requested_for.email;
var employeeinfo = current.variables.requested_for.employee_number + ' ' + current.variables.requested_for.first_name + ' ' + current.variables.requested_for.last_name;
var grs = new GlideRecord('sys_user');
grs.addQuery('user_name', current.variables.requested_for.user_name);
grs.query();
if (grs.next()) {
var v1 = grs.user_name;
/
}
var v201 = current.variables.requested_for.user_name;
try {
var r = new sn_ws.RESTMessageV2('Ibot trigger', 'Default GET');
r.setStringParameterNoEscape('user_id', v1);
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
} catch (ex) {
var message = ex.message;
}
gs.log('sent ldn response for server ' + responseBody);
var v10 = responseBody.toString();
var values = v10.match(/"(.*?)"/g);
var userId = '';
var serverNames = [];
var groupNames = [];
if (values.length >= 3) {
userId = values[0].slice(1, -1);
for (var i = 1; i < values.length; i++) {
var value = values[i].slice(1, -1);
if (i == 1) {
serverNames = value.split(';');
} else if (i == 2) {
groupNames = value.split(';');
}
}
}
gs.log('Extracted values:');
gs.log('User ID: ' + userId);
gs.log('Server Names: ' + serverNames);
gs.log('Group Names: ' + groupNames);
var gr11 = new GlideRecord('sc_task');
gr11.initialize();
gr11.short_description = 'SOX Servers';
gr11.description = 'User Name: ' + name + '\nEmail: ' + mail + '\nEmployeeNumber: ' + num + '\nUserID: ' + userid;
gr11.setDisplayValue('assignment_group', 'Server Operations');
gr11.request_item = current.sys_id;
gr11.insert();
var instanceURL = gs.getProperty('glide.servlet.uri');
var callbackUrl = instanceURL + 'api/now/table/sc_task/' + gr11.sys_id;
try {
var r1 = new sn_ws.RESTMessageV2('Account', 'POST');
r1.setStringParameterNoEscape('slackChannel', 'notifications');
r1.setStringParameterNoEscape('email_add', current.variables.requested_for.email);
r1.setStringParameterNoEscape('ticketNumber', gr11.number);
r1.setStringParameterNoEscape('callbackUrl', callbackUrl);
r1.setStringParameterNoEscape('useCase', 'Server');
r1.setStringParameterNoEscape('sox_server', '');
r1.setStringParameterNoEscape('lgroups', '');
r1.setStringParameterNoEscape('limit', '');
r1.setStringParameterNoEscape('sysId', gr11.sys_id);
var response1 = r1.execute();
var responseBody1 = response1.getBody();
var httpStatus1 = response1.getStatusCode();
if (response1.getStatusCode() == 201 || response1.getStatusCode() == 200 || response1.getStatusCode() == 202) {
gr11.state = 2;
} else {
gr11.state = 1;
}
gr11.work_notes = response1.getBody();
gr11.update();
} catch (ex) {
var message = ex.message;
}
Please assist on the code.
Regards,
Priyanka
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 12:21 PM
Thank You Sushant,
This above script works.
I need help on another format being sent by ibot.
Below is the format:
{"user_id":"csahu","3":"test0;serviceDeskTeam:ServiceNowTeam","1":"test1;NetworkingTeam:HRTeam:LeadHeadTeam","12":"test2;OracleTeam:Powerbiteam:sqlteam,unixTeam","55":"test3;workdayteam:Sdteam............................................+n"}
Values expected are below :
userId : csahu
serverName : test0;test1,test2;test3......can go on.
groupName : serviceDeskTeam:ServiceNowTeam:NetworkingTeam:HRTeam:LeadHeadTeam:OracleTeam:Powerbiteam:sqlteam,unixTeam:workdayteam:Sdteam......... can go on.
Note : after semicolon(;) it is groupname that separated by colon.
Regards,
Priyanka
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 01:10 PM
Can you accept my solution for your original question? and raise the new question for this new format?
This will help other readers to go to correct answer directly and for your new format question we can have different thread.
Regards,Sushant Malsure
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 10:34 AM
I have tried something similar in BG script and found working considering your example Json,
you can adapt it in your script:
var test = {"user_id":"gurao","3":"s-app-test.rs.ad.com;WUsers__;sntestcom","1":"test;WUsersgr__;sngrp"};
var convert = JSON.stringify(test);
var parser = new JSONParser();
var result = parser.parse(convert);
gs.print('userId : '+result.user_id);
gs.print('serverName : '+result[3]);
gs.print('groupName : '+result[1]);
Regards,Sushant Malsure
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 10:48 AM
Hi Sushant,
ServerName "3" and Group name "1" can vary and could be any number. What to do in that scenerio?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 10:53 AM
ohh then is position of this server name and group name is fixed in json? Also do you have examples for these server name and group name paramters?
Regards,Sushant Malsure
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-19-2023 11:11 AM
position from ibot to sn is userID, server name, group name.
Two Example of the format :
1. {"user_id":"gurao","3":"s-app-test.rs.ad.com;WUsers__;sntestcom","1":"test;WUsersgr__;sngrp"}
Values expected are below :
userId : gurao
serverName : s-app-test.rs.ad.com;WUsers__;sntestcom
groupName : test;WUsersgr__;sngrp
2. {"user_id":"csahu","12":"s-app-prod.rs.ad.com;WUsersprod__;snprodcom","15":"tests;WUsersgr__;sngrp"}
Values expected are below :
userId : csahu
serverName : s-app-prod.rs.ad.com;WUsersprod__
groupName : tests;WUsersgr__;sngrp