Skip to main content

A more sane approach to elastix call recordings

We put together this solution a while ago (thanks Brother Miles!), but never documented it, thought it would a good idea to put it here for anyone else who might need this (and anyone who uses Elastix for high call volume, probably does.

The challenge.

Elastix/Freepbx has good call recording abilities, but very strangely just dumps everything into a single directory. This can get REALLY bad if you have tens of thousands of calls per day, I have run accross a few scripts to convert and mode call recordings after they are saved, but that is a waste of resources, and makes it hard to integrate call recording UI's.

So we figured out the 2 places that need to be changed so that all recorded calls are saved in a Year/Month/day file structure.

Just 2 files

  • For regular calls, we need to alter the included and symlinked extensions.conf, this is found at
    • /etc/asterisk/extensions.conf
    • we just need to add the macro-dialout-trunk-predial-hook, which already exists as a section, but is empty. Add the following lines there...
exten => s,1(record),MixMonitor(${MIXMON_DIR}${STRFTIME(${EPOCH},GMT+2,%G)}"/"${STRFTIME(${EPOCH},GMT+2,%m)}"/"${STRFTIME(${EPOCH},GMT+2,%d)}"/"${UNIQUEID}."wav",,${MIXMON_POST})
exten => s,n,Macro(record-enable,${EXTTOCALL},OUT)
  • For Queue calls, we need to change the queue generation code found here:
/var/www/html/admin/modules/queues/functions.inc.php

We need to change a single line here,  find the line that includes the following:

$ext->add('ext-queues', $exten, '', new ext_setvar('MONITOR_FILENAME','/var/spool/asterisk/monitor/q${EXTEN}-${STRFTIME(${EPO$ ....


And replace it with...

//CUSTOMIZATION FOR RECORDING TO SUBDIRECTORIES
$ext->add('ext-queues', $exten, '', new ext_setvar('MONITOR_FILENAME','/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},GMT+2,%G)}/${STRFTIME(${EPOCH},GMT+2,%m)}/${STRFTIME(${EPOCH},GMT+2,%d)}/${UNIQUEID}'));

That does it! you are ready to roll. You need to "apply changed" in the WebUI in order to generate new configuration.....

Comments

  1. Hello,
    This was very useful for me. I need help with something else, though. I would like to add a new line of code just below the one that sets the MONITOR_FILENAME variable. Where in the ELASTIX templates do I make the change to be able to insert this new line of code in the CONF file?

    ReplyDelete
  2. Should be this file....

    /var/www/html/admin/modules/queues/functions.inc.php

    What are you trying to add?

    ReplyDelete
  3. awesome tip thanks - I did this on elastix 2.3 which worked a treat - now I have tried the same on a new 2.4 box and it is doing strange things. internal calls (ext -> ext) aren't getting recorded at all and the external calls are getting recorded both in the recording root and the date folders.
    I have made the changes in extensions_custom.conf - not sure if this is the problem, but I did the same on the other box..
    thanks

    ReplyDelete

Post a Comment

Popular posts from this blog

Cloud Enterprise Project/Program Management Tools

In our ongoing quest for an integrated, cloud/Open Source hybrid Business Operating System, we need to pick and implement a tool for project/Program management. Environment Our organization has 8 separate companies, which we need to track project progress across all 8.  For some companies, end users (project resources) will enter information themselves. For other companies and projects, a project co-ordinator will track progress manually from resource input. Task tracking can be on many levels, some projects will be quite detailed, other will be tracked at the milestone level only. Basic Requirements In order for this component to be successfull, it needs to satisfy the following requirements. Integrate with GApps for authentication. Integrate with GApps for document associations Support a fairly large number of project contributers/users (about 100). Handle multiple projects. Enable reporting on multiple levels, from detailed to executive overview. ...

Installing dependancies for Sun Ray on Centos 5.8

Ooo the beauty of Linux based proprietary thin clients... One of the best parts is that operating systems get updated, and SRSS doesn't. So re-installing/updating SRSS can be a bit of a moving target. So here are notes from my latest install. Dependencies and prerequisites yum install glib dhcp openldap-clients openldap tftp-server libXp openmotif22 openssl compat-libstdc++-33 libusb-devel compat-openldap gdbm.i386 openldap-devel pdksh libXfont yum groupinstall "Development Tools" wget http://pkgs.repoforge.org/htop/htop-1.0.1-1.el5.rf.x86_64.rpm yum install htop-1.0.1-1.el5.rf.x86_64.rpm (ok, not really required, but helpful on gauging load easily) wget ftp://mirror.switch.ch/pool/3/mirror/centos/5.8/os/i386/CentOS/glib-1.2.10-20.el5.i386.rpm yum install  glib-1.2.10-20.el5.i386.rpm --nogpgcheck -y cd /usr/lib ln -sf libldap-2.3.so.0.2.31 libldap.so.199 ln -sf libgdbm.so.2.0.0 libgdbm.so.3 ln -sf liblber-2.3.so.0.2.31 liblber.so.199 extract the include...