Freeswitch CDR Postgresql

Запись 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
Только авторизованные участники могут оставлять комментарии.
  • freeswitch/db/fs_cdr_pg_csv.txt
  • Последние изменения: 2018/11/09