Меню Рубрики

Установка cdr для asterisk

Asterisk CDR — Статистика звонков

Call Detail Records

CDR: Описание полей

Поле Значение/Пример Описание
accountcode 54321 Код аккаунта присвоенный абоненту, для биллинга например. По умолчанию не задан.
src 8129981138 Идентификатор вызывающего абонента(Caller ID). Источник вызова, сохраняется автоматически. R/O
dst 111 Пункт назначения вызова.Вызываемое расширение диалплана.
dcontext from-internal Контекст назначения обработки вызова. auto, R/O
clid «Olegus» Caller ID вызывающего абонента в полном формате — «name» . auto, R/O
channel SIP /0004F2040808-a1bc23ef Канал инициатор вызова. A-leg(side).auto, R/O
dstchannel SIP /0004F2046969-9786b0b0 Канал назначения вызова. B-Leg(side).auto, R/O
lastapp Dial Приложение обработки вызова выполненное последним в канале. auto, R/O
lastdata SIP /0004F2046969,30,tT Данные (например ‘Dial(данные)’) приложения выполненного последним.auto, R/O
start 2016-05-27 12:02:00 Время поступления вызова вызова. auto, R/O
answer 2016-05-27 12:02:15 Время ответа на вызов абонентом или ответ приложения. auto, R/O
end 2016-05-27 12:08:15 Время окончания соединения.Hangup. auto, R/O
duration 195 Общая продолжительность вызова в секундах.auto, R/O
billsec 180 Продолжительность соединения в секундах с момента ответа(снятия трубки или выполнения команды Answer в диалплане).auto, R/O
disposition ANSWERED Состояние обработки вызова. Может быть: NO ANSWER, FAILED, BUSY, ANSWERED или UNKNOWN.
amaflags DOCUMENTATION Automatic Message Accounting (AMA) flag. значения: OMIT, BILLING, DOCUMENTATION или Unknown.
userfield custom Пользовательское поле. Пусто по умолчанию, назначается в диалплане. set(CDR (userfield)= ). R/W
uniqueid 1288332400.1 Уникальный идентификатор канала. R/O

Примерная схема таблицы CDR

datetime zero ‘0000-00-00’ error (STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE)

datetime zero ‘0000-00-00’ true

Также можно добавить собственные поля:

Приложения и функции CDR

Команды и функции диалплана для работы с CDR .

cdr.conf

backends

Модули баз данных предоставляют различные бакенды для записи CDR . Все они требуют специфических настроек.

cdr_adaptive_odbc

Чтобы данные переменной useragent были занесены через cdr_adaptive_odbc, надо создать столбец useragent в БД.

В файле конфигурации cdr_adaptive_odbc можно создать множество таблиц. Имя секции может быть любым, модуль не использует его. Вот пример простой конфигурации таблицы:

Option Value/Example Notes
connection asterisk База данных. Параметры соединения настраиваются в Asterisk: res_odbc.conf. Обязательный параметр.
table asterisk_cdr Имя таблицы БД. Обязательное поле.
usegmtime no Использовать время GMT вместо локального времени. По умолчанию -‘no’.

В дополнение к вышеперечисленным опциям cdr_adaptive_odbc.conf, можно задать ещё несколько.

Также, можно отфильтровать определенное содержимое.

И наконец, можно добавить статические данные, дополнительно к поступающим из CDR .

cdr_csv

Для работы не требует конфигурации, тем не менее есть несколько параметров:

Option default Notes
usegmtime no Сохранять время GMT вместо локального. По умолчанию — no.
loguniqueid no Сохранять uniqueid переменную CDR . По умолчанию — no
loguserfield no Сохранять userfield CDR переменную . По умолчанию — ‘no’.
accountlogs yes Создавать отдельный csv файл для каждой переменной accountcode. По умолчанию — yes.
cdr_custom

Данный модуль используется для создания пользовательского (custom) CSV файла.
Конфигурационный файл модуля cdr_custom.conf.
Единственная секция [mappings] может быть использована в этом файле. Шаблон задается с помощью функций диалплана Asterisk.

В следующем примере cdr_custom создает файл /var/log/asterisk/cdr-custom/Master.csv. Шаблон использует функции function ‘CDR'() для извлечения значений и function ‘CSV_QUOTE'() обеспечивающую правильное форматирование CSV файла ($)>).

cdr_manager

Первая секция [general] содержит единственную опцию enabled, по умолчанию = no.

Следующая секция cdr_manager.conf это [mappings]. Здесь назначается пользовательская CDR переменная передаваемая менеджеру Asterisk.

В данной конфигурации заданные переменные появятся как события в интерфейсе менеджера.
Источником событий станет следующий диалплан:

Следующая команда инициирует вызов:

В итоге, следующее событие отобразится в Asterisk Call ManagerFinally:

источник

Asterisk CDR Viewer — установка и настройка

Что такое 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

Официальный сайт — https://code.google.com/p/asterisk-cdr-viewer/. Учитывая, что code.google.com закрывается в 2015/2016 гг., ищите копии проекта например, на GitHub. Вы также можете скачать его прямо у нас.

Команды для скачивания asterisk-cdr-viewer с официального сайта:
cd /usr/src
wget http://asterisk-cdr-viewer.googlecode.com/svn/trunk/asterisk-cdr-viewer-latest.tgz

cd /usr/src
svn checkout http://asterisk-cdr-viewer.googlecode.com/svn/trunk/ asterisk-cdr-viewer

Что нужно для установки Asterisk CDR Viewer?

В первую очередь, для установки Asterisk CDR Viewer нужен web-сервер. В ОС Linux одним из наиболее популярных веб серверов является Apache. Поэтому его необходимо установить на той же машине, где будет установлен Asterisk CDR Viewer. Кроме того, требуется поддержа PHP и MySQL для PHP.

Для того, чтобы установить это всё, выполните команды (в CentOS):
yum -y install httpd php php-mysql

После чего (разумеется) не забудьте настроить автозапуск сервера apache при старте системы (или хотя бы запустить вручную демон httpd).

Установка Asterisk CDR Viewer

Распаковка файлов asterisk-cdr-viewer

В папке с загруженным tgz архивом выполните следующие команды:
tar -xzvf asterisk-cdr-viewer-latest.tgz
В случае, если Вы скачали asterisk-cdr-viewer через SVN, разархивировать ничего не нужно.

Копирование файлов asterisk-cdr-viewer

Скопируйте папку с разархивированными файлами в корень сайта apache ( по умолчанию /var/www/html/ ), а файл asterisk-cdr-viewer.conf (из папки contrib/httpd) — в папку с конфигурацией apache ( по умолчанию — /etc/httpd/conf.d/ ).
После этого измените настройки (в частности, настройки подключения к базе данных) в файле include/config.inc.php.

Настройка конфигурации asterisk-cdr-viewer

В минимальном варианте (если не требуется защищать отчет о звонках паролем и т.п.) файл с конфигурацией asterisk-cdr-viewer.conf для apache вообще копировать не обязательно. Но в этом случае папка с файлами asterisk cdr viewer должна находится в корне (или ниже корня) web-сайта apache. И обращаться можно к asterisk cdr viewer только по имени папки. Зато перезагружать сам сервис httpd не нужно: apache автоматически «подхватит» и сможет отобразить залитые в соответствующую папку файлы.

Что касается конфигурации asterisk-cdr-viewer (а точнее, той её части, которая отвечает за подключение к MySQL), то настраивается она следующим образом: в файле config.inc.php, который находится в подпапке include проекта asterisk-cdr-viewer, измените следующие строки:

На этом установка Asterisk CDR Viewer завершена. Теперь откройте сайт:
http:// /asterisk-cdr-viewer/
например:
http://192.168.1.10/asterisk-cdr-viewer/

Должен открыться веб-интерфейс. в котором можно просматривать звонки asterisk.

Расширение функциональности Asterisk CDR Viewer

Вы можете добавить функционала в пакет, ознакомившись со статьей: «Допиливаем» Asterisk CDR Viewer под себя.

источник

«Допиливаем» Asterisk CDR Viewer под себя

«Я профессионал, потому что не ленюсь искать информацию в google» — сказал мне однажды коллега.

А я поленился и начал «допиливать» CDR Viewer под себя, даже не посмотрев хотя бы вот это.
А может и не в лени дело, просто было интересно… в общем, что из этого вышло можно посмотреть под катом:)

Споры о том, что лучше использовать в качестве офисной АТС — asterisk (с веб-интерфейсом или без, хотя это отдельная тема для споров) или какую-то коробку типа Panasonic, которых на рынок выкинуто немеренное количество — не утихают до сих пор, но топик не об этом, лично для себя я уже давно определился. Хотелось бы поделиться с сообществом своим вариантом придания интерфейсу просмотра статистики дополнительного фунционала.

В качестве «подопытного» я использовал FreePBX Distro (FreePBX 2.11, Asterisk 11, CentOS 6.5), скачанный с официального сайта проекта. Выбор был продиктован тем, что разработчики FreePBX уже позаботились о прикручивании БД к Asterisk и структура хранения записей в общем-то меня устраивает. Хотя процедура «прикручивания» MySQL или какой-либо другой базы к Asterisk была описана ни раз и ни два, о чем можно почитать например здесь, все же в целях экономии времени я решил этого не делать.

За основу был взят Asterisk CDR Viewer (если не нужно каких-то сверхмудреных отчетов — то вполне себе пригодная и простенькая статистика), скачать можно тут.

Установка CDR Viewer не представляется какой-то нетривиальной задачей.

Переходим в нужную нам директорию, качаем архив, извлекаем файлы из архива:

Переносим файлик алиаса в папку с apache2:

Изменяем настройки подключения к БД для Asterisk-CDR-viewer

Нужно поменять параметры в соответствии с текущей конфигурацией вашей базы:

$db_user = ‘[MySQL пользователь]’;
$db_pass = ‘[MySQL пароль]’;
$db_name = ‘[Имя базы]’;

Делаем рестарт веб-сервера:

Теперь в браузере набирая [адрес asteridk-сервера]/acdr/ попадаем на страницу статистики.

Первое, что мне захотелось сделать — прикрутить авторизацию для просмотра этой самой статистики, для этого воспользуемся htpasswd.
Если не установлена —

Переходим в /etc/apache2 и созадем юзер/пароль для статистики:

Вводим пароль в диалоге, который предлагает htpasswd и получаем файл «passwordfile» с юзером «username» и сгенерированным зашифрованным паролем.

Далее в /etc/apache2/conf.d изменяем asterisk-cdr-viewer.conf, раскомментрировав строки авторизации, в результате получаем:

Alias /acdr/ «/var/www/asterisk-cdr-viewer/»

AuthName «Asterisk-CDR-Stat»
AuthType Basic
AuthUserFile /etc/apache2/passwordfile
AuthGroupFile /dev/null
require valid-user

Рестартуем apache2 и при входе на страницу видим окно авторизации:

Следующее, что был сделано — это прослушивание разговоров из веб-интерфейса.

1) Для прослушивания звонков добавляем две иконки в каталог /var/www/asterisk-cdr-viewer/templates/images (play и stop)

источник

Asterisk CDR — запись в базу данных MySQL через cdr_mysql

Причины записи CDR в базу данных MySQL

В первую очередь возникает вопрос — зачем вообще нужно записывать CDR в базу данных MySQL сервера? Дело в том, что в отличие от многих других баз, asterisk может делать запись в mysql собственными средствами, без дополнительных программ. Кроме того, установка и настройка баз MySQL является простой операцией, а сама распространенность баз данных MySQL дает возможность рекомендовать этот формат баз данных для хранения статистики звонков — CDR.

Этапы настройки записи CDR в MySQL

Настройка сохранения истории звонков asterisk (CDR) в базу данных формата MySQL состоит из двух частей, каждая из которых состоит из нескольких этапов. Части могут настраиваться независимо и параллельно (до определенного момента).

Часть 1. Установите и настройте MySQL сервер

  1. Установите MySQL сервер
  2. Создайте базу данных для asterisk
  3. Создайте таблицу для asterisk

Часть 2 — настройка asterisk

  1. Установите компоненты для работы с MySQL: MySQL client и библиотеку для поддержки MySQL
  2. Пересоберите asterisk для работы с MySQL — cdr_mysql
  3. К этому моменту должна быть выполнена часть 1.
  4. Проверьте подключение к MySQL Server
  5. Настройте asterisk для работы с MySQL

И отдельным пунктом вынесены возможные ошибки, возникающие в процессе настройки MySQL / asterisk.

Установка и настройка MySQL

Установка MySQL Server

Для установки сервера MySQL в Debian достаточно набрать команду:
apt-get install mysql-server

В операционной системе RHEL / CentOS также все довольно просто:
yum install mysql-server

При этом будет установлена текущая (актуальная) версия mysql сервера (на момент написания статьи это версия 5.5).
В процессе установки будет необходимо задать пароль пользователя root для mysql. Не забудьте этот пароль, он Вам еще понадобится!
Для установки и первоначальной настройки MySQL сервера Вы можете воспользоваться статьей «Установка и первоначальная настройка MySQL в linux».

Запуск сервиса MySQL

Для запуска сервиса в CentOS выполните команду:
service mysqld start

Подключение к серверу SQL для выполнения запросов

Для подключения к MySQL серверу (чтобы можно было выполнять команды SQL) Вы можете воспользоваться любыми своими имеющимися инструментами, например PHPMyAdmin. Либо же можете воспользоваться встроенными средствами командной строки из пакета MySQL — mysql:
mysql -u имя-пользователя-SQL -p
например:
mysql -u root -p
после нажатия Enter будет запрошен пароль для пользователя. После ввода пароля и нажатия Enter, будет выведено приглашение MySQL:
mysql>_

Теперь Вы можете выполнять запросы SQL.

Создание базы данных (и пользователя этой базы данных) для asterisk cdr

Для создания базы данных (назовем ее asteriskcdr, Вы можете выбрать любое другое имя) выполните команду SQL:

Если Вы хотите создать отдельного пользователя (например, asterisk_user) для работы с этой базой данных, при этом выставить ему пароль например, asterisk_password, выполните команду SQL:

Теперь Вам необходимо назначить этому вновь созданному пользователю asterisk_user права для доступа к базе данных (например, права только для добавления / обновления записей и для просмотра базы). Для этого выполните команду SQL:

Если же Вы хотите дать этому пользователю полные права на базу данных, вместо предыдущей команды выполните эту команду SQL:

Если Вы хотите, чтобы пользователь MySQL мог подключаться удаленно к серверу MySQL (с другого компьютера), то (при создании, а также предоставлении ему прав доступа к БД) его имя следует указывать в формате:
имя-пользователя@хост
например:
asterisk_user@192.168.1.1

Если же Вы не знаете, с каких IP будет подключаться пользователь, либо Вам необходимо, чтобы он подключался с любых IP адресов, укажите имя пользователя в следующем формате:
имя-пользователя@’%’
например:
asterisk_user@’%’

В этом случае команда для предоставления полных прав [на работу с MySQL] пользователю asterisk_user, который может подключаться к MySQL с любых IP адресов, будет выглядеть так:

Создание таблицы для asterisk

Для создания таблицы asterisk CDR подключитесь к созданной базе данных и выполните следующий запрос:

Обратите внимание: в этой таблице (в отличие от таблиц 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 [не уверен, но предполагаю, что речь идет об asterisk 10-й, 11-й версии и новее] столбец calldate является копией столбца start, в отличие от старых версий asterisk, где столбец calldate является копией столбца end.

Настройка asterisk

Установка компонентов для работы asterisk с MySQL: mysql client и библиотеки mysql для сборки asterisk

Для установки клиента mysql (неважно, установлен ли asterisk на том же компьютере, что и сервер MySQL или нет) запустите в debian следующую команду:
apt-get install mysql-client

В случае, если у Вас установлен RHEL / CentOS, выполните такую команду:
yum install mysql

Теперь необходимо установить библиотеки mysql. Они дадут возможность собирать программы, предназначенные для работы с MySQL.
Для debian это будет команда:
apt-get install libmysqlclient-dev

Для RHEL / CentOS выполните:
yum install mysql-devel

Повторная сборка asterisk для работы с MySQL

Перейдите в папку с исходными кодами (откуда устанавливался asterisk) и запустите команду конфирурирования:
cd /usr/src/asterisk-11.4.0/
./configure
make menuselect

В открывшемся меню включите использование следующих компонентов:

  • Add-ons => res_config_mysql
  • Add-ons => cdr_mysql

После выхода (с сохранением) из меню выбора компонентов выполните сборку и повторную установку asterisk:
make
make install

Команду make samples не делать ни в коем случае, это сотрет имеющиеся конфигурационные файлы! Команду make config также выполнять не нужно, поскольку [предполагается, что] asterisk уже установлен и настроен в Вашей системе.

Теперь необходимо перезапустить сервис астериска для того, чтобы свежеустановленный asterisk начал свою работу.

Проверка связи с MySQL Server

Давайте проверим работу с сервером MySQL, подключившись к нему с помощью mysql клиента.
Для этого из командной строки запустите:
mysql —host= имя-сервера-MySQL -u имя-пользователя-БД -p
например:
mysql —host=192.168.1.1 -u asterisk_user -p
при этом будет запрошен пароль пользователя asterisk_user, укажите его.

При успешном подключении появится приглашение:
mysql>
теперь можно ввести команды mysql, например:
exit — для выхода

Настройка asterisk для работы с MySQL Server

Для настройки asterisk откройте файл /etc/asterisk/cdr_mysql.conf и впишите туда подобные строки (здесь указан лишь пример):

Вы можете раскомментировать нужные Вам строки или вписать новые.

После выполнения вышеуказанных действий запустите asterisk и попробуйте подключить модуль cdr_mysql.so. Для этого запустите подключение к asterisk:
asterisk -rvvv
И из командной строки asterisk (asterisk CLI) выполните следующую команду:
module load cdr_mysql.so
При возникновении ошибок решение см. в конце статьи. В случае, если Вы исправили ошибку, и Вам необходимо выгрузить и повторно загрузить модуль, выполните команды:
module unload cdr_mysql.so
module load cdr_mysql.so
В случае успеха asterisk может выдать несколько уведомлений и загрузит модуль. Убедиться в том, что модуль загружен, можно выполнив команду:
module show like cdr_mysql.so
После этого перезагрузите конфигурацию CDR и убедитесь, что звонки фиксируются в базе данных. Для перезагрузки конфигурации CDR выполните команды:
reload cdr
reload cdr_mysql.so
или
reload
На этом настройка asterisk закончена.

Возможные ошибки, возникающие в процессе настройки MySQL / asterisk

Error 1130 (HY000): Host ‘. ‘ is not allowed to connect to this MySQL server

Если Вы подключаетесь к серверу MySQL удаленно (с другого компьютера), то может возникать подобное сообщение. Данное сообщение означает, что сервер MySQL не настроен на возможность подключения к нему извне (точнее, что пользователю, под которым Вы пытаетесь подключиться, не разрешено подключение извне). Вам необходимо создать нового пользователя вида user@host, например asterisk_user@192.168.1.1 или asteriskcdr@’%’ (второй вариант дает возможность пользователю asteriskcdr подключаться с любого IP адреса).

Error 1045 (28000): Access denied for user ‘. ‘ (using password: NO)

При попытке подключения к серверу MySQL с помощью клиента mysql появляется указанное выше сообщение: это (вероятнее всего) означает, что Вы не задали пароль пользователя MySQL при подключении к серверу.

Error 1045 (28000): Access denied for user ‘. ‘ (using password: YES)

Если при попытке подключения к серверу MySQL с помощью клиента mysql появляется указанное выше сообщение, то это означает, что Вы указали неверный пароль для пользователя MySQL при подключении к серверу.

Error 2003 (HY000): Can’t connect to MySQL server on ‘. ‘ (113)

Если при попытке подключения к серверу MySQL с помощью клиента mysql (с другого компьютера) появляется указанное выше сообщение, это значит, что у Вас закрыт доступ к порту MySQL данного компьютера. Вероятнее всего, это вызвано неверной настройкой (а точнее, отсутствием настройки на работу с MySQL) службы iptables. Для начала попробуйте просто отключить iptables (остановить службу) и попробуйте подключиться ещё раз.

источник

Читайте также:  Установка полистирола на клей

Добавить комментарий

Adblock
detector