Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Announcements

Welcome to Cisco Support Community. We would love to have your feedback.

For an introduction to the new site, click here. If you'd prefer to explore, try our test area to get started. And see here for current known issues.

New Member

RNA will reserve agent without deliver the call

Hi,

I've been troubleshooting this issue for some time now and I would appreciate some help. Advice:  I'm coming from a UCCE background and this is the first time developing a CCX script:

I have a main script which checks the ANI of the caller, based on that it will call a subscript with a "trigger Application" step. I've seen subflows are recommended but I've chosen this for debugging purposes and to have triggers ot al subscripts in case I need them in the future. I'm saying this because when I didn't have subscripts RNA worked, although I cannot say I didn't break it with something else.

Main script.png

When the subscript is called, all steps are executed correctly, call gets into the Q, Selec Resource, CSQ Target CSQ, Connect No. First agent is selected correctly and call is delivered. After the timeout, call executes the GoTo label which points the previous Select Resource. The second agent gets into reserved mode but call is never delivered. MIVR logs shows the following exception

UNCAUGHT_EXCEPTION, failed to unhold the original call after the consult call gets RESOURCE_NOT_ACKNOWLEDGING; nested exception is:

UNHOLD_FAILED:Unhold failed

subscript.png

I've attached 2 screenshots of the scripts, any pointer is really appreciated.

Thanks

Isidro

Everyone's tags (4)
3 REPLIES

RNA will reserve agent without deliver the call

Wow!  I am impressed by your level of UCCX understanding.  Nice job.  Unfortunately, with a greater understanding UCCX comes a more complex solution (I.e., your scripts) and a harder time troubleshooting (I.e., this thread).

Unfortunately, I don't have the answer for you, but I did want to point out a few things to further your understanding of UCCX.

Using the Trigger Application has some challenges, two of which are: There is no per application Exception Handling, and all the while the triggered application is running the main calling script is still running also, and in fact continues to run after the triggerd application comepletes.  In your case this causes If CM7Prefix step to execute all the way down the terminate which will then throw an exception and thus make the system work harder.  (I.e., executing more steps for no real purpose and then writing errors to the log file).

To be fair, Call Subflow has that same last challenge, but then, that's why I don't use Call Subflows for anything but simply single serving routines, and always return to the calling script for final treatment.  If I need to send the caller around the system in a fashion where I don't intend to have control return, then I Call Redirect, so I can free up resources.

If a Contact has already been answered, you do not need to answer it again.  Also, you are answering the passed in Contact without checking if it's valid (I.e., Null), which could cause a runtime exception.

It doesn't look like you're doing anything with the AgentID variable and the Get User Info step.  It's not required, and since you're not using it, it could be removed.

On the Connect Step, if the output branch happens to be the Failed branch AND there are MORE Agents available in the CSQ, then the step within this branch WILL NOT execute, and the control of the script will resume at the Select Resource step.  Only when the Failed branch executes AND there are NO MORE Agents available in the CSQ, then the step within this branch WILL execute, and you will be executing the Select Resource step a second time.  It would be logical to not do this, and to continue right into the Queue treatment.  In summary, change your Goto step in the Failed branch to Q.  It's a logical choice.

This is mostly fact, but I'll admit there's a bit of personal bias in there too.  Hey, we all have our ways of doing things.  I try to always have a reason for doing what I do though, and hopefully you picked up on my reasons above.

I really hope you get an answer to this problem.  If you don't find that there's much help on the forum, your choice is to simplify the script, validating and adding one piece of the puzzle at a time, until you figure out what's going wrong.

Good luck, and I'll follow this thread to see how it turns out.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.
New Member

RNA will reserve agent without deliver the call

Hi Anthony,

Thanks for your reply. It is very helpful as  well as other replies from you on this forum.

I'm all for simplicity so I went ahead and resolved the issue through call redirects, much cleaner. One question though; documentation states adding a delay of 2 seconds is a good practice in case there are subsequent redirects. Otherwise calls might fail (scripting vol 2, page 379). It is not specified where this delay should be set. I did set it after the succesful step and it broke it...should it be at the beggining of the called script?


Also to terminate contacts i'm just sending to a label where I 've got the Terminate and End steps, so I just have to configure them once... is this a good method of doing it or should I configure these 2 steps on each condition where the contact should be terminated?

Thanks again,

Isidro

Re: RNA will reserve agent without deliver the call

Thank you for the kind words Isidro.

Isidro Fernandez wrote:

One question though; documentation states adding a delay of 2 seconds is a good practice in case there are subsequent redirects. Otherwise calls might fail (scripting vol 2, page 379). It is not specified where this delay should be set. I did set it after the succesful step and it broke it...should it be at the beggining of the called script?

The 2 second delay goes before the Accept step in the script you sent the caller to.

Isidro Fernandez wrote:


Also to terminate contacts i'm just sending to a label where I 've got the Terminate and End steps, so I just have to configure them once... is this a good method of doing it or should I configure these 2 steps on each condition where the contact should be terminated?

If you are trully terminating (aka hanging up on) your callers, then yes, this is a good practice.  However, there are very few times when you are actually initiating (aka hanging up on) your callers, and therefore, what you probably want to do is just end the script.  Using the Terminate step on an inactive Contact causes a failure and thus your system works harder.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.

Anthony Holloway

Please use the star ratings to help drive great content to the top of searches.
511
Views
10
Helpful
3
Replies