Event Scenarios
The following page depicts roughly at which point events will be dispatched to an API consumer. Workitem and agent state events are dispatched as they are received from Finesse.
Agent logs in, changes state to Ready, changes state to Not Ready and logs out
sequenceDiagram
participant CTI
participant Agent
participant API Consumer
Agent-->>+CTI: Log in
CTI->>+Agent : Channel state Not Ready
Agent->>+API Consumer: agentStateChange( Not Ready )
Agent-->>+CTI: Set channel to ready
CTI->>+Agent : Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )
Agent-->>+CTI: Set channel to Not Ready
CTI->>+Agent : Channel state is Not Ready
Agent->>+API Consumer: agentStateChange( Not Ready )
Agent-->>+CTI: Logout channel
CTI->>+Agent : Channel state Logout
Agent->>+API Consumer: agentStateChange( Logout )
Incoming call in Ready state
sequenceDiagram
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate
Agent-->>+CTI: Answer call
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect
Incoming call in Not Ready state
sequenceDiagram
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate
Agent-->>+CTI: Answer call
CTI->>+Agent: Channel state is Talking
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect
Incoming call in Ready state without Wrap-Up
sequenceDiagram
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate
Agent-->>+CTI: Answer call
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect
Agent-->>+CTI: End call
CTI->>+Agent: Call ended
Agent->>+API Consumer: workitemEnd
CTI->>+Agent: Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )
Incoming call in Ready state with Wrap-Up
sequenceDiagram
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate
Agent-->>+CTI: Answer call
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect
Agent-->>+CTI: End call
CTI->>+Agent: Call ended
CTI->>+Agent: Channel state is Work Ready
Agent->>+API Consumer: agentStateChange( Wrap-Up )
Agent->>+API Consumer: workitemWrapup
Agent-->>+CTI: Set Wrap-Up reason
CTI->>+Agent: Call data updated
Agent->>+API Consumer: callVariableChanged
Agent->>+API Consumer: wrapupDataChanged
Agent-->>+CTI: Leave Wrap-Up
CTI->>+Agent: Wrap-Up ended
Agent->>+API Consumer: workitemEnd
CTI->>+Agent: Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )
Outgoing call in Ready state
sequenceDiagram
participant CTI
participant Agent
participant API Consumer
Agent-->>+CTI: Dials
CTI->>+Agent: Channel state is Not Ready
Agent->>+API Consumer: agentStateChange( Not Ready )
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Outgoing call
Agent->>+API Consumer: workitemCreate
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect
Agent-->>+CTI: End call
CTI->>+Agent: Call ended
Agent->>+API Consumer: workitemEnd
CTI->>+Agent: Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )
Pause / Resume call
sequenceDiagram
participant CTI
participant Agent
participant API Consumer
Agent-->>+CTI: Pause call
CTI->>+Agent: Call paused
Agent->>+API Consumer: workitemPause
Agent-->>+CTI: Resume call
CTI->>+Agent: Call resumed/active
Agent->>+API Consumer: workitemResume
Update call variables
sequenceDiagram
participant CTI
participant Agent
participant API Consumer
Agent-->>+CTI: Update call data
CTI->>+Agent: Call data updated
Agent->>+API Consumer: callVariableChanged
Unanswered call in Ready state (RONA)
sequenceDiagram
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate
CTI->>+Agent: Call ended
Agent->>+API Consumer: workitemEnd
CTI->>+Agent: Channel state is Not Ready
Agent->>+API Consumer: agentStateChange( Not Ready )
Transfer call (warm/consultative transfer) in Ready state
sequenceDiagram
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate (1)
Agent-->>+CTI: Answer call
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect (1)
Agent-->>+CTI: Initiate consultation call
Agent->>+API Consumer: workitemPause (1)
Agent->>+API Consumer: workitemCreate (2)
CTI->>+Agent: Consultation call answered
Agent->>+API Consumer: workitemConnect (2)
Agent-->>+CTI: Complete transfer
Agent->>+API Consumer: workitemEnd (2)
Agent->>+API Consumer: workitemEnd (1)
CTI->>+Agent: Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )
Transfer call (cold/blind transfer) in Ready state
sequenceDiagram
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate (1)
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
Agent-->>+CTI: Answer call
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect (1)
Agent-->>+CTI: Initiate blind transfer
Agent->>+API Consumer: workitemPause (1)
Agent->>+API Consumer: workitemCreate (2)
Agent->>+API Consumer: workitemEnd (2)
Agent->>+API Consumer: workitemEnd (1)
CTI->>+Agent: Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )
Conference in Ready state
sequenceDiagram
CTI->>+Agent: Channel state is Reserved
Agent->>+API Consumer: agentStateChange( Active )
CTI->>+Agent : Incoming call
Agent->>+API Consumer: workitemCreate (1)
Agent-->>+CTI: Answer call
CTI->>+Agent: Call answered
Agent->>+API Consumer: workitemConnect (1)
Agent-->>+CTI: Initiate consultation call
Agent->>+API Consumer: workitemPause (1)
Agent->>+API Consumer: workitemCreate (2)
CTI->>+Agent: Consultation call answered
Agent->>+API Consumer: workitemConnect (2)
Agent-->>+CTI: Conference
Agent->>+API Consumer: workitemResume (1)
Agent->>+API Consumer: workitemEnd (2)
Agent-->>+CTI: Leave conference
Agent->>+API Consumer: workitemEnd (1)
CTI->>+Agent: Channel state is Ready
Agent->>+API Consumer: agentStateChange( Ready )