Freeswitch CDR NAtive Postgresql
Модуль mod_cdr_pg_csv доступен из репы только для версии 1.6. Для версии 1.8 (Debian Jessie, strecth) требуется компиляция из исходников.
Mod cdr_pg_csv
Запись Cdr в PostgreSql.
Из под рута
# useradd fscdruser
Из под postgres
#su - postgres $createuser fscdruser $createdatabase -O fscdruser fscdr
или
$createdb -O fscdruser fscdr
Из fscdruser shell
#su - fscdruser $psql fscdr fscdr=>
Создадим стандартную таблицу cdr. Как мы увидим ниже, состав таблицы можно варьировать по вашему усмотрению.
CREATE TABLE cdr ( id serial PRIMARY KEY, local_ip_v4 inet NOT NULL, caller_id_name VARCHAR, caller_id_number VARCHAR, destination_number VARCHAR NOT NULL, context VARCHAR NOT NULL, start_stamp TIMESTAMP WITH TIME zone NOT NULL, answer_stamp TIMESTAMP WITH TIME zone, end_stamp TIMESTAMP WITH TIME zone NOT NULL, duration INT NOT NULL, billsec INT NOT NULL, hangup_cause VARCHAR NOT NULL, uuid uuid NOT NULL, bleg_uuid uuid, accountcode VARCHAR, read_codec VARCHAR, write_codec VARCHAR, sip_hangup_disposition VARCHAR, ani VARCHAR );
Exit: Команды выхода
fscdr=> \q $ exit
Freeswitch configs
Проверьте загружен ли модуль
fs_cli - x 'module_exists mod_cdr_pg_csv' true
Иначе установите, из репы или скомпилируйте из исходников в зависимости от типа установки.
apt-get install freeswitch-mod-cdr-pg-csv
Не забудьте расскоментровать в modules.conf.xml.
../autoload_configs/cdr_pg_csv.conf.xml Конфигурационный файл модуля. Стоит ли говорить, что вы можете добавить любые, в том числе пользовательские переменные канала. Но потребуется изменить и структуру таблицы.
<param name="db-info" value="host=127.0.0.1 dbname=fscdr user=fscdruser password='' connect_timeout=10" /> <param name="db-table" value="cdr"/>
<schema> <field var="local_ip_v4"/> <field var="caller_id_name"/> <field var="caller_id_number"/> <field var="destination_number"/> <field var="context"/> <field var="start_stamp"/> <field var="answer_stamp"/> <field var="end_stamp"/> <field var="duration" quote="false"/> <field var="billsec" quote="false"/> <field var="hangup_cause"/> <field var="uuid"/> <field var="bleg_uuid"/> <field var="accountcode"/> <field var="read_codec"/> <field var="write_codec"/> <field var="sip_hangup_disposition"/> <field var="ani"/> </schema>
Применить изменения
fs_cli -x 'reload mod_cdr_pg_csv'
Tips & tricks
Парсим в json прямо из Postgres
#! /bin/bash db=$1 table=$2 filename=/home/oleg/$(date +%d-%m-%y_%H:%M:%S)_$table.json su -c "psql -d $db -c 'SELECT row_to_json(r) FROM $table AS r;'" postgres | grep "{*}" | cat > $filename