05-09-2011 07:44 AM - edited 03-14-2019 07:52 AM
Hello all,
I have build a new application and since early last week the value of "Skillgroup.loggedOn" is equalling zero no matter if the agents are NR or R.
I am running CAD 7.2.3 and ICM 7.5.5 and other applications are running without issues.
Best regards,
Troy
Solved! Go to Solution.
05-09-2011 09:03 AM
I was talking about in the ICM Script Editor, can you display real time stats? If real time stats are showing incorrect data then the ICM script will not work. However if real time stats is correct then your ICM script is wrong.
david
05-09-2011 03:06 PM
The key to understanding why this doesn't (and won't) work is to understand the difference between variables/symbols and strings.
A string is nothing more than an arbitrary (from ICM's perspective) sequence of characters. The string has no meaning beyond the letters and numbers that make it up. A string will be delimited by quotation marks, and can be manipulated with functions such as "concatenate".
A symbol or variable on the other hand represents some specific underlying value in the system. The actual textual characters that you see in the script editor are only there for you to understand it's meaning, behind the scenes the symbol is being matched to some internal statistic or variable value. You will notice that, unlike strings, they are correctly referenced without any quotation marks. As the characters that make up a variable name do not represent a string to the system, you cannot dynamically build variable names via concatenate or other string based functions.
What you are doing in your set node is constructing the variable name as a string, and ICM has no way of realizing that your string is meant to represent some a variable rather than simply being an arbitrary string of text. This is why you do not see a numeric value being returned.
AFAIK, there is no way in ICM to dynamically convert a string value into the variable it represents. You are going to have to reference your skill group variable explicitly in your set variable step without quotes (i.e. Set variable x = SkillGroup.CCM2.HRNA_US_English.LoggedOn). You can create some aspect of dynamic behavior by creating a string of IF nodes checking your call variable values and then branching to the appropriate set node.
05-09-2011 08:48 AM
Can you display real time stats and look at what the skill group stats are saying? Maybe post a screen shot of it.
david
05-09-2011 08:57 AM
Hello David.
Thank you for the quick reply.
Here is an output after a test using another agent using CTITest.
10:16:13 CTIOS1-ctios Trace: CCTIOSBaseAgentObject::AttachAgentToDevice [agent.5003.1033202] Agent attached
to device [device.5003.1033202].
10:16:13 CTIOS1-ctios Trace: CTimerService::Start(): ReqSpreadingInterval[2000]
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): REMOVE SkillGroupID:5001
SkillGroupNumber:3589 SGPriority 0 SGState:1
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): REMOVE SkillGroupID:5408
SkillGroupNumber:540 SGPriority 0 SGState:1
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): REMOVE SkillGroupID:5409
SkillGroupNumber:541 SGPriority 0 SGState:1
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): ADD SkillGroupID:5001
SkillGroupNumber:3589 SGPriority 0 SGState:0
10:16:13 CTIOS1-ctios Trace: [agent.5003.1033202] AGENT_STATE_EVENT ( eNotReady ) : (PeripheralID:5003
PeripheralType:17 AgentState:eNotReady SkillGroupNumber:3589
SkillGroupID:5001 StateDuration:0 SkillGroupPriority:0 EventReasonCode:0
SkillGroupState:0 SessionID:0 MRDID:1 ICMAgentID:5414 AgentMode:0
MaxTaskLimit:0 NumTasks:0 AgentExtension:1033202 AgentID:1033202
AgentInstrument:1033202 CTIClientSignature:CTIOSServer
UniqueObjectID:agent.5003.1033202 MessageID:eAgentStateEvent
DriverKey:agent.5003.1033202 AgentAvailabilityStatus:0)
10:16:13 CTIOS1-ctios Trace: UpdateEnablementByAgentState: [agent.5003.1033202]: CurrentWrapupMode = 1,
FireEvent = 0
10:16:13 CTIOS1-ctios Trace: UpdateEnablementByAgentState().NewState = 2, LogoutReasonReq = 0,
IdleReasonReq = 0
10:16:13 CTIOS1-ctios Trace: [agent.5003.1033202] AgentBehaviorEA::UpdateEnablementByAgentState(): mask =
0xa1b0010.
10:16:13 CTIOS1-ctios Trace: Event contained DriverKey agent.5003.1033202.
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): ADD SkillGroupID:5408
SkillGroupNumber:540 SGPriority 0 SGState:0
10:16:13 CTIOS1-ctios Trace: [agent.5003.1033202] AGENT_STATE_EVENT ( eNotReady ) : (PeripheralID:5003
PeripheralType:17 AgentState:eNotReady SkillGroupNumber:540 SkillGroupID:5408
StateDuration:0 SkillGroupPriority:0 EventReasonCode:0 SkillGroupState:0
SessionID:0 MRDID:1 ICMAgentID:5414 AgentMode:0 MaxTaskLimit:0 NumTasks:0
AgentExtension:1033202 AgentID:1033202 AgentInstrument:1033202
CTIClientSignature:CTIOSServer UniqueObjectID:agent.5003.1033202
MessageID:eAgentStateEvent DriverKey:agent.5003.1033202
AgentAvailabilityStatus:0)
10:16:13 CTIOS1-ctios Trace: Event contained DriverKey agent.5003.1033202.
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): ADD SkillGroupID:5409
SkillGroupNumber:541 SGPriority 0 SGState:0
10:16:13 CTIOS1-ctios Trace: [agent.5003.1033202] AGENT_STATE_EVENT ( eNotReady ) : (PeripheralID:5003
PeripheralType:17 AgentState:eNotReady SkillGroupNumber:541 SkillGroupID:5409
StateDuration:0 SkillGroupPriority:0 EventReasonCode:0 SkillGroupState:0
SessionID:0 MRDID:1 ICMAgentID:5414 AgentMode:0 MaxTaskLimit:0 NumTasks:0
AgentExtension:1033202 AgentID:1033202 AgentInstrument:1033202
CTIClientSignature:CTIOSServer UniqueObjectID:agent.5003.1033202
MessageID:eAgentStateEvent DriverKey:agent.5003.1033202
AgentAvailabilityStatus:0)
10:16:13 CTIOS1-ctios Trace: CAgentStateEvent::DecodeMessage Begin, Packet length 110
10:16:13 CTIOS1-ctios Trace: Event contained DriverKey agent.5003.1033202.
10:16:13 CTIOS1-ctios Trace: [team.5003.5021]::UpdateSkillGroupData(): ADD SkillGroupID:5001
SkillGroupNumber:3589 SGPriority 0 SGState:2
10:16:13 CTIOS1-ctios Trace: [agent.5003.1033202] AGENT_STATE_EVENT ( eNotReady ) : (PeripheralID:5003
PeripheralType:17 AgentState:eNotReady SkillGroupNumber:3589
SkillGroupID:5001 StateDuration:0 SkillGroupPriority:0 EventReasonCode:0
SkillGroupState:2 SessionID:0 MRDID:1 ICMAgentID:5414 AgentMode:1
MaxTaskLimit:1 NumTasks:0 AgentExtension:1033202 AgentID:1033202
AgentInstrument:1033202 CTIClientSignature:CTIOSServer
UniqueObjectID:agent.5003.1033202 MessageID:eAgentStateEvent
DriverKey:agent.5003.1033202 AgentAvailabilityStatus:0)
05-09-2011 09:03 AM
I was talking about in the ICM Script Editor, can you display real time stats? If real time stats are showing incorrect data then the ICM script will not work. However if real time stats is correct then your ICM script is wrong.
david
05-09-2011 09:13 AM
Ah...Yes. it is showing the correct informaiton and the previous node which sets the concatenate to "CCM2.HRNA_US_English.LoggedOn" is correct.
I removed the two nodes
Set Call.PeripheralVariable5 = "concatenate("SkillGroup.CCM2.HRNA_",Call.PeripheralVariable3,"_",Call.PeripheralVariable2,".LoggedOn")"
&
Call.PeripheralVariable5>0
That was it. Something wasn't right with the previous set node.
Thank you David.
05-09-2011 09:19 AM
05-09-2011 09:28 AM
Not sure why the set node wouldn't work. As it was working at one point during my build up.
I have similar nodes doing the same thing and they all are working
Call tracer shows.
Set Variable #831
Call.PeripheralVariable5 = concatenate("SkillGroup.CCM2.HRNA_",Call.PeripheralVariable3,"_",Call.PeripheralVariable2,".LoggedOn") {SkillGroup.CCM2.HRNA_US_English.LoggedOn}
If #730
False; Call.PeripheralVariable5>0
05-09-2011 09:37 AM
No clue, make sure that PV2 and PV3 have the data you're expecting. Also, you might want to upgrate to 7.5.10 as it has a ton of bug fixes.
david
05-09-2011 01:28 PM
Ah...Yes. it is showing the correct informaiton ......
That was it. Something wasn't right with the previous set node.Thank you David.
Troy, a gentle reminder.
You were given excellent free assistance by a respected NetPro member and UCCE specialist. Please fulfill your responsibilities by awarding points and marking the question as solved. Thanks for participating.
Regards,
Geoff
05-09-2011 01:39 PM
Any explination as to why I can not use the following in a Set node to return a diget?
Set
Call.PeripheralVariable5 = concatenate("SkillGroup.CCM2.HRNA_",Call.PeripheralVariable3,"_",Call.PeripheralVariable2,".LoggedOn") {SkillGroup.CCM2.HRNA_US_English.LoggedOn}
If False; Call.PeripheralVariable5>0Which should be
SkillGroup.CCM2.HRNA_US_English.LoggedOn>0
But it returns a false.05-09-2011 01:55 PM
tkrisher193 wrote:
Any explination as to why I can not use the following in a Set node to return a diget?
Set
Call.PeripheralVariable5 = concatenate("SkillGroup.CCM2.HRNA_",Call.PeripheralVariable3,"_",Call.PeripheralVariable2,".LoggedOn") {SkillGroup.CCM2.HRNA_US_English.LoggedOn}
If False; Call.PeripheralVariable5>0Which should be
SkillGroup.CCM2.HRNA_US_English.LoggedOn>0
But it returns a false.
Take it one piece at a time. Try this:
Call.PeripheralVariable5 = concatenate("SkillGroup.CCM2.HRNA_","US_English",".LoggedOn")
Does that work?
david
05-09-2011 01:54 PM
Troy, a gentle reminder.
You were given excellent free assistance by a respected NetPro member and UCCE specialist. Please fulfill your responsibilities by awarding points and marking the question as solved. Thanks for participating.
Regards,
Geoff
Awww, group hug! Thanks for the kind words Geoff.
05-09-2011 03:06 PM
The key to understanding why this doesn't (and won't) work is to understand the difference between variables/symbols and strings.
A string is nothing more than an arbitrary (from ICM's perspective) sequence of characters. The string has no meaning beyond the letters and numbers that make it up. A string will be delimited by quotation marks, and can be manipulated with functions such as "concatenate".
A symbol or variable on the other hand represents some specific underlying value in the system. The actual textual characters that you see in the script editor are only there for you to understand it's meaning, behind the scenes the symbol is being matched to some internal statistic or variable value. You will notice that, unlike strings, they are correctly referenced without any quotation marks. As the characters that make up a variable name do not represent a string to the system, you cannot dynamically build variable names via concatenate or other string based functions.
What you are doing in your set node is constructing the variable name as a string, and ICM has no way of realizing that your string is meant to represent some a variable rather than simply being an arbitrary string of text. This is why you do not see a numeric value being returned.
AFAIK, there is no way in ICM to dynamically convert a string value into the variable it represents. You are going to have to reference your skill group variable explicitly in your set variable step without quotes (i.e. Set variable x = SkillGroup.CCM2.HRNA_US_English.LoggedOn). You can create some aspect of dynamic behavior by creating a string of IF nodes checking your call variable values and then branching to the appropriate set node.
05-09-2011 09:34 PM
Excellent post, Ed.
Regards,
Geoff
05-10-2011 06:06 AM
I agree with Geoff, that was an outstanding answer.
Thank you for the speedy replies.
Best regards,
Troy
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide