Asterisk call data records in comma-separated text files
По умолчанию, Asterisk генерирует CDR записи в точко разделенные тестовые файлы в директории /var/log/asterisk/cdr-csv. Файл Master.csv содержит все записи. Детализированные записи могут быть частично сконфигурированы на основе канала, и некоторые из данных для IAX и SIP могут быть определены на пользовательском уровне. Конфигурация Zap для CDR записей определяется каналом в zaptel.conf
Для того чтобы с этим работать, вам надо загрузить cdr_csv.so. Введите “ show modules” в CLI и вы увидите, загружен он или нет. Если нет: напечатайте “ load cdr_csv.so” в CLI. Вам также надо добавить эту команду в /etc/asterisk/modules.conf, если Астериск не автоматически включает этот модуль при запуске.
- accountcode: Какой учетный номер используется: account, (строка, 20 символов)
- src: Номер Caller*ID (строка, 80 символов)
- dst: Расширение направления (строка, 80 символов)
- dcontext: Контекст направления (строка, 80 символов)
- clid: Caller*ID с текстом (80 символов)
- channel: Используемый канал (80 символов)
- dstchannel: Канал направления, если подходит (80 символов)
- lastapp: Последнее приложение, если подходит (80 символов)
- lastdata: Дата последнего приложения (аргументы) (80 символов)
- start: Начало вызова (дата/время)
- answer: Ответ вызова (дата/время)
- end: Конец вызова (дата/время)
- duration: Полное время в системе, в секундах (целое), от набора номера до зависания
- billsec: Полное время вызова, в секундах (целое), от ответа до зависания
- disposition: Что случилось с вызовом: ANSWERED, NO ANSWER, BUSY, FAILED (на некоторых CDR выходных буферах, например ODBC, они могут быть целыми; заметьте, что более детальная инфа может быть найдена в переменной диалплана $HANGUPCAUSE)
- amaflags: Какой флаг используется: смотри amaflags: DOCUMENTATION, BILLING, IGNORE и т.д., указанного на базисе каждого канала подобно accountcode.
В некоторых случаях появляется uniqueid:
uniqueid: Уникальный Идентификатор Канала (32 символа)
Замечание: Вы можете редактировать файл источник cdr_csv.c для того, чтобы разрешить CSV_LOGUNIQUEID (она отключена по умолчанию)
источник
Выбор режима работы сервера телефонной платформы
В конфиг-файле файле можно выбрать режим работы сервера телефонной платформы (Asterisk или FreeSWITCH). Это нужно для выборочного отображения функциональности, которая поддерживается конкретным видом сервера телефонии.
Например, если выбрано Asterisk: В фильтре поиска «Статус звонка» будут показаны значения только для Asterisk, но будут скрыты значения для «FreeSWITCH».
Если выбран режим «Asterisk + FreeSWITCH», то в фильтре поиска «Статус звонка» будут показаны значения и для Asterisk, и для FreeSWITCH.
Выбрать режим «Asterisk + FreeSWITCH»:
Выбрать режим «Asterisk»:
Выбрать режим «FreeSWITCH»:
Настройка asterisk
Для установки клиента mysql (неважно, установлен ли asterisk на том же компьютере, что и сервер MySQL или нет) запустите в debian следующую команду:
В случае, если у Вас установлен RHEL / CentOS, выполните такую команду:
Теперь необходимо установить библиотеки mysql. Они дадут возможность собирать программы, предназначенные для работы с MySQL.
Для debian это будет команда:
Для RHEL / CentOS выполните:
Повторная сборка asterisk для работы с MySQL
Перейдите в папку с исходными кодами (откуда устанавливался asterisk) и запустите команду конфирурирования:
В открывшемся меню включите использование следующих компонентов:
- Add-ons => res_config_mysql
- Add-ons => cdr_mysql
После выхода (с сохранением) из меню выбора компонентов выполните сборку и повторную установку asterisk:
Команду не делать ни в коем случае, это сотрет имеющиеся конфигурационные файлы! Команду также выполнять не нужно, поскольку asterisk уже установлен и настроен в Вашей системе.
Теперь необходимо перезапустить сервис астериска для того, чтобы свежеустановленный asterisk начал свою работу.
Проверка связи с MySQL Server
Давайте проверим работу с сервером MySQL, подключившись к нему с помощью mysql клиента.
Для этого из командной строки запустите:имя-сервера-MySQL имя-пользователя-БД
например:
при этом будет запрошен пароль пользователя asterisk_user, укажите его.
При успешном подключении появится приглашение:
теперь можно ввести команды mysql, например: – для выхода
Настройка asterisk для работы с MySQL Server
Для настройки asterisk откройте файл /etc/asterisk/cdr_mysql.conf и впишите туда подобные строки (здесь указан лишь пример):
hostname=192.168.1.1 ; хост, где находится mysql сервер (может быть localhost или 127.0.0.1 dbname=asteriskcdr ; имя базы данных asterisk table=cdr ; имя таблицы asterisk user=asterisk_user ; имя пользователя для базы данных sql password=ast_password; пароль для пользователя asterisk_user ;timezone=UTC ; часовой пояс (раньше называлась usegmtime) ;charset=utf-8 ; кодировка базы данных, ее можно узнать в процессе настройки MySQL(необязательный параметр)
Вы можете раскомментировать нужные Вам строки или вписать новые.
После выполнения вышеуказанных действий запустите asterisk и попробуйте подключить модуль cdr_mysql.so. Для этого запустите подключение к asterisk:
И из командной строки asterisk (asterisk CLI) выполните следующую команду:
При возникновении ошибок решение см. в конце статьи. В случае, если Вы исправили ошибку, и Вам необходимо выгрузить и повторно загрузить модуль, выполните команды:
В случае успеха asterisk может выдать несколько уведомлений и загрузит модуль. Убедиться в том, что модуль загружен, можно выполнив команду:
После этого перезагрузите конфигурацию CDR и убедитесь, что звонки фиксируются в базе данных. Для перезагрузки конфигурации CDR выполните команды:
или
На этом настройка asterisk закончена.
Использование CDR Viewer
Регулярные выражения
В фильтрах поиска: «Кто звонил», «Куда звонили», «DID (если есть)» можно использовать регулярные выражения Asterisk.
Если значение в одном из этих полей начинается на символ , то это интерпретируется как шаблон поиска.
В шаблонах поиска некоторые символы имеют следующие значения:
- X — любая цифра от 0 до 9
- Z — любая цифра от 1 до 9
- N — любая цифра от 2 до 9
- — любая цифра в скобках (в этом примере: 1,2,3,5,6,7,8,9)
- . — соответствует любому символу. (например: _9011. совпадает со любым номером, который начинается с 9011, исключая сам номер 9011)
- _ZXXXXXX — соответствует семизначному городскому номеру
- _79XXXXXXXXX — соответствует Российскому мобильному номеру
В одно поле поиска (например: «Кто звонил») можно ввести несколько регулярных выражений, разделенных запятой.
Благодаря этому можно осуществить поиск сразу по нескольким номерам (например в поле «Кто звонил»)
Проверка обновлений
Начиная с версии 2.3 доступна проверка обновлений. Чтобы проверить доступность новой версии, нужно щелкнуть на стрелочку в самом низу веб-интерфейса (подвал), рядом с надписью «Asterisk CDR Viewer Mod v».
Проверяется только доступность новой версии, но автоматического обновления не происходит. Обновлять необходимо вручную. Автоматическое обновление, возможно, будет реализовано в будущих версиях.
Если доступна новая версия, то будут отображены: текущая версия, новая версия, изменения в последнем релизе.
Применение нового конфиг-файла
После скачивания новой версии, для того, чтобы заново не настраивать конфиг-файл, можно сравнить старый файл «config.php» и новый «config.php.sample» в текстовом редакторе «Notepad++».
Для сравнения файлов нужно, чтобы в редакторе Notepad++ был установлен плагин «Compare». Чтобы установить этот плагин, в Notepad++ нужно зайти в меню .
В открытом окне галочкой отметить «Compare» и нажать Install.
После этого открыть оба файла «config.php» и «config.php.sample» в Notepad++. Перейти в меню . Цветом будут выделены изменения в файлах.
Установка и настройка MySQL
Установка MySQL Server
Для установки сервера MySQL в Debian достаточно набрать команду:
В операционной системе RHEL / CentOS также все довольно просто:
При этом будет установлена текущая (актуальная) версия mysql сервера (на момент написания статьи это версия 5.5).
В процессе установки будет необходимо задать пароль пользователя root для mysql. Не забудьте этот пароль, он Вам еще понадобится!
Для установки и первоначальной настройки MySQL сервера Вы можете воспользоваться статьей «Установка и первоначальная настройка MySQL в linux».
Подключение к серверу SQL для выполнения запросов
Для подключения к MySQL серверу (чтобы можно было выполнять команды SQL) Вы можете воспользоваться любыми своими имеющимися инструментами, например PHPMyAdmin. Либо же можете воспользоваться встроенными средствами командной строки из пакета MySQL — mysql:имя-пользователя-SQL
например:
после нажатия Enter будет запрошен пароль для пользователя. После ввода пароля и нажатия Enter, будет выведено приглашение MySQL:
mysql>_
Теперь Вы можете выполнять запросы SQL.
Создание базы данных (и пользователя этой базы данных) для asterisk cdr
Для создания базы данных (назовем ее asteriskcdr, Вы можете выбрать любое другое имя) выполните команду SQL:
CREATE DATABASE asteriskcdr ;
Если Вы хотите создать отдельного пользователя (например, asterisk_user) для работы с этой базой данных, при этом выставить ему пароль например, asterisk_password, выполните команду SQL:
CREATE USER asterisk_user IDENTIFIED BY ‘asterisk_password’;
Теперь Вам необходимо назначить этому вновь созданному пользователю asterisk_user права для доступа к базе данных (например, права только для добавления / обновления записей и для просмотра базы). Для этого выполните команду SQL:
GRANT INSERT, SELECT, UPDATE
ON asteriskcdr.*
TO asterisk_user@localhost;
Если же Вы хотите дать этому пользователю полные права на базу данных, вместо предыдущей команды выполните эту команду SQL:
GRANT ALL
ON asteriskcdr.*
TO asterisk_user@localhost;
Если же Вы не знаете, с каких IP будет подключаться пользователь, либо Вам необходимо, чтобы он подключался с любых IP адресов, укажите имя пользователя в следующем формате:
имя-пользователя@’%’
например:
asterisk_user@’%’
В этом случае команда для предоставления полных прав пользователю asterisk_user, который может подключаться к MySQL с любых IP адресов, будет выглядеть так:
GRANT ALL
ON asteriskcdr.*
TO asterisk_user@’%’;
Создание таблицы для asterisk
Для создания таблицы asterisk CDR подключитесь к созданной базе данных и выполните следующий запрос:
USE asteriskcdr;
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’,
start datetime NULL default NULL,
answer datetime NULL default NULL,
end datetime NULL default NULL,
disposition varchar(45) NOT NULL default »,
amaflags int(11) NOT NULL default ‘0’,
accountcode varchar(20) NOT NULL default »,
userfield varchar(255) NOT NULL default »,
uniqueid varchar(32) NOT NULL default »
);
Обратите внимание: в этой таблице (в отличие от таблиц asterisk cdr, представленных в интернете) присутствуют поля: start, answer, end. Эти поля присутствуют в самом CDR, имеют место быть в таблице CDR для Microsoft SQL, но почему-то отсутствуют в большинстве рекомендаций по созданию таблиц CDR для баз MySQL.
Дело в том, что (как указано на сайте voip-info.org), любые стандартные столбцы CDR в базе данных MySQL могут быть исключены простым удалением из таблицы (или переименованием столбца)
При этом никаких сообщений об ошибках не возникает — просто соответствующая информация не пишется в базу данных (Standard columns may also be excluded now, simply by dropping the column name from the table, renaming the column, or aliasing the cdrname from a nonexistent variable (e.g. foo => amaflags)).
Поэтому в случае, если в Вашей таблице нет столбцов answer и end (вместо start можно использовать calldate), то рекомендую их туда добавить (иначе время ответа на звонок придется вычислять путем сложения и вычитания нескольких других полей, что далеко не всегда удобно).
Обратите также внимание, что в новых версиях asterisk столбец calldate является копией столбца start, в отличие от старых версий asterisk, где столбец calldate является копией столбца end
Настройка папки со звонками
Записи разговоров будут складываться в папку из примера выше.
Есть два варианта хранения файлов записей:
- Все записи разговоров хранятся в одной папке.
- Записи разговоров должны распределяться по папкам в соответствии с датой.
Также есть возможность настройки «отложенной конвертации записей разговоров».
Когда днем выполняется запись в формат WAV, а ночью необходимо по CRON запустить скрипт для преобразования файлов из WAV в MP3.
«Отложенную конвертацию записей разговоров» и распределение по папкам в соответствии с датой можно использовать вместе, а можно что-то одно.
За распределение файлов записей по папкам, преобразование файлов из WAV в MP3 отвечает скрипт из папки docs.
Для 2 варианта
Каждый день в 00.01 часов записи из папки по CRON должны распределяться по дате в соответствующие папки.
Для распределения файлов по папкам в соответствии с датой нужно использовать скрипт из папки docs.
Формат хранения записей (пример):
- /home/calls/2014/2014-09/2014-09-29
- /home/calls/2014/09/29
Настройки скрипта для соответствующего формата:
Настройки скрипта для преобразования файлов из WAV в MP3:
За включение преобразования файлов из WAV в MP3 в скрипте отвечает переменная . Необходимо установить ее значение в true или false.
Можно настроить МИНИМАЛЬНЫЙ РАЗМЕР ФАЙЛА для преобразования файлов из WAV в MP3, задается в переменной , размер указывается в КилоБайтах.
Если размер файла меньше , то этот файл будет удален, и не будет преобразован из WAV в MP3.
Также можно настроить уровень вложенности поиска WAV файлов для их преобразования в переменной «DEPTH».
Примеры значений для переменной
Для вариантов, когда Asterisk сам распределяет записи по папкам в соответствии с датой.
Если у вас Asterisk сам распределяет записи звонков по папкам в соответствии с датой, тогда необходимости запуска скрипта по CRON нет.
Если только у вас не настроена «отложенная конвертация записей разговоров»
Возможные форматы хранения записей:
- /home/calls/2014/2014-09/2014-09-29
- /home/calls/2014/09/29
Полный/Частичный путь к файлам звонков хранится в базе данных
Если у вас полный или частичный путь к файлам звонков хранится в базе данных, допустим в столбце «column_name».
Например: , , .
В этом случае можно использовать как полный путь к файлу, так и относительный. Также в пути можно использовать имя файла как с расширением, так и без расширения файла.
Если у вас используется полный путь к файлу (от корня диска), то в конфиг-файле необходимо задать: .
Если у вас используется частичный путь к файлу, допустим , то в конфиг-файле необходимо задать первую часть пути, например: .
БЕЗ слеша на конце. Таким образом получим полный путь: .
Если у вас используется относительный путь к файлу, допустим , то в конфиг-файле необходимо задать первую часть пути, например: .
БЕЗ слеша на конце. Таким образом получим полный путь: .
Аналогично для файлов без расширения.
Примеры путей к файлам при их хранении в базе данных (содержимое колонки «filename»):
- /home/calls/2015/2015-01/2015-01-01/in/filename.mp3
- ./calls/2015/2015-01/2015-01-01/in/filename.mp3
- 2015/2015-01/2015-01-01/in/filename.mp3
- /home/calls/2015/2015-01/2015-01-01/in/filename
- ./calls/2015/2015-01/2015-01-01/in/filename
- 2015/2015-01/2015-01-01/in/filename
Call Detail Record (CDR)
Теперь настроем хранение журнала вызовов в базе данных.
Открываем следующий файл:
vi /etc/asterisk/cdr_adaptive_odbc.conf
Добавляем в самый низ:
connection=asterisk-conf
table=cdr
alias src => source
alias channel => source_channel
alias dst => dest
alias dstchannel => dest_channel
Перезапускаем астериск:
systemctl restart asterisk
Пробуем позвонить через наш астериск и после звонка смотрим записи в базе:
mysql -uasteruser -pasterpassword123 -e «SELECT * FROM cdr»
Получим примерно следующее:
| accountcode | src | dst | dcontext | clid | channel | dstchannel | lastapp | lastdata | start | answer | end | duration | billsec | disposition | amaflags | userfield | uniqueid | linkedid | peeraccount | sequence |
+————-+——+——+————+—————+——————-+——————-+———+————-+———————+———+———————+———-+———+————-+—————+————+—————+—————+————-+———-+
| NULL | 1001 | 1004 | outcaling | «1001» <1001> | SIP/1001-00000000 | SIP/1004-00000001 | Dial | SIP/1004,,m | 2017-12-07 16:11:24 | NULL | 2017-12-07 16:11:32 | 7 | 0 | NO ANSWER | DOCUMENTATION | NULL | 1512652284.0 | 1512652284.0 | NULL | 0 |
Или в более читаемом виде:
Поле | Пример значения | Описание поля |
---|---|---|
accountcode | NULL | Дополнительное поле для идентификации клиента. Может использоваться, если не хватает стандартного набора параметров. |
src | 1001 | Кто звонит. |
dst | 1004 | Кому позвонили. |
dcontext | outcaling | Контекст (группа правил обработки звонка). |
clid | «1001» <1001> | Caller identification или CID. Состоит из имени и номера звонящего. |
channel | SIP/1001-00000000 | Канал, который принимает вызов. |
dstchannel | SIP/1004-00000001 | Канал исходящего вызова. |
lastapp | Dial | Dialplan обработки вызова. |
lastdata | SIP/1004,,m | Что передавалось в lastapp. |
start | 2017-12-07 16:11:24 | Начало звонка. |
answer | NULL | Время, за которое подняли трубку. NULL — трубку не подняли. |
end | 2017-12-07 16:11:32 | Дата и время окончания звонка. |
duration | 7 | Длительность звонка в секундах. |
billsec | Время разговора (с момента поднятия трубки). | |
disposition | NO ANSWER | Состояние вызова. Возможные варианты: — ANSWERED — отвечен. — NO ANSWER — ответа нет. — CONGESTION / FAILED — ошибка вызова. — BUSY — занято. |
amaflags | DOCUMENTATION | Не используется. |
userfield | NULL | Пользовательские параметры для канала. |
uniqueid | 1512652284.0 | Уникальный идентификатор канала звонящего. |
linkedid | 1512652284.0 | Уникальный идентификатор канала звонящего. |
peeraccount | NULL | Код учетной записи канала Стороны 2. |
sequence | Номер последовательности канала. |
Также существуют продукты, позволяющие в графическом интерфейсе смотреть CDR. Например, веб-приложение Asterisk CDR Viewer Mod.
Настройка Asterisk для записи CDR в MySQL
Устанавливаем пакет для подключения к mysql: apt-get install mysql-client
Теперь в файле /etc/asterisk/cdr_mysql.conf надо настроить соединение asterisk с mysql:
hostname=localhost ; если localhost или не указано, то соединение будет через файл сокета, надо обязательно указать параметр sock
dbname=asteriskcdr ; имя бд
table=cdr ; имя таблицы
password=tut_parol ; пароль пользователя myqsl
user=asterisk_user ; имя пользователя myqsl
port=3306
sock=/var/run/mysqld/mysqld.sock ; это посмотреть в файле /etc/mysql/my.conf в секции в параметре socket. Применяется только если Mysql стоит на том же компе, что и asterisk
charset=utf-8
userfield=1
1 |
global hostname=localhost;еслиlocalhostилинеуказано,тосоединениебудетчерезфайлсокета,надообязательноуказатьпараметрsock dbname=asteriskcdr;имябд table=cdr;имятаблицы password=tut_parol;парольпользователяmyqsl user=asterisk_user;имяпользователяmyqsl port=3306 sock=varrunmysqldmysqld.sock;этопосмотретьвфайлеetcmysqlmy.confвсекцииclientвпараметреsocket.ПрименяетсятолькоеслиMysqlстоитнатомжекомпе,чтоиasterisk charset=UTF-8 userfield=1 |
Следующий этап:
apt-get install asterisk-mysql
service asterisk restart
1 |
apt-get install asterisk-mysql service asterisk restart |
Потом в консоли выполняем rasterisk -vvvvvvv и потом cdr mysql status. Ответ должен быть примерно таким Connected to asteriskcdr@localhost, port 3306 using table cdr for 4 minutes, 34 seconds.:
Звоним куда-нибудь, а потом снова выполняем cdr mysql status:
Видим что 1 запись CDR записана в mysql: Wrote 1 records since last restart.
Чтобы нормально посмотреть, что записалось, нам понадобиться программа наподобие HeidiSQL. Запускаем, настраиваем:
Тыкаем как на картинке и видим нашу запись в истории звонков.
База знаний
Здесь еще один написанный на PHP скрипт для импорта файлов cdr.csv в mysql cdr базу данных. Полезен для перехода от текстовых cdr файлов к БД или даже для еженочных импортов.
Этот скрипт надежен для запуска многократное число раз лог файл, который хранит рост, потому что он, во-первых, проверяет таблицу БД для поиска старшей записи и только потом импортирует CDRs, которые НИКОГДА This script is safe to run multiple times on a log file that keeps growing because it first checks the database table to find the oldest record and then only imports CDRs that are NEWER than the oldest database record.
Скопируйте и вставьте скрипт в текстовый файл, например, “importcdr.php” и затем используйте php в командной строке для выполнения следующего: php importcdr.php Master.csv
Обновлено July 21, 2005: I fixed this code so it should copy and paste properly now. Wiki не нравятся квадратные скобки!
Замечание: Поля в файле Master.csv очень зависят от ваших настроек. Там есть комментарии о них.
Обновлено June 2, 2006: Этот скрипт теперь прекрасно работает с астериском 1.2.7.1.
\n»); print(«Where filename is the path to the Asterisk csv file to import (Master.csv)\n»); print(«This script is safe to run multiple times on a growing log file as it only imports records that are newer than the database\n»); exit(0); >
// соединение с бд $linkmb = mysql_connect($locale_db_host, $locale_db_login, $locale_db_pass) or die(«Could not connect : » . mysql_error()); //echo «Connected successfully\n»; mysql_select_db($locale_db_name, $linkmb) or die(«Could not select database $locale_db_name»);
/** 1) Ищет последний элемент лога **/ // просматривает в cdr таблице, чтобы увидеть, когда последний элемент был создан. // это устанавливает начальную точку для данных астариска. $sql=»SELECT UNIX_TIMESTAMP(calldate) as calldate». » FROM cdr». » ORDER BY calldate DESC». » LIMIT 1″;
if(!($result = mysql_query($sql, $linkmb))) print(«Invalid query: » . mysql_error().»\n»); print(«SQL: $sql\n»); die(); > $result_array = mysql_fetch_array($result); //$lasttimestamp = date(«Y-m-d H:i:s», $result_array); $lasttimestamp = $result_array;
//** 2) ищет новые записи в лог файле астериска. **
$rows = 0; $handle = fopen($logfile, «r»); while (($data = fgetcsv($handle, 1000, «,»)) !== FALSE) // ЗАМЕЧАНИЕ: поля в Master.csv могут изменяться. Это должно работать по умолчанию на всех кстановках, но вы можете отредактировать следующую строку для сравнения вашей конфигурации list($accountcode,$src, $dst, $dcontext, $clid, $channel, $dstchannel, $lastapp, $lastdata, $start, $answer, $end, $duration, $billsec, $disposition, $amaflags ) = $data;
// 3) анализирует каждый ряд и добавляет к бд if(strtotime($end) > $lasttimestamp) $sql = «INSERT INTO cdr (calldate, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode) VALUES(‘$end’, ‘».mysql_real_escape_string($clid).»‘, ‘$src’, ‘$dst’, ‘$dcontext’, ‘$channel’, ‘$dstchannel’, ‘$lastapp’, ‘$lastdata’, ‘$duration’, ‘$billsec’, ‘$disposition’, ‘$amaflags’, ‘$accountcode’)»; if(!($result2 = mysql_query($sql, $linkmb))) print(«Invalid query: » . mysql_error().»\n»); print(«SQL: $sql\n»); die(); > $rows++; > > fclose($handle);
источник
Расширение функциональности Asterisk CDR Viewer
Вы можете добавить функционала в пакет, ознакомившись со статьей: «Допиливаем» Asterisk CDR Viewer под себя.
CDR (Call Data Record), позволяет в MySQL базе данных вести статистику активности звонков.
На тесте настрою Asterisk CDR и Asterisk CDR Viewer в Ubuntu Server. Предположим что Asterisk уже установлен.
Сначала установим необходимые компоненты:
Приступим к созданию базы данных в которую будут сохранятся записи о звонках. Подключимся к MySQL:
Создадим базу данных:
Создадим пользователя asteriskcdr:
Переключимся на базу asteriskcdrdb:
И создадим таблицу:
На этом создание базы завершено, теперь перейдем к настройке конфигурационного файла /etc/asterisk/cdr_mysql.conf, стандартно все строки в нем закомментированы. Раскомментируем и укажем параметры для подключения к mysql базе в секции :
В файле конфигурации модулей /etc/asterisk/modules.conf должен быть прописан на загрузку модуль cdr_mysql.so:
Вручную из консоли asterisk его можно загрузить так:
После загрузки модуля при поступлении звонков должны заносится данные в базу, посмотрим есть ли что-то:
По сути теперь можно использовать данные из базы любым удобным способом, например дописать к какому нибудь биллингу скрипты статистики и графиков. Мы же настроим готовый Asterisk CDR Viewer. Скачаем файлы и переместим в директорию веб-сервера:
Русскую версию можно найти тут http://rxsupersales.shop/
Скопируем файл с веб-конфигурацией в директорию с веб-сервером apache2:
Укажем настройки подключения к базе данных для Asterisk-CDR-viewer в файле /var/www/asterisk-cdr-viewer/include/config.inc.php
После чего уже можно будет просматривать статистику открыв в браузере http://СЕРВЕР/acdr
В версии 1.0.9 заметил опечатку в коде, из-за которой отображался белый экран а в логах была ошибка:
CDR (Call Data Record) содержит информацию о всех звонках, которые обрабатывала IPPBX(в нашем случае Asterisk) в том числе несостоявшихся. Многим администраторам, которые обслуживает телефонию CDR являются источником информации, с которого следует начинать диагностику проблемы.
В сегодняшней статье мы расскажем как записывать Asterisk CDR в базу данных MySQL и как просматривать эти самые записи с помощью Asterisk CDR Viewer.
Для настройке на сервере уже должны быть установлены MySQL,Asterisk, Apache, PHP. Мы будем производить настройки на сервере CentOS 6.6 с Asterisk 13.
Первым делом нам нужно создать базу данных и пользователя этой базы данных где будут храниться наши CDR.
Подключаемся к MySQL:
Создаем базу данных:
Даем доступ для пользователя asteriskcdr с паролем ‘ваш пароль’ к базе asteriskcdrdb только с localhost :
Подключаемся к созданной базе asteriskcdrdb:
Теперь нам нужно настроить Asterisk, чтобы он знал куда писать CDR. Переходим в файл /etc/asterisk/cdr_mysql.conf расскоментируем и вносим следующие изменения:
Переходим в консоль Asterisk и выполняем команду :
Убедимся, что модуль загружен и работает:
После этого перезагрузите Asterisk и убедимся, что вызовы записываются в базу: 1.Сделайте любой исходящий вызов, чтобы он прошел через ваш Asterisk. 2. Зайдите в MySQL. 3. Подключитесь к базе asteriskcdrdb :
4. Сделайте общий Select:
Если в выводе вы увидите свой вызов, то значит 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 указаны настройки по умолчанию:
Если вы хотите можно поменять формат или директорию, если нет, то в ваш диалплан добавляем следующие строки и провряем:
На этом наша настройка закончена.