The Call Center module in OpenSIPS proved to be a great asset for the Class 5 ecosystem. This module provides a powerful and flexible call queuing and distribution engine. Still we cannot say it is an 100% Call Center solution as the module does not provide any support for the agent side, but only for managing the queue and dispatching the calls to the agents.
Features like agent portal, supervisor mode, call barging and other which are 100% agent-oriented are yet not directly provided by the OpenSIPS Call Center module.
Still, starting with version 3.1, the Call Center got several improvements to make easier the integration of the module with different external tools for the agent side, to overall improve the agent capabilities and experience in an OpenSIPS based solution.
In a call center, the time of the agents is one of the most available resource. So we worked out some improvement on the wrap-up time settings. In the new version, instead of a global wrap-up time, each agent may optional have his own wrap-up time (to reflect his skillfulness). Even more, a certain flow/queue may force an upper limit for the agent’s warp-up time, when serving calls from those flows – after all, each flow may deliver different calls, with different complexity and needs.
Pre-call agent announcement
The call distribution provided by the Call Center is very flexible, and an agent is able to receive calls from multiple flows/queue in the same time (based on the skill matching). So, for a prompt customer interaction, it is crucial for the agent to know, prior talking to the customer, which flow/queue delivered the call (to know if this is a “technical support” call, a “information” call or a “billing” call, for example).
So, the Call Center module in OpenSIPS 3.1 supports now the pre-call agents announcements. What are these announcements? These are announcements to defining/describing the flow/queue, announcements that are played to the agent just before being connected to the call delivered by that flow/queue; or shortly, an announcement identifying to the agent the flow/queue that is sending the call to him.
Controlling and limiting the number of calls in a queue is also a critical aspect for a call center. The 3.1 version of OpenSIPS brings here the concept of call dissuading. This is a mechanism to persuade certain caller to terminate their calls, in order to avoid overloading the queue / call center. Based on per-flow/queue setting, OpenSIPS can do call dissuading upon several cases:
- if the number of calls already queued exceeds a certain threshold (defined per flow/queue)
- if the Average Waiting Time (AWT) exceeds a certain threshold (defined per flow/queue)
- if the call is already waiting in the queue for certain amount of time (defined per flow/queue)
As a way of performing the dissuading, OpenSIPS will playback an dedicated announcement to the caller and, depending on the flow setting, the call may be terminated (hard dissuading) or placed in the queue (soft dissuading).
For integration purposes, the Call Center in OpenSIPS 3.1 was extended with the support for events, more particular, for events related to the agents.
Each time the status of an agent changes (he logs in or out, he gets a new calls or switches to wrap-up state), an event will be triggered by OpenSIPS. These events will allow an external application (like a agent portal or call-center dashboard) to monitor in realtime what is status of the agents, how they perform and what are the calls they get.
The new E_CALLCENTER_AGENT_REPORT event carries a lot of information about the status of the agent (after a change), like the duration of the wrap-up time (after terminating a call) or the flow/queue which delivered the call to the agent (when the agent gets a new call).
But the new integration capabilities provided by OpenSIPS 3.1 are not only related to the actual Call Center functionality, but also related to how OpenSIPS, as software, integrated in the overall platform built by the service providers.
The Call Center module uses twp types of DB tables, some for provisioning (to read the definitions of the agents and flows) and some for realtime data generated at runtime (like the calls).
As, by nature, we have two types of data, in complex Geo-redundant setups, most probably they will have to reside in separate databases – maybe some DB clusters for provisioning data and some local DBs for the runtime data.
So, the module has now multiple DB connectors (for each type of data, provision, accounting and runtime) which will simplify the usage of the module.
When integrating multiple software’s into a single solution, the DB become kind of central point of gluing everything together. And different components may end up sharing DB tables, so any flexibility (on the components side) when comes to table customization (as definition) is a huge win.
For such purposes, in OpenSIPS 3.1, the Call Center module allows full customization (as name of the tables and the names of the columns) for the tables used for provisioning the agents and the flows/queues in the system.
All the additions brought by OpenSIPS 3.1 to the Call Center module are definitely important steps on the path towards building a mighty Class 5 capable platform.