I am in the process of developing a custom Agent Real-Time report which should display the following :
1. Total Talk Time for a call (Should be updated after every refresh for current ongoing call)
2. Total Hold Time for a call (Should be updated after every refrsh for current ongoing call)
There is a field named "Duration" in Agent Real-Time CUIC stock report, which shows the "Time In State" for the current state of the agent
For example :
1. Agent Receives a call and talks for 2 minutes : Agent State is shown as "Talking" and Duration is shown as 2 minutes in CUIC report
2. Agent Puts the call on hold for 2 minutes : Agent State is shown as "Hold" and Duration is reset to 0 shown as 2 minutes in CUIC report
3. Agent Retrievs the call and continues talking with the customer for 2 more minutes : Agent State is shown as "Talking" and Duration is reset and shown as 2 minutes in CUIC report
My aim is to show the cumulative Talk-Time of 4 minutes and hold time of 2 minutes.
Is there a way to acheive this ?
If not using a Database Query or Anonymous block, can we do this using a stored procedure in Real-Time ?
I'm afraid you're probably not going to find an efficient way to do this. The Agent_Skill_Group_Real_Time table only holds the most recent Agent state - that's where existing Agent RealTime reports get that data.
If you enable Agent State Trace on individual Agents, you can get extended data about Agent states from the Agent_State_Trace table. However, this gets large very quickly, and running custom reports on it while it's in the HDS is very resource-intensive... especially for the needs of a Real-Time report. To get good Real-Time data out of this table, you'd have to do very regular exports (every few seconds) of the data to an external database, and index the exported table differently for your needs.