Cisco ICM Admin Script Will Not Run

I ran into an issue yesterday which I’m still not 100% sure as to why it happened, but I at least was able to clear it  up.  I created an administrator script which did run even though it was scheduled to run every 30 seconds.  The script even when down to a start and end node only and still no response.  So, when making changes in ICM the first place to look at is the router.  Did a quick “cdlog ra /last /o” and the ra.log showed the following:

   1:  21:02:40 ra-rtr Trace: Undefined symbol: Global.userMy_UserVar. 
   2:  21:02:40 ra-rtr Add of ScriptData warning. 
Unable complete script load 7300: Undefined symbol: Global.userMy_UserVar. 
   3:  21:02:40 ra-rtr All configuration operations complete. 

So, if nothing else, this lets me know that there is something in my config which is not right and it’s possible that new changes might be queued up and that’s why my admin script is not running.  I went through all references of my user variable and removed them.  I then deleted the user variable and created a new one with the same name and put it back in every script.  Looked at the router log again and it looked clean.  After that, the admin script ran fine.

 

~david

More Fun with ICM Script Editor

I really debated calling this, “How ICM Script Editor Allows You To See The Forest Through The Trees”, but I try to make titles which are relevant to my post.  Regardless, here is my latest fun encounter with Script Editor.

I was working on a script, which all of a sudden didn’t work as it originally did.  I checked the ToD routing logic, it was right.  I checked the admin scripts, they were right.  I checked every single node leading up to that step and they were all right.  I had two co-workers check it for me and they could not find the error either.

This is a small example of what I was looking at:

Script Editor Wrong

Now, in the above example it should be really apparent what is wrong, if you haven’t caught it, I’ll let you see what a correct script would look like:

Script Editor Right

Yep, no connection to the If node.  Now, you’re probably thinking, what is this guys thinking, that’s so easy to spot.  You’re right it is easy to spot when you have 4 nodes, but when you’re script spans multiple pages and has hundreds of nodes, it’s a little harder and honestly after starting at a script like this for weeks

Lost

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

you become crossed-eyed.

~dmacias

Frustrations with Cisco’s ICM Script Editor

So, I’ve been working with ICM scripts for what feels like ages, but in reality is more like 5 years. In the last 2 years though I spend more time scripting than anything else… well except documentation, but that’s another story.

Regardless, here are a few frustrations I constantly face when using ICM script editor.

1. No find and replace. This should be very easy to do and would help greatly, specially when working with CVP and you need to modify a VXML URL or when you’re working with formulas which need to be updated to include some new variable.

2. Copy and paste does not respect the fact that you’ve specified the Snap to Grid option. Yes, copy and paste rocks when you need to write a bunch of scripts which are similar, however, having to remember to snap your recently pasted script to the grid is a pain in the butt and I often forget it.

3. Call Tracer. Personally, I would like to see the call tracer as an independent window which can be sent to the back ground. If you’re working with a very small screen, you have to move the tracer around while looking at your script. In addition, the windows can be so much bigger by default. Can’t they just auto-size? See below.

ICM Script Editor Call Tracer

4. Formula Editor. Is there really no better way to display the formulas being written? Some of my formulas are pretty long which require that I writ them on TextPad first then move them to Script Editor. This allows me to lay them out a little better, specifically when trying to make sure I have enough parenthesis. For example, the formula below shows up like this:

(((ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerTo5,0))+(ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerTo5,0))+(ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerHalf,0))+(ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerHalf,0))+(ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerToday,0)))/((2*((ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerTo5,0))/(ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerTo5,1)))+(2*((ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerHalf,0))/(ValidValue(CallType._Sales_Q_International.AvgSpeedAnswerHalf,1))))+1))*
CallType._Sales_Q_International.RouterCallsQNow)>60

Surely, there’s a better way to display this.

One thing I miss about Genesys is their slick UIs and Cisco knows nothing about UIs. Hope to see some changes in the future, but I wouldn’t bet on it.

~dmacias