Skip to main content
Skip table of contents

Recorder Configurations

Before doing anything, make sure mod_lua and dkjson is enabled/installed on both machines. 

1- Recording Script

  • Download record.lua file.

  • Place it in the "scripts" directory. It can be found under "/usr/local/freeswitch/scripts/" or "/usr/share/freeswitch/scripts/" depending on whether you installed recorder from source or package, respectively.

  • Open record.lua and change the url url = "http://<ip-address>:9900/mixer/sip-data". And url = "http://<ip-address>:9900/mixapi"

  • Create a direcotry/folder in the path /usr/local/freeswitch with the name cucmRecording. now enter to this cucmRecording folder and create two more folders/directories with names “streams“ and “sessions”.
    The directory/folder can be created with

CODE
mkdir <directry or folder name>
  • Edit/open the recording script (record.lua) and assign the correct paths to the "recording_dir" and "mixedRecordingDir" variables.

  • The correct path can be found via "pwd” command after checking into each directory, the “pwd” command will print the working directory path.

CODE
local recording_dir = '/usr/local/freeswitch/cucmRecording/streams'
local mixedRecordingDir = '/usr/local/freeswitch/cucmRecording/sessions'
  • Make sure to assign all user permissions to both directories used in these variables.

CODE
#chmod 777 -R "full/address/of/directory"

2 - Dialplan Configuration

  • Switch to the dialplan directory /usr/local/freeswitch/conf/dialplan

  • Add the following lines of code in the public .xml file.

CODE
<extension name="outside_call" continue="true">
	<condition>
		<action application="set" data="outside_call=true"/>
        <action application="log" data="INFO PP-----${sip_from_host}--------------Starting Record Dialplan --------------12124"/>
        <action application="export" data="RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)}"/>
	</condition>
</extension>

<extension name="CUCM Recording Profile">
	<action application="log" data="INFO Entering Call from CUCM"/>
	<condition field="${sip_from_host}" expression="192.168.1.26">
		<action application="lua" data="record.lua"/>
	</condition>
</extension>

in case of multiple CUCM we need to add all the ip addresses using '|' pipe.

CODE
<extension name="CUCM Recording Profile">
	<action application="log" data="INFO Entering Call from CUCM"/>
	<condition field="${sip_from_host}" expression="192.168.1.26|192.168.1.27|192.168.1.28">
		<action application="lua" data="record.lua"/>
	</condition>
</extension>

3 - SIP Profiles

  • Switch to the sip_profiles directory in /usr/local/freeswitch/conf/sip_profiles.

  • Edit the internal.xml and external.xml SIP profiles and enable or uncomment the Third Party Call Control option in both of them.

  • Change the value flag to "true" if it is set to "false" or "proxy".

CODE
<param name="enable-3pcc" value="true"/>
  • We also need to add one more line to the internal.xml file if it doesn't already exist.

CODE
<param name="parse-all-invite-headers" value="true"/>
  • Now set the rtp-ip, sip-ip, ext-rtp-ip and ext-sip-ip equals to your recorder’s machine ip in external.xml.

  • CODE
    <param name="rtp-ip" value="<ip-address>"/>
    <param name="sip-ip" value="<ip-address>"/>
    <param name="ext-rtp-ip" value="<ip-address>"/>
    <param name="ext-sip-ip" value="<ip-address>"/>


4- Access Control List (ACL)

Navigate to the directory "/usr/local/freeswitch/conf/autoload_configs"

Open the file "acl.conf.xml" and add the following line “<node type="allow" cidr="<CUCM_IP>/32"/>” under the "<node type="allow" domain="$${domain}"/>" line. (Replace <CUCM_IP> with the IP address of your CUCM installation). In case of multiple CUCM send invite recorder, add multiple lines each to allow each one of the CUCMs.

CODE
<node type="allow" domain="$${domain}"/>
.
.
<node type="allow" cidr="<CUCM_IP>/32"/>     <!--- Add this line and replace "<CUCM_IP>" with the IP address of your CUCM installation -->

5-Disable STUN

Navigate to the file vars.xml in /usr/local/freeswitch/conf open the file and comment out following lines.

<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=stun:stun.freeswitch.org"/>

<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=stun:stun.freeswitch.org"/>

Since it is a pre process we need to restart the Recorder.

CODE
#sudo systemctl restart freeswitch

7- Utilities

After the Recorder is restarted, Install the following utilities by running the commands:

CODE
#sudo apt install -y lua-socket
#sudo apt install -y lua-dkjson


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.