Cisco Cisco Computer Telephony Integration Option 8.5 Developer's Guide
4-72
CTI OS Developer’s Guide for Cisco Unified Contact Center Enterprise
Release 8.5(1)
Chapter 4 Building Your Application
Building Supervisor Applications
OnMonitoredAgentStateChange events. The agent select grid normally updates when the
OnMonitoredAgentStateChangeevent is received. In order to prevent this, supervisors who are not
members of the team that they are supervising will need to be marked as such. This information can be
used to avoid updates when an OnMonitoredAgentStateChange event is received for a supervisor that is
not part of the team. In order to accomplish this, the application leverages the following.
OnMonitoredAgentStateChangeevent is received. In order to prevent this, supervisors who are not
members of the team that they are supervising will need to be marked as such. This information can be
used to avoid updates when an OnMonitoredAgentStateChange event is received for a supervisor that is
not part of the team. In order to accomplish this, the application leverages the following.
1.
OnNewAgentTeamMember events will not be received for supervisors that are not part of the team.
2.
The CIL keeps a cache of all the agents and supervisors that it knows about. Agents in this cache
have properties that can be modified by applications built on top of the CIL.
have properties that can be modified by applications built on top of the CIL.
Knowing this, the application will mark every agent that is included in a OnNewAgentTeamMember
event as a member of this supervisor's team. When OnMonitoredAgentStateChange events are received,
the agent select grid will only update when the agent that is represented by the event is marked as a
member of the team. In short, any agent that does not send a OnNewAgentTeamMember event to the
CIL will not be displayed in the agent select grid. This is illustrated in the
SupervisorUIManager.ProcessMonitoredAgentStateChange() method.
event as a member of this supervisor's team. When OnMonitoredAgentStateChange events are received,
the agent select grid will only update when the agent that is represented by the event is marked as a
member of the team. In short, any agent that does not send a OnNewAgentTeamMember event to the
CIL will not be displayed in the agent select grid. This is illustrated in the
SupervisorUIManager.ProcessMonitoredAgentStateChange() method.
OnMonitoredAgentStateChange Events
OnMonitoredAgentStateChange events are sent when an agent in the supervisor’s team changes state.
Supervisor applications, like the CTI OS Toolkit Combo Desktop use this event to update structures that
store the supervisor’s team (the agent team grid). This event is processed similar to
OnNewAgentTeamMember. However, there is one subtle difference. Instead of using the Arguments
object carried with the event, the application should use the arguments associated with the agent object
cached by the CIL. This is done to correctly handle skill group membership changes related to dynamic
reskilling. The CIL contains logic that processes the OnMonitoredAgentStateChange and determines
whether or not an agent has been added or removed from a skill group. The changes in the agent’s skill
group membership are reflected in the agent object’s properties.
Supervisor applications, like the CTI OS Toolkit Combo Desktop use this event to update structures that
store the supervisor’s team (the agent team grid). This event is processed similar to
OnNewAgentTeamMember. However, there is one subtle difference. Instead of using the Arguments
object carried with the event, the application should use the arguments associated with the agent object
cached by the CIL. This is done to correctly handle skill group membership changes related to dynamic
reskilling. The CIL contains logic that processes the OnMonitoredAgentStateChange and determines
whether or not an agent has been added or removed from a skill group. The changes in the agent’s skill
group membership are reflected in the agent object’s properties.
OnMonitoredAgentInfo Event
This event can be used to populate the following agent information.
•
AgentID
•
AgentFirstName
•
AgentLastName
•
LoginName
Time in State
If your application needs to track an agent’s time in state, it can be done as follows. The algorithm is
contained in AgentSelectGridHelper.cs. The first part of the algorithm resides in the
AgentData.UpdateData() method. This method decides if the agent’s state duration is known or
unknown. An agent’s state duration is unknown if the agent has just been added to the grid or if the
agent’s state has not changed since being added to the grid. If a state change is detected after the agent
has been added to the grid, the time of the state change is marked.
contained in AgentSelectGridHelper.cs. The first part of the algorithm resides in the
AgentData.UpdateData() method. This method decides if the agent’s state duration is known or
unknown. An agent’s state duration is unknown if the agent has just been added to the grid or if the
agent’s state has not changed since being added to the grid. If a state change is detected after the agent
has been added to the grid, the time of the state change is marked.
Second, there is a timer callback that the AgentSelectGridHelper class starts when the grid is initialized.
The timer callback fires every ten seconds. When the callback fires, the method
AgentSelectGridHelper.m_durationTimer_Tick() cycles through all of the rows in the grid. Each row
who’s Time in State column is not unknown, has its value set to the time the agent changed state minus
the current time.
The timer callback fires every ten seconds. When the callback fires, the method
AgentSelectGridHelper.m_durationTimer_Tick() cycles through all of the rows in the grid. Each row
who’s Time in State column is not unknown, has its value set to the time the agent changed state minus
the current time.