Cisco Cisco Computer Telephony Integration Option 9.0 Developer's Guide

Page of 490
   
4-68
CTI OS Developer’s Guide for Cisco Unified Contact Center Enterprise
Release 8.5(3)
Chapter 4      Building Your Application
Building Supervisor Applications
In the following section, string keys are used as keys to method calls. This is for the sake of readability. 
A developer writing an application can use either string or integer based keys.
General Flow
The general flow of a supervisor application is as follows.
1.
Request the supervisor’s teams.
2.
Start monitoring the supervisor’s team.
3.
Select a team member and start monitoring the selected team member’s activity.
4.
Perform supervisory actions on the currently monitored call.
These steps illustrate the layers of a supervisor application. First, the application gets the team. Once the 
team is retrieved, the supervisor application can monitor agents. This generates more events/information 
allowing the supervisor application to monitor agent calls.
Monitored and Unmonitored Events
When writing a supervisor application, developers is confronted with two types of events: monitored 
events and unmonitored events.  
Unmonitored events are received for agent, call, and button enablement events associated with the 
supervisor. Monitored events are received to notify the supervisor of agent, call, and button enablement 
events corresponding to an agent or call that is currently monitored by the supervisor. These events carry 
a field named 
CTIOS_ISMONITORED
. This field is set to true.
For example, if a supervisor changes state to ready, the supervisor receives an AgentStateEvent. If a 
supervisor is monitoring an agent and the monitored agent changes state, the supervisor receives an 
OnMonitoredAgentState event. Call events behave in a similar manner. When the supervisor puts a call 
on hold, the supervisor receives an OnCallHeld event. When the supervisor is monitoring an agent and 
that agent puts a call on hold, the supervisor receives an OnMonitoredCallHeld event.
Button enablement events behave differently. When the supervisor is monitoring agents on the 
supervisor’s team, the agent receives OnButtonEnablementChange events for the monitored agent. It is 
important for the application not to apply these events to elements of the application that control the 
supervisor’s or any of the supervisor’s calls state. For example, if a monitored agent changes state to 
ready, the supervisor receives a ButtonEnablementChange event. The supervisor should not apply this 
event since the event does not apply to the supervisor’s state.
To determine if an event is monitored, check the payload of the event for the “Monitored” field. If the 
field exists and is set to true, the event is a monitored event.
Requesting and Monitoring the Supervisor’s Teams
This section discusses steps 1 and 2 in the flow of a supervisor application. The methods and events listed 
below are used to request and monitor the team.
Methods Called:
Agent.RequestAgentList(Arguments args)
Agent.StartMonitoringAgentTeams(Arguments args)
Events Processed: