Resolving HR Cases via VA Chatbot

Rob Sestito
Mega Sage

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

find_real_file.png

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:

find_real_file.png

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

1 ACCEPTED SOLUTION

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 Roethof - seriously thank you for all your help with this! Truly helpful!

View solution in original post

25 REPLIES 25

Ah oke. You could also just tested with the original state, then at least you know if the basic code and GlideRecord query on sn_hr_core_case are oke, no scoped restrictions etc..

If that's all fine, just do some magic with the State 🙂

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Making better progress now - looks like I needed to talk this through!!

Thanks Mark!

I will keep you posted on getting this working correctly.

Thank you!

-Rob

Looks like from logs, I am getting several warnings:

Okay so, the chatbot conversation error message is displayed:

I'm having technical issues and won't be able to continue this conversation.

making any type of selection from the records it found - or even if I say I'm Done or Show More.
 
There is some type of error happening when I make the decision selection, when Multiple Cases Found happens.
 
Not sure as to why though. Each condition script was mostly pointing to the incidents table, so I of course changed them all to match hr case table.
 
and these are warnings I am getting from the logs:
 
 
 
 
 
 
 

My guess is, that this error is about this step:

find_real_file.png

In your case, you renamed this to vaInputs.sn_hr_core_case.getValue() etc?

find_real_file.png

Did you also rename this variable name then to sn_hr_core_case? If not... here is your issue.

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

LinkedIn