Impact of MySQL CDR on Call Center Software for Asterisk

Asterisk has revolutionized telecom, PBX and call centers. Asterisk is also widely used as a media gateway and voice recording server. It is a vast and daunting task to document all the vertical and horizontal applications of Asterisk. We at Indosoft have experienced the impact of Asterisk on contact centers as well as call center software development. The growth and maturity of  Asterisk is startling. As a consequence, we  do from time to time encounter difficulties in the implementation of the features essential in a contact center software as Asterisk introduces new and extremely useful functional enhancements.

Asterisk introduced MySQL CDR as an enhancement to its CDR (Call Detail Record). CDRs provide a detailed log of call activity and an ideal CDR especially for use in contact center software should capture the complete event life cycle of a call. Typically PBX and media gateways might want to be able to do ‘Third Party Billing’. CDR is also critical for ‘Least cost Routing’ billing as well as fraud detection, and resource management. Call center software requires complete cradle to grave life cycle capture of the call detail. In a multi-tenant software these call details are segmented based on the tenants of the call center software suite. Within a tenant, the billing details of the call center software will have to be identified at Queue level so that an outsourced contact center can share its agents among multiple clients and be able to bill them appropriately based on calls.

By default, Asterisk provides CDR output as a flat text file. The Asterisk MySQL CDR add-on can be used to insert this data into a MySQL database. Unfortunately, this can cause serious issues for a call center software. Within a contact center, the call center software needs to be able to use resources quickly and efficiently for both inbound ACD and outbound predictive dialing. After a hangup of a call, the channel in Asterisk stays open till the CDR write has completed. With the flat text file, this only takes milliseconds due to operating system file buffering. If you are writing the CDR to MySQL and the database is slow to respond, the channel will stay open and locked for several seconds. Implementing extra features within Asterisk that expect a channel to be freed and available for other operations within reasonable time, will encounter nasty surprises. A perfect example would be to implement a TPV (Third Party verification) for completing a sale in both inbound and outbound call centers using techniques that expect the channel to be free once you disconnect a call. A contact center with limited outgoing line resources will experience serious difficulty if the call center software is unable  to use these lines in a time effective manner for calls. Taking this a step further, if the MySQL database server fails or if the call center has network issues, the channels will stay open indefinitely causing your contact center enormous grief. This will go on until the channel count reaches a threshold and the call activities will cease.