Веб интерфес для прослушивания записанных Asterisk вызовов.

7th Март 2011 | Метки: , , , ,
Опубликовал: Andrey [rtty] Shidakov

Для более удобного прослушивания записанных asterisk вызовов, решил написать простенький веб интерфейс.
С помощью его можно выполнять такие простейшие фукции:
— Поиск нужного звонка с помощью несложного фильтра
— Прослушивание звонка из встроенного флеш плеера.
Вот скриншот:

 

1. Устанавливаем /usr/ports/net/asterisk16-addons,
предварительно добавив в Makefile строку:

CFLAGS+=-DMYSQL_LOGUNIQUEID

2. Создаем базу данных:

CREATE DATABASE asterisk;
 
GRANT INSERT
ON asterisk.*
TO asterisk@localhost
IDENTIFIED BY 'yourpassword';
 
USE asterisk;
 
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 '',
  `userfield` VARCHAR(255) NOT NULL DEFAULT '',
  `uniqueid` VARCHAR(32) NOT NULL DEFAULT '',
  KEY `cld_idx` (`calldate`),
  KEY `src_idx` (`src`),
  KEY `dst_idx` (`dst`),
  KEY `acc_idx` (`accountcode`)
)

3. Файл /usr/local/etc/asterisk/cdr_mysql.conf:

[global]
hostname=localhost
dbname=asterisk
table=cdr
password=youpassword
user=asterisk
sock=/tmp/mysql.sock
userfield=1

4. Скачиваем архив с вебинтерфейсом скачать, распаковываем в директорию веб сервера. Настройки в файле config.php. Скрипт простейший, функции минимальны, делал для себя. Доступ к вебинтерфейсу нужно запаролить через .htaccess

5. Сам asterisk должен быть предварительно сконфигурирован для записи: http://nixadm.ru/archives/605

PS: Просьба, если кто установит, отписаться о результате. Делал давно, писал по памяти, может быть что-то упустил.

  1. Dimzon
    28th Август 2010 в 16:38

    У меня такая проблема — web-интерфейс запускается, статистику из DB выводит, а вот при просмотре данных звонка открывается окошко с надписью No id! и всё. Подскажите куда копать? В PHP я не силён

  2. 28th Август 2010 в 16:59

    У меня интерфейс заработал, статистика из базы выводится, а вот данные звонка не работают — открывается окошко Call info с одной фразой No id! и всё. Я в PHP не силён… может кто нибудь сможет что-то посоветовать?

  3. Евгений
    9th Март 2011 в 13:17

    Установил у себя, установилось без проблем, только в cdr_mysql.conf убрал userfield=1.
    Ставил на Debian 6.0, Asterisk 1.6.2.15 Asterisk Addons 1.6.2.3
    для установки lame добавил в список репозиториев sources.list
    deb http://www.debian-multimedia.org stable main
    Спасибо огромное за сэкономленное время -)

  4. Евгений
    9th Март 2011 в 13:20

    @Евгений Забыл еще, у меня сокет mysqld в /var/run/mysqld/mysqld.sock соответственно поменял параметр sock в cdr_mysql.conf.

  5. 9th Март 2011 в 17:51

    Евгений, спасибо =)

  6. Настроил все как по ману,веб морда к MYSQL цепляется данные тянет все нормально только почему то не работает плеер и скачать нельзя при выборе звонка вылазеет окошко вот с этим

    Дата:$row[calldate] Откуда:$row[src] Куда:$row[dst] Время разговора:$row[billsec] MP3:Скачать Прослушать: «; mysql_free_result($result); ?>

  7. Запись работает конвертит в mp3 и ложит в папку mp3 в каталог web морды.

  8. 31st Март 2011 в 19:26

    Алексей, перекачайте архив. Похоже проблемма была в < ? вместо < ?php
    Обновил архив. Спасибо за коммент.

  9. Alexander
    15th Апрель 2011 в 18:52

    А есть у флеш-плеера опция автопроигрывания?

  10. Alexander
    21st Апрель 2011 в 14:35

    Всё, не надо, сам нашел. Кому надо http://flash-mp3-player.net/

  11. Ramzes III
    25th Апрель 2011 в 15:12

    Установил. Работает! Огромное спасибо!
    Есдинственное что поправил в вебморде play.php (line 54)
    Было:
    Стало:

    Не было пробела между php и echo. Из-за этого возникала ошибка.
    Автору респект и уважуха (ц) :)

  12. 25th Апрель 2011 в 16:27

    Ramzes III, спасибо)

  13. NIkolay
    8th Август 2011 в 11:26

    Установил CentOS 5.6 asterisk 1.8 php 5.3 mysql 5.0
    , пишет звук и конвертит, делал в extensions.conf
    exten => _3XXXXX,1,Set(monopt=nice -n 19 /usr/local/bin/lame -b 16 —silent «${WAV}/${UNIQUEID}.wav» «${MP3}/${UNIQUEID}.mp3» && rm -f «${WAV}/${UNIQUEID}.wav»)
    exten => _3XXXXX,n,MixMonitor(${WAV}/${UNIQUEID}.wav,b,)
    exten => _3XXXXX,n,Dial(sip/1002/${EXTEN},30,Tt)

    для того чтобы все работало
    добавил экстеншен
    exten => h,1,StopMixMonitor()
    exten => h,n,System(${monopt})

    если ставить ${monopt} в Mixmonitor, то не начинает конвертировать до завершения МиксМонитор и ниче не раборате.

    Только вот с веб интерфейсом никак не разберусь, апач ругается
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Use of undefined constant from — assumed ‘from’ in /var/www/html/mp3/index.php on line 16
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: from in /var/www/html/mp3/index.php on line 16
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Use of undefined constant to — assumed ‘to’ in /var/www/html/mp3/index.php on line 17
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: to in /var/www/html/mp3/index.php on line 17
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Use of undefined constant date_from — assumed ‘date_from’ in /var/www/html/mp3/index.php on line 20
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: date_from in /var/www/html/mp3/index.php on line 20
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Use of undefined constant date_to — assumed ‘date_to’ in /var/www/html/mp3/index.php on line 22
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: date_to in /var/www/html/mp3/index.php on line 22
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: oa in /var/www/html/mp3/index.php on line 26
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: cd in /var/www/html/mp3/index.php on line 27
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: oa in /var/www/html/mp3/index.php on line 38
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: from in /var/www/html/mp3/index.php on line 40
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: to in /var/www/html/mp3/index.php on line 46
    [Mon Aug 08 11:48:10 2011] [error] [client 10.32.0.111] PHP Notice: Undefined index: cd in /var/www/html/mp3/index.php on line 52
    и mp3 не играет тоже плюет ошибку
    [Mon Aug 08 12:18:20 2011] [error] [client 10.32.0.10] PHP Parse error: syntax error, unexpected T_VARIABLE in /var/www/html/mp3/play.php on line 54, referer: http://10.32.0.12/mp3/?action=2

    в ПХП я не силен, буду признателен за помощь.

    PS: Автору ОГРОМНОЕ спасибо, проект эффективен и прост, как все гениальное :)

  14. 11th Август 2011 в 19:08

    У меня на FreeBSD + php52 работает. Помоему ошибка из за ковычек в $_GET[‘variable’]
    К сожалению сейчас нет возможности поправить/проверить.

  15. Игорь
    2nd Октябрь 2011 в 20:09

    Огромное спасибо. Не без бубна, но всё заработало.

  16. 9th Октябрь 2011 в 07:25

    Скрипт малость сыроват, но со временем сейчас плоховато. Скоро на работе по зданию будем voip разворачивать, доделаю скриптик тогда :)

  17. Паша
    10th Октябрь 2011 в 19:14

    Буду очень благодарен, очень удачная штука!

  18. 7th Июнь 2012 в 19:03

    Спасибо, заработало, не без танцев с бубном конечно
    начала пришлось поставить кучку пакетов php5
    потом в борьбе с плейром и ПХП найдена ошибка в файле
    play.php в 54й строке нужно поставить пробел после <?php

  19. linmirage
    17th Июль 2012 в 16:18

    5. Сам asterisk должен быть предварительно сконфигурирован для записи: http://nixadm.ru/archives/605 — можно этот момент поподробнее расписать?

  20. linmirage
    17th Июль 2012 в 16:19

    я все настроил как описано выше, но неработает, даже в базе после звонков 0 строк, где копать?

  21. kub
    2nd Август 2012 в 13:46

    в 63 строке лучше так
    $result = mysql_query(«SELECT * FROM {$table} where calldate >= LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH))»);

    статистика будет выводиться с начала прошлого месяца, если оставить
    $result = mysql_query(«SELECT * FROM {$table}»);
    то через полгода-год страница очень долго будет загружатся

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