Установка и настройка freeswitch с отчетом о звонках в базу postgresql на CentOS 6.
Обновляем систему
yum –y update
устанавливаем необходимые пакеты
yum install git gcc-c++ autoconf automake libtool wget python make expat-devel ncurses-devel zlib zlib-devel e2fsprogs-devel libjpeg-devel unixODBC-devel openssl-devel sqlite-devel libcurl-devel pcre-devel speex-devel gnutls-devel libogg-devel libvorbis-devel curl-devel gdbm gdbm-devel libedit-devel ldns dns-devel libldns-dev postgresql postgresql-server postgresql-devel
Установка freeswitch
cd /usr/src git clone -b v1.4 https://freeswitch.org/stash/scm/fs/freeswitch.git cd /usr/src/freeswitch ./bootstrap.sh –j
в файле /usr/src/freeswitch/modules.conf раскоментируем строку
mod_cdr_pg_csv
Продолжаем установку
./configure --enable-core-pgsql-support
Если в процессе появится ошибка
checking for libldns >= 1.6.6... checking for ldns_str2rdf_a in -lldns... no configure: error: You need to either install libldns-dev or disable mod_enum in modules.conf
То необходимо установить ldns и ldns-devel
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm yum install ldns ldns-devel -y
после чего снова запустить
./configure --enable-core-pgsql-support make make install
Установим аудиофайлы
make sounds-install make moh-install make hd-moh-install make hd-sounds-install make uhd-moh-install make uhd-sounds-install make cd-sounds-install make cd-moh-install
Установим русские аудиофайлы
make sounds-ru-install make cd-sounds-ru-install make uhd-sounds-ru-install make hd-sounds-ru-install
Добавляем freeswitch в автозагрузку
useradd freeswitch cd /usr/local/ chown -R freeswitch:freeswitch freeswitch chmod -R g+w freeswitch cd /usr/src/freeswitch/build cp freeswitch.init.redhat /etc/init.d/freeswitch chmod +x /etc/init.d/freeswitch cp freeswitch.sysconfig /etc/sysconfig/freeswitch
Подредактируем /etc/init.d/freeswitch
PROG_NAME=freeswitch PID_FILE=${PID_FILE-/usr/local/freeswitch/log/freeswitch.pid} FS_USER=${FS_USER-freeswitch} FS_FILE=${FS_FILE-/usr/local/freeswitch/bin/freeswitch} FS_HOME=${FS_HOME-/usr/local/freeswitch} LOCK_FILE=/var/lock/subsys/freeswitch FREESWITCH_ARGS="-nc" RETVAL=0
Создадим ссылку для CLI
cd /usr/local/bin/ ln -s /usr/local/freeswitch/bin/fs_cli fs_cli
По умолчанию после установки будут существовать номера 1000-1019 с default паролями 1234, так что, первым делом поменяем этот пароль на любой другой. Для этого в файле vars.xml находим строку <X-PRE-PROCESS cmd=”set” data=”default_password=1234″/> и меняем значение default_password на любое другое значение.
Теперь запускаем cli
fs_cli
и в командной строке делаем reload mod_sofia или reloadxml
На этом установка freeswitch закончена
Настройка Postgresql
Запускаем postgresql
service postgresql initdb /etc/init.d/postgresql start
Добавляем в автозвгрузку
chkconfig postgresql on
Установим пароль на пользователя postgres и создадим базу для CDR.
sudo -u postgres psql
postgres=# alter user postgres with password 'postgres'; postgres=# CREATE DATABASE freeswitchdb;
Выбираем нашу базу freeswitch
postgres=# \c freeswitchdb;
И создаем таблицу
CREATE TABLE cdr( ID SERIAL PRIMARY KEY, local_ip_v4 CHAR(16), caller_id_name CHAR(20), caller_id_number CHAR(20), outbound_caller_id_number CHAR(20), destination_number CHAR(20), context CHAR(20), start_stamp timestamp default NULL, answer_stamp timestamp default NULL, end_stamp timestamp default NULL, duration INT, billsec INT, hangup_cause CHAR(30), uuid CHAR(50), bleg_uuid CHAR(50), accountcode CHAR(20), read_codec CHAR(10), write_codec CHAR(10) );
В файле /var/lib/pgsql/data/pg_hba.conf добавляем строки
host all all 127.0.0.1/32 md5. local all all md5
Настройка freeswitch для работы с postgresql
в /usr/local/freeswitch/conf/autoload_configs/cdr_pg_csv.conf.xml прописываем данные для подключения к postgresql, для этого прописываем
<param name="db-info" value="host=127.0.0.1 dbname=freeswitchdb user=postgres password=postgres connect_timeout=10" />
Где:
host-ip адрес сервера с базой postgresql
dbname-наша база
user, password-логин и пароль для подключения к базе
также в секции <schema> мы можем добавить или удалить нужные нам поля.
Для автозагрузки модуля в файл /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml добавляем строку
<load module="mod_cdr_pg_csv"/>
Загружаем модуль mod_cdr_pg_csv
fs_cli -x 'load mod_cdr_pg_csv'
Теперь отчет о звонках будет писаться в базу.