Учет и просмотр статистики звонков (cdr viewer) Asterisk: различия между версиями
Danil (обсуждение | вклад) |
Danil (обсуждение | вклад) |
||
| Строка 9: | Строка 9: | ||
mysql -uroot -p | mysql -uroot -p | ||
| − | MariaDB [(none)]> create database asterisk; | + | MariaDB [(none)]> create database asterisk; |
| − | MariaDB [(none)]> use asterisk; | + | MariaDB [(none)]> use asterisk; |
| − | MariaDB [asterisk]> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL auto_increment, `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 '', PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; | + | MariaDB [asterisk]> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL auto_increment, `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 '', PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
| − | MariaDB [asterisk]> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '12345678'; | + | MariaDB [asterisk]> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '12345678'; |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | asterisk имя базы данных | |
| + | asterisk_user пользователь базы данных | ||
| + | 12345678 пароль пользователя бд | ||
| + | Устанавливаем odbc коннекторы: | ||
| + | |||
| + | yum install -y mysql-connector-odbc.x86_64 unixODBC-devel.x86_64 | ||
Редактируем файлы конфигурации. Добавляем в самый конец /etc/asterisk/res_odbc.conf: | Редактируем файлы конфигурации. Добавляем в самый конец /etc/asterisk/res_odbc.conf: | ||
| − | [asterisk] | + | [asterisk] |
| − | enabled => yes | + | enabled => yes |
| − | dsn => MySQL-asterisk | + | dsn => MySQL-asterisk |
| − | username => asterisk_user | + | username => asterisk_user |
| − | password => 12345678 | + | password => 12345678 |
| − | В конец файла /etc/asterisk/cdr_adaptive_odbc.conf: | + | В конец файла /etc/asterisk/cdr_adaptive_odbc.conf: |
| − | [cdr_adaptive_connection] | + | [cdr_adaptive_connection] |
| − | connection=asterisk | + | connection=asterisk |
| − | table=cdr | + | table=cdr |
| − | alias start => calldate | + | alias start => calldate |
| − | Создаем файл /etc/odbc.ini следующего содержания: | + | Создаем файл /etc/odbc.ini следующего содержания: |
| + | |||
| + | [MySQL-asterisk] | ||
| + | Description = MySQL Asterisk database | ||
| + | Driver = MySQL | ||
| + | Server = localhost | ||
| + | User = asterisk_user | ||
| + | Password = 12345678 | ||
| + | Socket = /var/lib/mysql/mysql.sock | ||
| + | Database = asterisk | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Редактируем файл /etc/odbcinst.ini. Я его не трогал, оставил по-умолчанию, только в самый конец секции [MySQL] добавил две недостающие строки. Я не разбирался нужны они или нет, просто подсмотрел в другой инструкции. Вот как этот файл выглядит у меня: | Редактируем файл /etc/odbcinst.ini. Я его не трогал, оставил по-умолчанию, только в самый конец секции [MySQL] добавил две недостающие строки. Я не разбирался нужны они или нет, просто подсмотрел в другой инструкции. Вот как этот файл выглядит у меня: | ||
| − | [MySQL] | + | [MySQL] |
| − | Description = ODBC for MySQL | + | Description = ODBC for MySQL |
| − | Driver = /usr/lib/libmyodbc5.so | + | Driver = /usr/lib/libmyodbc5.so |
| − | Setup = /usr/lib/libodbcmyS.so | + | Setup = /usr/lib/libodbcmyS.so |
| − | Driver64 = /usr/lib64/libmyodbc5.so | + | Driver64 = /usr/lib64/libmyodbc5.so |
| − | Setup64 = /usr/lib64/libodbcmyS.so | + | Setup64 = /usr/lib64/libodbcmyS.so |
| − | FileUsage = 1 | + | FileUsage = 1 |
| − | CPTimeout = | + | CPTimeout = |
| − | CPReuse = | + | CPReuse = |
| + | |||
Настроим использование нашего часового пояса в записях cdr. По-умолчанию там стоит часовой пояс GTM. Для этого в файле /etc/asterisk/cdr.conf указываем параметр: | Настроим использование нашего часового пояса в записях cdr. По-умолчанию там стоит часовой пояс GTM. Для этого в файле /etc/asterisk/cdr.conf указываем параметр: | ||
| − | usegmtime=no | + | usegmtime=no |
| + | |||
После этого перезапускаем астериск: | После этого перезапускаем астериск: | ||
| Строка 63: | Строка 67: | ||
systemctl start httpd | systemctl start httpd | ||
systemctl enable httpd | systemctl enable httpd | ||
| + | |||
С phpmyadmin сами разберитесь, в интернете море инструкций, либо воспользуйтесь моей по установке и настройке phpmyadmin. Теперь астериск сохраняет статистику звонков в mysql базу asterisk в таблицу cdr. Дальше нам надо настроить какую-нибудь web панель для просмотра этой статистики. Я решил сразу установить панель, которая позволяет не только смотреть статистику, но прослушивать записанные разговоры. Поэтому дальнейшая настройка панели просмотра статистики переходит в следующий раздел, в котором я расскажу, как записывать звонки. | С phpmyadmin сами разберитесь, в интернете море инструкций, либо воспользуйтесь моей по установке и настройке phpmyadmin. Теперь астериск сохраняет статистику звонков в mysql базу asterisk в таблицу cdr. Дальше нам надо настроить какую-нибудь web панель для просмотра этой статистики. Я решил сразу установить панель, которая позволяет не только смотреть статистику, но прослушивать записанные разговоры. Поэтому дальнейшая настройка панели просмотра статистики переходит в следующий раздел, в котором я расскажу, как записывать звонки. | ||
Версия 12:04, 26 февраля 2019
Важной и нужной возможностью современной АТС на базе asterisk является сбор и просмотр статистики звонков. По умолчанию, астериск ведет статистику в файле /var/log/asterisk/cdr-csv/Master.csv. Разобрать этот файл и передать куда-то в обработку не очень сложно, если у вас есть что-то или кто-то, кто способен написать на каком-нибудь языке программирования обработку.
Мы будем использовать готовые бесплатные инструменты для просмотра статистики звонков. Все необходимое для этого мы установили в самом начале. Перенесем сбор статистики в mysql базу. Для этого запускаем mariadb сервер, добавляем в автозагрузку и устанавливаем пароль администратора:
systemctl start mariadb systemctl enable mariadb.service /usr/bin/mysql_secure_installation
Подключаемся к mysql и создаем пользователя и базу данных:
mysql -uroot -p MariaDB [(none)]> create database asterisk; MariaDB [(none)]> use asterisk; MariaDB [asterisk]> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL auto_increment, `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 , PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; MariaDB [asterisk]> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '12345678';
asterisk имя базы данных asterisk_user пользователь базы данных 12345678 пароль пользователя бд Устанавливаем odbc коннекторы:
yum install -y mysql-connector-odbc.x86_64 unixODBC-devel.x86_64
Редактируем файлы конфигурации. Добавляем в самый конец /etc/asterisk/res_odbc.conf:
[asterisk] enabled => yes dsn => MySQL-asterisk username => asterisk_user password => 12345678 В конец файла /etc/asterisk/cdr_adaptive_odbc.conf:
[cdr_adaptive_connection] connection=asterisk table=cdr alias start => calldate Создаем файл /etc/odbc.ini следующего содержания:
[MySQL-asterisk] Description = MySQL Asterisk database Driver = MySQL Server = localhost User = asterisk_user Password = 12345678 Socket = /var/lib/mysql/mysql.sock Database = asterisk
Редактируем файл /etc/odbcinst.ini. Я его не трогал, оставил по-умолчанию, только в самый конец секции [MySQL] добавил две недостающие строки. Я не разбирался нужны они или нет, просто подсмотрел в другой инструкции. Вот как этот файл выглядит у меня:
[MySQL] 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 CPTimeout = CPReuse =
Настроим использование нашего часового пояса в записях cdr. По-умолчанию там стоит часовой пояс GTM. Для этого в файле /etc/asterisk/cdr.conf указываем параметр:
usegmtime=no
После этого перезапускаем астериск:
service asterisk restart
Совершаем звонок и проверяем таблицу. Для удобства дальнейшей проверки и настройки, я запустил httpd и настроил phpmyadmin. Они должны были установиться в самом начале. Запускаем httpd и добавляем в автозагрузку:
systemctl start httpd systemctl enable httpd
С phpmyadmin сами разберитесь, в интернете море инструкций, либо воспользуйтесь моей по установке и настройке phpmyadmin. Теперь астериск сохраняет статистику звонков в mysql базу asterisk в таблицу cdr. Дальше нам надо настроить какую-нибудь web панель для просмотра этой статистики. Я решил сразу установить панель, которая позволяет не только смотреть статистику, но прослушивать записанные разговоры. Поэтому дальнейшая настройка панели просмотра статистики переходит в следующий раздел, в котором я расскажу, как записывать звонки.