- 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 11:25 AM
Hi @PK14 :
I get it , following is the updated script now which is based on position of parameters:
try it
var test = {"user_id":"csahu","12":"s-app-prod.rs.ad.com;WUsersprod__;snprodcom","15":"tests;WUsersgr__;sngrp"};
var v10 = JSON.stringify(test);
var values = v10.match(/"(.*?)"/g).toString().replaceAll('"','').split(',');
var userId = values[1];
var serverNames = values[3];
var groupNames = values[5];
gs.log('User ID: ' + userId);
gs.log('Server Names: ' + serverNames);
gs.log('Group Names: ' + groupNames);
Regards,Sushant Malsure
- 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