2018-03-31
Создаем таблицу для данных
CREATE TABLE cdr (
calldate datetime NOT NULL default '0000-00-00 00:00:00',
clid varchar(80) NOT NULL default '',
src varchar(80) NOT NULL default '',
dst varchar(80) NOT NULL default '',
dcontext varchar(80) NOT NULL default '',
channel varchar(80) NOT NULL default '',
dstchannel varchar(80) NOT NULL default '',
lastapp varchar(80) NOT NULL default '',
lastdata varchar(80) NOT NULL default '',
duration int(11) NOT NULL default '0',
billsec int(11) NOT NULL default '0',
disposition varchar(45) NOT NULL default '',
amaflags int(11) NOT NULL default '0',
accountcode varchar(20) NOT NULL default '',
uniqueid varchar(32) NOT NULL default '',
userfield varchar(255) NOT NULL default '',
did varchar(50) NOT NULL default '',
recordingfile varchar(255) NOT NULL default '',
KEY `calldate` (`calldate`),
KEY `dst` (`dst`),
KEY `accountcode` (`accountcode`),
KEY `uniqueid` (`uniqueid`)
);
Устанавливаем драйвера Для Debian подобных ОС, необходимо выполнить следующую команду:
sudo apt-get install unixodbc unixodbc-dev libmyodbc
затем
sudo nano /etc/odbcinst.ini
Вводим:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
Проверяем:
odbcinst -q -d
и должны увидеть следующее:
odbcinst -q -d
[MySQL]
Затем
sudo nano /etc/odbc.ini
Содержимое:
[freeswitch]
Driver=MySQL
SERVER=5.5.5.5
PORT=3306
DATABASE=freeswitch
Socket=/var/run/mysqld/mysqld.sock
option=3
USER=freeswitch
PASSWORD=password
Проверяем
echo "select 1" | isql -v freeswitch
Настройка mysql:
sudo nano /etc/mysql/my.cnf
Комментируем
# bind-address = 127.0.0.1
и затем
sudo /etc/init.d/mysql restart
Устанавливаем молуль freeswitch odbc
sudo apt-get install freeswitch-mod-odbc-cdr
Включаем модуль в автозагрузку в файле /etc/freeswitch/autoload_configs/modules.conf.xml вставить строку
<load module="mod_odbc_cdr"/>
Там же создаем файл odbc_cdr.conf.xml содержимое:
<configuration name="odbc_cdr.conf" description="ODBC CDR Configuration">
<settings>
<!-- <param name="odbc-dsn" value="freeswitchcdr:DB_USER:DB_PASSWORD"/> -->
<param name="odbc-dsn" value="odbc://freeswitch"/>
<!-- global value can be "a-leg", "b-leg", "both" (default is "both") -->
<param name="log-leg" value="both"/>
<!-- value can be "always", "never", "on-db-fail" -->
<param name="write-csv" value="on-db-fail"/>
<!-- location to store csv copy of CDR -->
<param name="csv-path" value="/var/log/freeswitch/odbc_cdr"/>
<!-- if "csv-path-on-fail" is set, failed INSERTs will be placed here as CSV files otherwise they will be placed in "csv-path" -->
<param name="csv-path-on-fail" value="/var/log/freeswitch/odbc_cdr/failed"/>
<!-- dump SQL statement after leg ends -->
<param name="debug-sql" value="true"/>
</settings>
<tables>
<!-- only a-legs will be inserted into this table -->
<table name="freeswitch_cdr" log-leg="a-leg">
<field name="calldate" chan-var-name="start_stamp"/>
<field name="clid" chan-var-name="caller_id_name"/>
<field name="src" chan-var-name="caller_id_number"/>
<field name="dst" chan-var-name="destination_number"/>
<field name="dcontext" chan-var-name=""/>
<field name="channel" chan-var-name="channel_name"/>
<field name="dstchannel" chan-var-name="bridge_channel"/>
<field name="lastapp" chan-var-name="hangup_cause"/>
<field name="lastdata" chan-var-name="sip_hangup_disposition"/>
<field name="duration" chan-var-name="duration"/>
<field name="billsec" chan-var-name="billsec"/>
<field name="disposition" chan-var-name="hangup_cause"/>
<field name="lastapp" chan-var-name="current_application"/>
<field name="amaflags" chan-var-name="amaflags"/>
<field name="uniqueid" chan-var-name="uuid"/>
<field name="recordingfile" chan-var-name="recordingfile"/>
<field name="userfield" chan-var-name=""/>
</table>
</tables>
</configuration>
настройка записи разговора дилплана:
<action application="set" data="recordingfile=/var/recordings/${strftime(%Y-%m-%d-%H-%M-%S)}_${caller_id_number}_${destination_number}.mp3"/>
<action application="export" data="execute_on_answer=record_session ${recordingfile}"/>
Загружаем модель:
fs_cli
load mod_odbc_cdr
Если в дальнейшем вы будете вносить изменения в файл odbc_cdr.conf.xml их можно применить командой:
reload mod_odbc_cdr