Настройка Asterisk
Для того, чтобы Asterisk смог взаимодействовать с новыми столбцами в таблице, необходимо в файле создать их алиасы.
Добавим в конец этого файла ( секция ) строчки:
Вместо «название_столбца» вставьте название столбца, в котором хранится название записи звонка, например «filename».
Алиас «remoteip» нужен для записи IP адреса клиента Asterisk. Это НЕОБЯЗАТЕЛЬНО.
Создание алиаса и наличие в базе колонки «calldate» обязательно для правильной работы CDR Viewer.
Все изменения производим в , либо в . В зависимости от того, в какой файле у нас написан диалплан.
Если название столбца, в котором хранится название записи звонка у вас отличается от «filename», то необходимо внести соответствующие изменения в диалплан.
Необходимо изменить строку на
В «globals» добавим пару переменных:
Добавим макрос.
Сразу уточним, что в этом макросе, если RECORDING=1 запись прямо во время разговора конвертируется в MP3. т.е. существует некоторая нагрузка на сервер.
Если же RECORDING=2, то нагрузка на сервер минимальная, т.к. запись выполняется в родной формат Asterisk — WAV. Конвертирование в MP3 должно быть выполнено
с помощью скрипта , который можно найти в папке docs. В скрипте написаны подробные комментарии по его настройке
Пример вызова макроса:
Пример вызова макроса:
Дополнительно (необязательно). Если НЕ использовали файл импорта в базу «cdr_mysql.sql»
В Asterisk если используется макрос, то звонок совершается с экстеншеном s.
Чтобы Номер назначения был действительным, а не s или s, то сделаем следующее:
- Теперь нужно добавить триггер на таблицу.
Для этого зайдем в Триггеры — Добавить триггер. Назначаем имя триггеру, остальное оставляем без изменений. В поле «Определение» вставляем текст ниже:
Для того, чтобы в поле записывался правильный Номер назначения, нужно отредактировать диалплан. Макрос выше в редактировании не нуждается.
В используемом у вас макросе необходимо добавить строчку, это только пример. Задайте правильные имена параметров (${number}, ${ARG1}).
Что такое Asterisk CDR Viewer?
Надеюсь, что Вы уже знаете, что такое CDR и для чего он нужен. И (руководствуясь статьями, в т.ч. с этого сайта) уже настроили свою систему asterisk для сохранения информации о звонках в базу данных (MySQL). И теперь Вам хотелось бы не просто «залезать» в базу MySQL чем-то неудобным (типа PHP MyAdmin), а просматривать кто, куда и сколько звонил (или дать такую возможность людям, которые ничего не понимают в PHP, MySQL, Apache,…).
Так вот, Asterisk CDR Viewer — это та «фишка», которая позволит просматривать звонки в удобном виде, а также (что немаловажно) фильтровать информацию о звонках, делать выборки (и делать выводы на основании этих выборок). Asterisk CDR Viewer может работать с различными версиями asterisk: как 1.8 (и ниже), так и 10-й, 11-й, а также с самыми новыми версиями астериска (12-й и 13-й)
Asterisk CDR Viewer может работать с различными версиями asterisk: как 1.8 (и ниже), так и 10-й, 11-й, а также с самыми новыми версиями астериска (12-й и 13-й).
Этапы настройки записи CDR в MySQL
Настройка сохранения истории звонков asterisk (CDR) в базу данных формата MySQL состоит из двух частей, каждая из которых состоит из нескольких этапов. Части могут настраиваться независимо и параллельно (до определенного момента).
Часть 1. Установите и настройте MySQL сервер
- Установите MySQL сервер
- Создайте базу данных для asterisk
- Создайте таблицу для asterisk
Часть 2 – настройка asterisk
- Установите компоненты для работы с MySQL: MySQL client и библиотеку для поддержки MySQL
- Пересоберите asterisk для работы с MySQL – cdr_mysql
- К этому моменту должна быть выполнена часть 1.
- Проверьте подключение к MySQL Server
- Настройте asterisk для работы с MySQL
И отдельным пунктом вынесены возможные ошибки, возникающие в процессе настройки MySQL / asterisk.
Installation
Once the download finishes, extract the package:
Then change to the newly extracted directory that contains all files:
And finally start the installation script:
The installation script will do several things:
- Check if the software is already installed, if so it will abort and exit
- Check if the database qstats exists, if so, it will abort and exit.
- It will install the ionCube loader for your platform and PHP version
- It will install an init script for the asterniclog parser daemon
- It will install the perl-Time-HiRes module
- It will create a MySQL database and tables named ‘qstats’
- It will install both the parselog tool in /usr/local/parselog and the web application in /var/www/html/stats
Подготовим FreeSWITCH для работы с MySQL через ODBC
Предполагается, что сервер mysql () установлен.
yum install -y mysql-connector-odbc unixODBC unixODBC-devel
Проверим odbcinst.ini
# Driver from the mysql-connector-odbc package # Setup from the unixODBC package Description = ODBC for MySQL Driver = /usr/lib/libmyodbc5.so Setup = /usr/lib/libodbcmyS.so Driver64 = /usr/lib64/libmyodbc5.so Setup64 = /usr/lib64/libodbcmyS.so FileUsage = 1
Проверим подключение к MySQL
echo "select 1" | isql -v freeswitchcdr
Нажмите, чтобы отобразить
Нажмите, чтобы скрыть
+---------------------------------------+ | Connected! | | | | sql-statement | | help | | quit | | | +---------------------------------------+ SQL> select 1 +---------------------+ | 1 | +---------------------+ | 1 | +---------------------+ SQLRowCount returns 1 1 rows fetched
Создадим БД MySQL в формате asteriskcdrdb
Создайте файл, например:
touch freeswitchcdr.sql
И скопируйте в него структуру таблицы БД:
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`) )ENGINE=InnoDB DEFAULT CHARSET=utf-8;
Задаем права на БД с параметрами определенными в odbc.ini
mysql> GRANT ALL PRIVILEGES ON freeswitchcdr.* TO DB_USER@localhost IDENTIFIED BY 'DB_PASSWORD'; flush privileges; \q
Настройка Asterisk CDR и Asterisk CDR Viewer
CDR (Call Data Record) содержит информацию о всех звонках, которые обрабатывала IPPBX(в нашем случае Asterisk) в том числе несостоявшихся. Многим администраторам, которые обслуживает телефонию CDR являются источником информации, с которого следует начинать диагностику проблемы.
В сегодняшней статье мы расскажем как записывать Asterisk CDR в базу данных MySQL и как просматривать эти самые записи с помощью Asterisk CDR Viewer.
Для настройке на сервере уже должны быть установлены MySQL,Asterisk, Apache, PHP. Мы будем производить настройки на сервере CentOS 6.6 с Asterisk 13.
Первым делом нам нужно создать базу данных и пользователя этой базы данных где будут храниться наши CDR.
Даем доступ для пользователя asteriskcdr с паролем ‘ваш пароль’ к базе asteriskcdrdb только с localhost :
Подключаемся к созданной базе asteriskcdrdb:
Теперь нам нужно настроить Asterisk, чтобы он знал куда писать CDR. Переходим в файл /etc/asterisk/cdr_mysql.conf расскоментируем и вносим следующие изменения:
Переходим в консоль Asterisk и выполняем команду :
Убедимся, что модуль загружен и работает:
После этого перезагрузите Asterisk и убедимся, что вызовы записываются в базу: 1.Сделайте любой исходящий вызов, чтобы он прошел через ваш Asterisk. 2. Зайдите в MySQL. 3. Подключитесь к базе asteriskcdrdb :
Если в выводе вы увидите свой вызов, то значит CDR пишутся корректно и все работает.
Настройка Asterisk CDR Viewer
Если настройки записи CDR в базу данных были выполнены правильно, то можно приступить к настройке Asterisk CDR Viewer.
Скачиваем asterisk-cdr-viewer-1.0.2.tgz в папку /var/www и разархивируем
Переносим файл алиаса в папку с httpd
Изменяем настройки подключения к БД для Asterisk-CDR-viewer
Нужно поменять параметры в соответствии с текущей конфигурацией вашей базы:
Посмотрим результаты вывода:
По умолчанию доступ к просмотру статистики имеют все пользователи, исправим это сделав доступ через авторизацию.
В /etc/httpd/conf.d/asterisk-cdr-viewer.conf расскоментируем все строки:
Создаем пользователя и пароль для подключение к asterisk cdr viewer:
Добавим созданного нами пользователя в /var/www/asterisk-cdr-viewer/include/config.inc.php
Теперь при попытке зайти в viewer вы увидите приглашения для ввода логина и пароля:
Настроем возможность записи разговоров:
В файле /var/www/asterisk-cdr-viewer/include/config.inc.php указаны настройки по умолчанию:
Если вы хотите можно поменять формат или директорию, если нет, то в ваш диалплан добавляем следующие строки и провряем:
На этом наша настройка закончена.
источник
Настройка
СУБД
Подключаемся к MariaDB:
mysql -u root -p
Создаем базу данных и пользователя:
> CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON asterisk.* TO ‘asteruser’@’localhost’ IDENTIFIED BY ‘asterpassword123’;
* данными командами мы создали базу данных asterisk и предоставили к ней доступ пользователю asteruser с паролем asterpassword123.
Загружаем данные в базу:
> use asterisk
> source /usr/src/asterisk-15.1.2/contrib/realtime/mysql/mysql_config.sql
> source /usr/src/asterisk-15.1.2/contrib/realtime/mysql/mysql_cdr.sql
* где /usr/src/asterisk-15.1.2 — путь до распакованного исходника.
> \q
ODBC коннектор
Кликаем по Download и копируем ссылку на скачивание файла:
В командной строке скачиваем файл, воспользовавшись ссылкой:
wget https://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.9-linux-ubuntu16.04-x86-64bit.tar.gz
Распаковываем архив и переходим в него:
tar -xvf mysql-connector-odbc-*.tar.gz
cd mysql-connector-odbc-*
Копируем драйверы:
cp lib/libmyodbc5* /usr/lib64
Устанавливаем odbc драйвер:
./bin/myodbc-installer -d -a -n «MySQL» -t «DRIVER=/usr/lib64/libmyodbc5w.so;»
Для подключения астериска к базе, создаем DSN:
./bin/myodbc-installer -s -a -c2 -n «Asterisk» -t «DRIVER=MySQL;SERVER=127.0.0.1;DATABASE=asterisk;UID=asteruser;PWD=asterpassword123»
* где MySQL — имя драйвера, который мы создали на предыдущем шаге; asterisk, asteruser, asterpassword123 — соответственно, имя базы данных, имя пользователя и пароль для подключения к СУБД.
* в случае необходимости, отредактировать DSN можно в файле /etc/odbc.ini.
Делаем тестовое подключение:
isql Asterisk
+—————————————+
| Connected! |
| |
| sql-statement |
| help |
| quit |
| |
+—————————————+
SQL> show tables
+—————————————————————————+
| Tables_in_asterisk |
+—————————————————————————+
| alembic_version |
| cdr |
| extensions |
| iaxfriends |
| meetme |
…
SQL> quit
Asterisk
Открываем конфигурационный файл с настройкой модулей:
vi /etc/asterisk/modules.conf
Добавляем в него следующие строки:
preload => res_odbc.so
preload => res_config_odbc.so
Настраиваем подключение к базе через DSN:
vi /etc/asterisk/res_odbc.conf
enabled => yes
dsn => Asterisk
username => asteruser
password => asterpassword123
pre-connect => yes
max_connections => 100
sanitysql => select 1
Перезапускаем Asterisk:
systemctl restart asterisk
Подключаемся к его консоли:
asterisk -r
Проверяем, что астер увидел odbc:
odbc show
Настройка CDR Viewer
Пример конфиг файла находится в .
Перед началом использования этот файл нужно переименовать в .
Все настройки находятся в файле с подробными комментариями, тут не должно возникнуть сложностей.
Можно использовать «пользовательский» конфиг. Это значит, что будет использоваться альтернативный конфиг файл с настройками.
Для этого нужно создать еще один файл с конфигом, например: .
Формат имени файла конфига:
Для имени можно использовать латинские буквы, цифры, тире и нижнее подчеркивание.
Кратко:
- Скачать ZIP архив с GitHub или выполнить
- Распаковать или Перенести файлы в нужную папку на сервере
- Переименовать файл в . Т.е. будет файл
- Настроить параметры в
- Почти готово. Если необходим доступ только для определенных пользователей, то необходимо создать файл .