cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1518
Views
10
Helpful
14
Replies

Skillgroup.loggedOn>0 isn't working

tkrisher193
Level 1
Level 1

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

2 Accepted Solutions

Accepted Solutions

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

View solution in original post

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.

View solution in original post

14 Replies 14

Can you display real time stats and look at what the skill group stats are saying?  Maybe post a screen shot of it.

david

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)

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

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.

Awesome, glad you figure it out.

david

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

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

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

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>0

Which should be

    SkillGroup.CCM2.HRNA_US_English.LoggedOn>0

But it returns a false.

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>0

Which 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

geoff@hp.com


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.

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.

Excellent post, Ed.

Regards,

Geoff

I agree with Geoff, that was an outstanding answer.

Thank you for the speedy replies.

Best regards,

Troy