cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
5362
Views
0
Helpful
16
Replies

ICM variables

arpitnarula
Level 1
Level 1

Hi,

Could you please tell that whats the scope of ICM user variables, are they global or local?

lets say i assign "userMIG_open=1" in a a script

then what will be the value of this variable used in another script?

Regards

Arpit

1 Accepted Solution

Accepted Solutions

Riccardo Bua
Level 5
Level 5

Hi again Arpit,

I hope to be able to answer this question to your satisfaction, there is a lot to say on this topic.

This should answer your question:

http://www.cisco.com/en/US/products/sw/custcosw/ps1001/products_qanda_item09186a0080327503.shtml

In brief, the value will be 1 and available for another script or for all the scripts if you make it persistent.

Please be aware of this caveats:

http://www.cisco.com/en/US/products/sw/custcosw/ps1001/products_tech_note09186a00801e7a18.shtml

As the doc is saying they are up to 40 characters in length, with no specific limit to the amount of them,

the data collected is stored in a specific way:

The Persistent_Variable table temporarily stores some range of user variable values

which become out-of-scope once the ICM script that uses them finds a target, otherwise

the values are in the Router memory.

CSCms27082 dictates the name you chose please avoid any reference to a "."

There is no plans to relax the checking of "." character in user variable. By allowing "."

character in user variable we might introduce ambiguous grammar since "." character is already

used to define the syntax of expressions such as below for example:

..

It is bad practice to allow unambiguous grammar so this is why engineering team has moved

away from allowing the character in user variables.

Regards,

Riccardo

View solution in original post

16 Replies 16

Riccardo Bua
Level 5
Level 5

Hi again Arpit,

I hope to be able to answer this question to your satisfaction, there is a lot to say on this topic.

This should answer your question:

http://www.cisco.com/en/US/products/sw/custcosw/ps1001/products_qanda_item09186a0080327503.shtml

In brief, the value will be 1 and available for another script or for all the scripts if you make it persistent.

Please be aware of this caveats:

http://www.cisco.com/en/US/products/sw/custcosw/ps1001/products_tech_note09186a00801e7a18.shtml

As the doc is saying they are up to 40 characters in length, with no specific limit to the amount of them,

the data collected is stored in a specific way:

The Persistent_Variable table temporarily stores some range of user variable values

which become out-of-scope once the ICM script that uses them finds a target, otherwise

the values are in the Router memory.

CSCms27082 dictates the name you chose please avoid any reference to a "."

There is no plans to relax the checking of "." character in user variable. By allowing "."

character in user variable we might introduce ambiguous grammar since "." character is already

used to define the syntax of expressions such as below for example:

..

It is bad practice to allow unambiguous grammar so this is why engineering team has moved

away from allowing the character in user variables.

Regards,

Riccardo

Hi Riccardo,

perhaps you can answer to me...

In Configuration Manager - User Variable List I can associate a variable to an object; then I can refer to this variable within an ICM script (i.e. Service.MyService.MyVariable).

Ok, this is true if the object is one like Service or SkillGroup or CallType or others. But if the object is, for example, DialedNumber or MasterScript, how can I refer to them within an ICM script?

Are there some additional configurations to do? The only object-types I can see in "Formula Editor" in an ICM Script are:

ApplicationGateway

Call

CallType

EnterpriseRoute

EntSkill

NetworkTrunkGroup

Peripheral

PeripheralMRD

Region

Route

Schedule

Service

SkillGroup

TrunkGroup

It seems that I can associate a variable to all the object but I can refer to only a portion of them. It is too strange...

Thanks a lot for help,

Andrea

But if the object is, for example, DialedNumber

That's there. Call.DialedNumberString

Regards,

Geoff

Thanks for your interest, but DialerNumberString is a property of the Call object; insted, by Configuration Manager, I can associate a variable to the DialedNumber object as you can see below:

Now, my question is: inside an ICM script, how can I refer to MyVariable in Dialed Number object?

Thaks a lot,

Andrea

You are on the wrong track. You need Call-specific variables in your Routing Script, not global variables.

The most common use for User Variables (globals) is for an interaction between Admin Scripts (that control opening hours, setting a global) and a Routing Script that checks the global to see if the script should play the closed message or queue the call. The type of variable from the drop down would be User Variable.

What are you trying to do?

Regards,

Geoff

I Geoff,

I know that I cold configure a User Variable but my need is the following:

I want to monitor, in several ICM scripts, the variuos bad exit of some type of nodes: Application Gateway failure, Translation Route to VRU failure, RunExternal Script Failure etc..; when the different kind of fails raise a threshold, I send an e-mail by an CRS Script with the description of the problem.

So, I should create, for ICM script1:

script1_AGW_Counter, script1_TRtoVRU_Counter, script1_CrsScript_Counter;

in the same way, for ICM script2:

script2_AGW_Counter, script2_TRtoVRU_Counter, script2_CrsScript_Counter;

In this manner the number of Global variables grows very quickly.

If I could associate, as I can by Configuration Manager, the three counters to the Master Script Object, I should configure only three counters by User Variable List tool:

MasterScript.AGW_Counter, MasterScript.TRtoVRU_Counter, MasterScript.CrsScript_Counter; whitin ICM scripts I could refer to each variable increasing the different counters for each ICM script I need.

The problem is that I cannot refer to a User Variable associated to a Master Script becase I can see the MasterScript object in ICM script...

So, what is the purpose in association of a User Variable to a Master Script Object if I cannot refer to it in ICM routing/administration script? (same consideration for the Dialed Number object).

I hope I have explained my needs well.

Thank a lot,

Andrea

Hi all,

Can I ask where I can find a list of all avaiable ICM variables? I mean a complete list of ICM variable.

I try to find a document like that./.

Regards,

Thanh

I want to monitor, in several ICM scripts, the variuos bad exit of some type of nodes: Application Gateway failure, Translation Route to VRU failure, RunExternal Script Failure etc..;

OK, that's a fairly common requirement.

What I do is send all failures (coming out the X port) to different "F" (failure) scripts: XX_F_RES (Run Ext Script), XX_F_TR (Trans Route), XX_F_AG (application gateway) and so on using a "Go To Script" node.

In each of these failure scripts I set a corresponding call type with similar names - XX_F_RES, XX_F_TR, XX_F_AG etc, and then Release the call - or take other appropriate action.

Prior to the "GoTo Script" I set a call variable that indicates where the call is coming from.

Now we are all set.

With a WebView real-time report running on these "XX_F_" call types, I can immediately know when I'm getting a failure. Of course, I have to be looking at that.

A historical report can be used to tell us historical info. Can't we schedule this and email it? Yeah, but it doesn't discriminate.

If I check the AW DB and find out the CallTypeID (primary key - starting at 5000) for each of the "XX_F_" call types, I can query the Route_Call_Detail table for routes that have these as the final call type.  I can run this SQL query using OSQL from a batch file and then make it a scheduled task and use a Java to send an email. The batch file can know when the OSQL returns no data, and not send email. Make it run every hour say. The call variable tells us which script the error is being raised in.

I can't do exactly what you want.

when the different kind of fails raise a threshold, I send an e-mail by an CRS Script with the description of the problem.

but I can get close.

Even if you could do the variable association you wanted, I can't quite see how you could use CRS to send an email. But maybe you have that figured out.

Regards,

Geoff

I Geoff,

your solution is a very good solution... thanks a lot.

In any case, you can send an e-mail by CRS easily: after you have configured the e-mail subsistem (server address an default sending address), you can use the three e-mail steps I reported below and... that's all:

Thanks a lot for your patience,

Andrea

Andrea,

I know that CRS can send an email. What I was interested in was how you would trigger this to occur.

Was this to be done in the context of a voice call? Would each call check some parameter (has to be in a call variable) and if certain conditions were correct, send an email?

Regards,

Geoff

I Geoff,

at the moment we would use the email only for alerting purpose; when a theshold is reached an email is sent.

Regarding the voice treatment, it depends by the type of failure: a "Queue to skill" failure determines a release of the call; instead a VruScript failure may determine a queuing to a Skill...

We are in a study phase and we are exploring various possibilities.

Thanks a lot,

Andrea

at the moment we would use the email only for alerting purpose; when a theshold is reached an email is sent.

Andrea,

Yes, I gathered that. What I am asking is - what triggers CRS to construct send the email? It has to be an incoming call.

That means that every call needs to check some condition and if the condition has reached a certain state, send an email and carry on with the processing. Was this the idea?

Regards,

Geoff

Yes it was, when the failure allows to do.

Regards,

Andrea

Yes it was, when the failure allows to do.

Exactly. Now you can see the problem.

Let's say the trans route to IVR failed. Call comes in, hits a route point in CUCM, tries to trans route across to the VRU but it can't - ports are full, triggers are all used, IVR is down - whatever.

Now you can't run a CRS script so no email can be sent.

Regards,

Geoff

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: