You may use your own reporting tools to be able to produce your own reports provided you do not use the XiVO server original tables, but copy the tables to your own data server. You may use the following procedure as a template :
- Allow remote database access on XiVO
- Create a postgresql account read only on asterisk database
- Create target tables in your database located on the data server
- Copy the statistic table content to your data server
- The queue_log table of the asterisk database is filled by events from Asterisk and by custom dialplan events
- xivo-stat fill_db is then used to read data from the queue_log table and generate the tables stat_call_on_queue and stat_queue_periodic
- The web interface generate tables and graphics from the stat_call_on_queue and stat_queue_periodic tables depending on the selected configuration
Statistic Data Table Content¶
This table is used to store each call individually. Each call received on a queue generates a single entry in this table containing time related fields and a foreign key to the agent who answered the call and another on the queue on which the call was received.
It also contains the status of the call ie. answered, abandoned, full, etc.
|callid||numeric value||This call id is also used in the CEL table and can be used to get call detail information|
|ringtime||Ringing duration time in seconds|
|talktime||Talk time duration in seconds|
|waittime||Wait time duration in seconds|
|status||See status description below|
|queue_id||Id of the queue, the name of the queue can be found in table
|agent_id||Id of the agent, the agent name can be found in table
Queue Call Status¶
|full||Call was not queued because queue was full, happens when the number of calls is greater than the maximum number of calls allowed to wait|
|closed||Closed due to the schedule applied to the queue|
|joinempty||No agents were available in the queue to take the call (follows the join empty parameter of the queue)|
|leaveempty||No agents available while the call was waiting in the qeuue|
|divert_ca_ratio||Call diverted because the ratio number of agent number of calls waiting configured was exceeded|
|divert_waittime||Call diverted because the maximum expected waiting time configured was exceeded|
|answered||Call was answered|
|abandoned||Call hangup by the caller|
|timeout||Call stayed longer than the maximum time allowed in queue parameter|
This table is an aggregation of the queue_log table.
This table contains counters on each queue for each given period. The granularity at the time of this writing is an hour and is not configurable. This table is then used to compute statistics for a given range of hours, days, week, month or year.
|time||time period, all counters are aggregated for an hour|
|answered||Number of answered calls during the period|
|abandoned||Number of abandoned calls during the period|
|total||Total calls received during the period|
|full||Number of calls received when queue was full|
|closed||Number of calls received on close|
|joinempty||Number of calls received no agents available|
|leaveempty||Number of calls diverted agents not available during the wait|
|divert_ca_ratio||Number of calls diverted due to the number of agent number versus calls waiting configured was exceeded|
|divert_waittime||Number of calls diverted because the maximum expected waiting time configured was exceeded|
|timeout||Number of calls diverted because the maximum time allowed in queue parameter was exceeded|
This table is used to match agents to an id that is different from the id in the agent configuration table. This is necessary to avoid loosing statistics on a deleted agent. This also means that if an agent changes number ie. Agent/1001 to Agent/1202, the supervisor will have to take this information into account when viewing the statistics. Affecting an old number to a another agent also means that the supervisor will have to ignore entries for this given agent for the period before the number assignment to the new agent.
This table is used to store queues in a table that is different from the queue configuration table. This is necessary to avoid losing statistics on a deleted queue. Renaming a queue is also not handled at this time.