logo

NJP

But how do I make it do what I want? Operationalizing assistive AI Agents for fun and profit!

New article articles in ServiceNow Community · Apr 10, 2025 · article

Hey folks. We've seen how to build assistive Agents using the Skill Kit, but how do we operationalize them? Its great to have a message popup on screen, but what if you want to update a field, create a record or kick off an Agent every morning at 7am? In this latest video, I take things down a notch for a bit more relaxed take on harvesting value from AI.

In this video I show a number of different Skill Kit use cases:

1) How to output data into a field.

2) How to create a new record.

3) How to use JSON to return multiple data points and advanced parsing

4) How to embed a Skill into a Flow so you can use it anywhere.

Scripts: Here you can find the code used in each example

To make a 'clean' message popup appear based on the Skill Output, use this code between the try and catch in the UI Action:

try {

var response = sn_one_extend.OneExtendUtil.execute(request) || {};

var skillResponse = ((response["capabilities"] || {})[capabilityId] || {})["response"];

var cleanedoutput = JSON.parse(skillResponse.replace('Info Message', '')).model_output.trim();

gs.addInfoMessage((cleanedoutput));

} catch(e) {

To clean up text to insert into a field, use this code:

try {

var response = sn_one_extend.OneExtendUtil.execute(request) || {};

var skillResponse = ((response["capabilities"] || {})[capabilityId] || {})["response"];

var cleanedoutput = JSON.parse(skillResponse.replace('Info Message', '')).model_output.trim();

current.test_plan = new Date().toLocaleString() + '\n\n' + ((cleanedoutput)) + '\n\n' + '*** Test Plan generated by NowLLM ***';

current.update();

} catch(e) {

To create a new record, insert fields and create a hyperlink message to the user, use this code:

try {

var response = sn_one_extend.OneExtendUtil.execute(request) || {};

var skillResponse = ((response["capabilities"] || {})[capabilityId] || {})["response"];

// cleaning

var cleanedoutput = JSON.parse(skillResponse.replace('Info Message', '')).model_output.replace(/\n/g, '').replace(/\\"/g,'"').trim();

// starting the new record creation

var newArticle = new GlideRecord('kb_knowledge');

newArticle.initialize();

// setting the fields in the new record

newArticle.short_description = ('Policy QnA: ' + current.short_description);

newArticle.text = ((cleanedoutput));

newArticle.kb_knowledge_base = current.kb_knowledge_base;

newArticle.topic = current.topic;

newArticle.valid_to = gs.daysAgo(-365);

// insert the record and get the sys_id

var articleSysID = newArticle.insert();

// create a response message and URL

// get instance URL

var instanceurl = gs.getProperty('glide.servlet.uri');

// create the link

var mylink = instanceurl + 'kb_knowledge.do?sys_id=' + articleSysID;

// display the link on screen

gs.addInfoMessage('Your new KB Article of question and answer pairs is now available. Click here to open.');

} catch(e) {

To create a Script step in an Action to parse a complex JSON with two elements, use this code:

(function execute(inputs, outputs) {

var outerJSON = JSON.parse(inputs.jsonResponse);

var innerJSON = JSON.parse(outerJSON.model_output);

outputs.recommendation = innerJSON.recommendation;

outputs.score = innerJSON.score;

})(inputs, outputs);

Here is the UI Action code that can be used to extract multiple elements from a JSON:

try {

//triggers the Skill with capabilities and config identified above

var response = sn_one_extend.OneExtendUtil.execute(request) || {};

var skillResponse = ((response["capabilities"] || {})[capabilityId] || {})["response"];

// cleans the output and parses the outer object, so we can access the JSON array generated in the model response

var cleanedoutput = JSON.parse(skillResponse.replace('Info Message', ''));

var myJSON = JSON.parse(cleanedoutput.model_output);

// sets the fields on the record and saves

current.u_resolution_quality_score = myJSON.score;

current.u_resolution_notes_recommendation = myJSON.recommendation;

current.update();

}

catch(e) {

View original source

https://www.servicenow.com/community/now-assist-articles/but-how-do-i-make-it-do-what-i-want-operationalizing-assistive/ta-p/3234165