
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-10-2020 07:32 AM
Hey SN Comm,
I am looking for some help implementing a conversation through VA Chatbot, to be able to resolve HR Cases.
I have taking the 'Resolve Incident' flow and copied it, change the table and state to match the hr case table (so I thought).
But the chatbot keeps returning 'No Records Found' decision.
Here is the Resolve Incident 'Get Incidents' Script Action:
(function execute() {
var gr = new GlideRecordSecure('incident');
gr.addQuery('assigned_to', vaInputs.user);
gr.addQuery('state', '!=', vaVars.resolved_state)
gr.addActiveQuery();
gr.orderByDesc('sys_updated_on');
var start = parseInt(vaVars.index);
var end = start + parseInt(vaVars.limit);
gr.chooseWindow(start, end, true);
gr.query();
vaVars.count = gr.getRowCount();
var results = [];
while(gr.next()) {
results.push({
'value': gr.getUniqueValue(),
'label': gs.getMessage('{0} [{1}]', [gr.getDisplayValue('short_description'),gr.getDisplayValue('number')])
});
}
vaVars.results = JSON.stringify(results);
})()
And here are the next steps it takes once it gets records
Here is what I changed to try and match HR Case tables:
(function execute() {
var gr = new GlideRecord('sn_hr_core_case');
gr.addQuery('assigned_to', vaInputs.user);
gr.addQuery('state', '!=', vaVars.closed_complete_state)
gr.addActiveQuery();
gr.orderByDesc('sys_updated_on');
var start = parseInt(vaVars.index);
var end = start + parseInt(vaVars.limit);
gr.chooseWindow(start, end, true);
gr.query();
vaVars.count = gr.getRowCount();
var results = [];
while(gr.next()) {
results.push({
'value': gr.getUniqueValue(),
'label': gs.getMessage('{0} [{1}]', [gr.getDisplayValue('short_description'),gr.getDisplayValue('number')])
});
}
vaVars.results = JSON.stringify(results);
})()
And here are my next steps to match:
I keep getting taken to the No Cases Found decision and I am thinking I have the table set up wrong from the very first step. I definitely have cases assigned to myself.
Anyone able to assist with this?
Thank you!
-Rob
Solved! Go to Solution.
- Labels:
-
Virtual Agent

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-14-2020 12:56 PM
Okay - looked at the code with a co-worker and we were able to figure it out!
realized that vaVars.awaiting_acceptance_state means nothing for scoped hr.
It wants the value instead of the label name - i.e. awaiting acceptance is '20'.
I also had my u_case_resolution get function in the wrong place, for how we handle on the native side.
here is the code the works perfectly:
(function execute() {
var success = null;
var gr = new GlideRecordSecure('sn_hr_core_case');
if (gr.get(vaVars.sys_id)) {
//set state to Awaiting Acceptance
gs.info("changing state");
gs.info("current state is: " + gr.state);
gr.u_case_resolution = vaInputs.u_case_resolution.getValue();
gr.state = 20;
gs.info("state has changed to:" + gr.state);
var operation = vaInputs.update_comments.getValue();
if (operation != 'cancel') {
if ((operation == 'comment' || operation == 'both') && vaInputs.comment.getValue().trim() != ''){
gr.comments = vaInputs.comment;
}
if ((operation == 'work_notes' || operation == 'both') && vaInputs.work_notes.getValue().trim() != ''){
gr.work_notes = vaInputs.work_notes;
}
}
success = gr.update();
}
vaVars.success = '' + (success != null);
})()

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-10-2020 10:15 AM
Yes, so here is what I have for those:
Prompt:
(function execute() {
return gs.getMessage('You have {0} Cases assigned. Which Case do you want to resolve?', vaVars.count);
})()
Reference Type: Script
Choice Value Expression:
(function execute() {
var results = JSON.parse(vaVars.results);
var options = [];
for(var i = 0; i < results.length; i++) {
options.push({ 'value': results[i].value, 'label': results[i].label });
}
if ((parseInt(vaVars.index) != 0)) {
options.push({ 'value': 'show_previous', 'label': gs.getMessage('Show previous') });
}
if (parseInt(vaVars.count) > (parseInt(vaVars.index) + parseInt(vaVars.limit))) {
options.push({ 'value': 'show_next', 'label': gs.getMessage('Show more') });
}
options.push({ 'value': 'cancel', 'label': gs.getMessage('I\'m done') });
return options;
})()
Script:
(function execute() {
return vaInputs.sn_hr_core_case.getValue() == 'cancel';
})()
And the rest match to have the correct table within their script (where applicable.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-10-2020 10:19 AM
I'm not sure, though I think you've got a mixup with:
hr_case_found on the Reference choice
and
vaInputs.sn_hr_core_case
hr_case_found is your vaInputs. Though your renamed the condition to vaInputs.sn_hr_core_case, and not vaInputs.hr_case_found
If my answer helped you in any way, please then mark it as helpful.
Kind regards,
Mark
---
LinkedIn
Community article list
Kind regards,
Mark Roethof
Independent ServiceNow Consultant
10x ServiceNow MVP
---
~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-10-2020 10:25 AM
ahhh - makes sense. I will see what I can do with all of that.
Thank you!
-Rob

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-10-2020 10:41 AM
Okay - I was able to correct my references and now move forward!
Next step, figure out closing the actual case. I was able to work through the chatbot to take my notes and say it has resolved my case. But the case was not moved to a closed state.
On to the next!
Thanks,
-Rob

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-10-2020 11:32 AM
Ah nice, step by step.
Out-of-the-box, you won't be able to put a HR Case directly on Closed (3). Out-of-the-box the HR Case will go to Awaiting Acceptance (20) first. When a HR Case is on Awaiting Acceptance, then you can move it to Closed.
If my answer helped you in any way, please then mark it as helpful.
Kind regards,
Mark
---
LinkedIn
Community article list
Kind regards,
Mark Roethof
Independent ServiceNow Consultant
10x ServiceNow MVP
---
~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field