prog-it / asterisk-cdr-viewer-mod Goto Github PK
View Code? Open in Web Editor NEWSimple and fast viewer for Asterisk CDRs and Recordings (Mod)
License: GNU General Public License v3.0
Simple and fast viewer for Asterisk CDRs and Recordings (Mod)
License: GNU General Public License v3.0
в файле /inc/load.php:
require_once
'inc/Sendfile.class.php';`
при копировании через Windows имя становится строчным.
версия 2.6.0
Добрый день,
Есть ли возможность прикрутить проигрыватель WAV-файлов?
Например этот - https://github.com/datacompboy/WavPlayer
Или вообще встроенный в браузер. Писать в mp3 астериском требует слишком много ресурсов, да и WAV занимают гораздо меньше места.
К сожалению своих знаний нехватает чтобы поправить php :(
Заранее благодарен.
Ещё раз скопирую суть проблемы.
Есть небольшая проблема, если звонок приходит допустим в очередь (или сразу на несколько пиров), то в cdr падают записи о том что вызываются одновременно все пиры, следовательно веб интерфейс берёт все эти записи и получается дубляж с одним и тем же номером и временем.
Допустим в очереди 5 пиров, пришёл звонок, на него ответили. В статистики видно "Номер звонящего 1" - "номер назначения 2"
и таких записей будет 5 (потому что в очереди 5 пиров), только 4 из них будут "не отвечены", а один отвечен. Аналогично с файлами записи, для всех 5 будут одинаковы. Можно как это поправить?
Версия Asterisk 13.4.0
Кусок диал плана по которому проходит звонок
[macro-recording]
exten => s,1,GoToIf(
exten => s,n(yes),Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
exten => s,n,Set(CDR(filename)=${fname}.wav);
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b);
exten => s,n(no),Verbose(Exit record);
[in-5500]
exten => s,1,Answer()
exten => s,n,BackGround(hello)
exten => s,n,WaitExten(5)
exten => 1,1,Playback(hello-en)
exten => 1,2,Goto(1212,601,1)
exten => i,1,Goto(1212,601,1)
exten => t,1,Goto(1212,601,1)
exten => _[1-4]XX,1,Dial(SIP/${EXTEN})
exten => s,n,Hangup()
[1212]
exten => 601,1,Answer()
exten => 601,n,Macro(recording,${CALLERID(num)},${EXTEN})
exten => 601,n,Queue(call-center,tT)
exten => 601,n,Hangup()
В очереди находится 5 пиров.
Если вместо очереди сделать так "exten => 601,n,Dial(SIP/400&SIP/402&SIP/403&SIP/429&SIP/442,,tTo)" ситуация аналогичная, в базу пишутся одновременно звонки на все пиры, следовательно веб интерфейс их показывает, тем самым захламляя статистику.
p.s. Аналогичная ситуация даже если везде стоит экстеншен s.
Вот так в интерфейсе это выглядит:
2015-08-04 11:38:25 Отвечено 896----7735 s 00:15 0.00 Queue SIP SIP
2015-08-04 11:38:25 Не Отвечено 896----7735 s 00:06 0.00 Queue SIP SIP
2015-08-04 11:38:25 Не Отвечено 896----7735 s 00:06 0.00 Queue SIP SIP
2015-08-04 11:38:25 Не Отвечено 896----7735 s 00:06 0.00 Queue SIP SIP
Да я понимаю что веб интерфейс сам ничего не дописывает, но может быть можно как то это поправить? Например где нибудь в астериске "отключить" такое поведение или ограничить условием в веб интерфейсе, что если звонок с одним и тем же индификатором и временем, то показывать только отвеченный, если отвеченного нет, то показывать 1 "не отвеченный".
Заранее спасибо.
Добрый день.
Постарался максимально точно настроить, как описано в документации.
Вообще не понимаю куда копать. Подскажите, пожалуйста, хотя бы вектор.
Заранее большое спасибо.
Приветствую.
Ubuntu 14.04.5 x64, Asterisk 11.6, ACDR-Viewer-Mod 2.6
В столбце 'Файл ' присутствует только значек на скачивание записанного файла. Возможности прослушать запись нету. Сам файл пишется нормально и его можно скачать.
Я что-то не донастроил?
Добрый день.
Как с вами связаться чтобы обсудить доработку модуля под наши требования и будет ли вам это интересно ?
Спасибо.
Не нашла у вас в Readme, есть ли такая возможность. Насколько я знаю, скрипт в Интернете есть. Удобно было бы настраивать удаление по времени хранения: например храним 60мес (через веб задавать сколько храним), все более старые удаляем (по истечении 60 мес файлы удаляются каждый день по 1 дню). Также учитывать фактор оставшегося места на диске: если места осталось меньше 500 Мб (размер определяем), удаляем часть файлов (например за 1 день).
Добрый день, версия 2.2.4
Раскладываю звонки по папкам 2015/12/14 астериском, выбираю формат 4 в конфиг файле. Не видны звонки. Если же звонки в одной папке и выбран формат 0, то всё нормально. подскажите куда копать
@prog-it
Добрый день, благодарю за огромную работу которую вы проделали создавая данный проект.
Есть пару вопросов, по поводу тарифных планов.
У меня в диал плане есть несколько особенностей, которые хотел бы реализовать,
городские и межгород настроил без проблем, а вот на сотовые есть несколько направлений:
стандартные набор через 79 и 89 + 10 знаков
и не стандартный набор через альтернативного оператора 079 и 089 + 10 знаков.
т.е. длина сотового номера может быть 11 или 12 знаков.
пытался реализовать корректное отображение стоимости звонка, но в итоге, ничего не получилось.
реализацию производил через REGEXP
в файле my_callrates.inc.php.new
"Мобильные" => "(dst REGEXP '^[89|79][0-9]{8}|^[079|089][0-9]{9}')",
"Россия" => "(dst REGEXP '^[78][^9][0-9]{8}') and (dst NOT REGEXP '^[89|79][0-9]{8}|^[079|089][0-9]{9}')"
но этот код как то не корректно работает, то Межгород не считает, то сотовые в два раза больше.
Не могли бы подсказать, как лучше реализовать подсчет сотовых с различной длинной номера?
Добрый вечер,
elastix 2.5.0 (asterisk 11.17.1)
в отчете Asterisk-CDR-Viewer-Mod не вижу файлов с записями разговоров, в статусе answered. В строке файл - перечеркнутый серый круг. Звонки 'не отвечено' и 'занято' можно прослушать и скачать.
При этом сам файл записи существует и лежит в /mnt/zapis/2016/09/22, uid файла и данные в отчете совпадают.
Переменная $sysytem_monitor_dir = '/mnt/zapis';
$system_storage_format = 4;
Можно ли как-то включить дебаг и посмотреть
Выборка из cdr
| 2016-09-22 21:53:49 | 404 | 404 | 89043042877 | from-internal | SIP/404-00006168 | SIP/dr2203121-00006169 | Dial | SIP/dr2203121/89043042877,300, | 18 | 11 | ANSWERED | 3 | | 1474563229.24936 | | /mnt/zapis/2016/09/22/out-89043042877-404-20160922-215349-1474563229.24936.wav | 404 | 404 | 73512203121 | | |
При выборе периода "текущая неделя" в 2.2.5 выставляется период на месяц вперед.
К примеру сегодня 29.11 при выборе периода "текущая неделя" устанавливается с 28.12.2016 по 04.12.2016
Подскажите как сделать или что добавить чтоб можно выполнять поиск по Исх. канал ?
Добрый день,
Подскажите пожалуйста, не проигрываюся файлы,
пути:
http://192.168.0.2/dl.php?f=MTQ0MzUyMzY3NS44NS0yMDE1LTA5LTI5LTEzXzQ3LTEwMDEtMTAwMi5tcDM=
http://192.168.0.2/dl.php?f=MTQ0MzUyMjg1Ny44Mi0yMDE1LTA5LTI5LTEzXzM0LTEwMDEtNzQ5NTM2ODg0OTAubXAz
http://192.168.0.2/dl.php?f=MTQ0MzUyMjYwMy43My0yMDE1LTA5LTI5LTEzXzMwLTEwMDEtMTAwMi5tcDM=
http://192.168.0.2/dl.php?f=MTQ0MzUyMjMyNy42Ny0yMDE1LTA5LTI5LTEzXzI1LTEwMDEtMTAwMi5tcDM=
на сервере файлы mp3 в /var/calls
в конфиге значение не 1.
Где можно эти пути поправить?
Спасибо
В коде иногда используется . не у всех включен short open tag. Мелочь, но пришлось просмотреть код чтобы понять почему не работает отключение условий выборки из конфига.
И еще поправил у себя условие в func.inc.php в функции formatFiles в коментах Аудио, Архив, Факс
c filesize($rec['path'])/1024 >= $system_fsize_exists........
на $row['disposition'] == 'ANSWERED'
может не разобрался во всей логике, но в данном случае не режутся короткие разговоры
Добрый день, оператор связи дает тарифы для вечеров и выходных отличные от стандартных. Как можно обыграть данную ситуацию?
Добрый день.
По инструкции в Readme надо сделать так:
htpasswd -c /path/to/.htpasswd admin
Location "/path/to/script"
AuthName "Asterisk"
AuthType Basic
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
require valid-user
/Location
htpasswd создал.
htpasswd -c /var/www/html/Asterisk/.htpasswd admin
Создал в /etc/apache2/conf-enabled/aster.conf с содержимым:
Location "/var/www/html/Asterisk/index.php"
AuthName "Asterisk"
AuthType Basic
AuthUserFile /var/www/html/Asterisk/.htpasswd
AuthGroupFile /dev/null
require valid-user
/Location
И захожу без авторизации.
Что я делаю не так?
Есть ли возможность настройки подключения, к sqlite вместо подключения к mysql
Добрый день.
Записи сохраняются нормально, в колонке "filename" имя фиксируется.
Однако в панели записи не отображаются. Пробовал менять права на файлы/папки, менять владельца - без эффекта.
CDR исторически складываю в pgsql.
Как настроить работу с pgsql?
Скачал, настроил, файлы скачиваются, но при попытке воспроизвести *.gsm плеер просто молчит. Отсюда вопрос, может ли встроенный плеер играть эти файлы и если нет то есть ли возможность прикрутить другой поддерживающий данный формат?
Использую mariadb, в etc/odbc.ini charset=utf8, /etc/my.cnf тоже настроила. Если вводить русский текст из веб-интерфейса в поле комментария, все ок, в базе из командной строки тоже хорошо отображается. А если из имени абонента- крякозябры, хотя на самом телефоне (Cisco) правильно русский отображает, когда звонок приходит. CentOS 7. Где еще копать?
[mysqld]
...
character-set-server=utf8
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
[client]
# default-character-set is a client option, not a server option
default-character-set=utf8
[mysql]
default-character-set=utf8
Здравствуйте, подскажите пожалуйста.
Возможно ли реализовать работу загрузки с модуля аудио файлов?
Если путь к файлам и формат аудиозаписей такой как у меня:
/var/spool/asterisk/monitor/год/месяц/день/external-100-+380637581052-20150722-173232-1437575552.2.wav
PS
Help please!
Я разбираюсь в php не очень.
Приветствую!
Начинаю тестировать, и не работает скачивание файлов.
Оговорка: у меня файлы размещаются в /monitor/$uniqueid.ogg
Все ссылки в ACVM в столбике "Файл" идут с зелеными стрелками (а-ля файл есть), но при этом при наведении на них - запрашивается пустой URL: http://url/v2/dl.php?f=
А я так понимаю, что по дефолту, он должен спрашивать "dl.php?f=$fname.
Вопросы:
а) Должен ли урл по дефолту быть пустым (dl.php?f=) ?
б) Как сделать, что бы он запрашивал $uniqueid? Вариант замены в inc/func.inc.php
строки
$recorded_file = $row['filename'];
на строку
"$recorded_file = glob($system_monitor_dir . '/*' . $row['uniqueid'] . '.' . $system_audio_format); "
не взлетел.
Hi,
Do you have different language versions (like in English) ?
привет,
У вас есть версии на других языках (например, английский)?
Спасибо.
Хочу поставить вашу систему статистики, понравилась по виду и описанию.
Есть ли возможность разделять статистику по предприятиям со своими логинами и паролями (не один логин на предприятие, т.к. кому-то даем возможность удалять аудиозаписи, кому-то нет).
Хотелось бы добавлять не каждый номер к предприятию, а определять соответствие контекстов и предприятий (2-4 контекста на 1 предприятие, т.к. в предприятии номера разделены по контекстам в зависимости от прав выхода на городские линии, либо старший контекст). Если в предприятии 100 номеров, удобнее конечно контекстом определить принадлежность предприятию.
Как вариант, префиксы номеров начинающиеся на определенные цифры, принадлежат такому-то предприятию.
Можно такое сделать или может уже сделано?
Приветствую всех!
Назрел такой вопрос. Нужно сделать фильтрацию номеров в статистике таким образом чтобы входящие внешние номера и исходящие на внешние номера не повторялись.
т.е. если номер 111 звонил на номер +7 000 0000 0000 - 3 раза нужно вывести его один раз (+7 000 0000 0000) и наоборот если номер +7 000 0000 0000 звонил на любой входящий больше одного раза отобразить его один раз (+7 000 0000 0000).
Вся эта ерунда нужна чтобы собиралась статистика без дубляжа номеров (бред выданный маркетологом).
Если кто-то сталкивался с таким извращением просьба натолкнуть куда копать. А то пока приходит в голову только бред сивой кобылы и маты в сторону того кто эту ерунду придумал.
Как я вижу это все: Добавить чекбокс в котором прописано условие выводить только один номер, но что делать с операторами? Ведь принять или перезвонить клиенту могут разные операторы по одному и тому же вопросу...?
Ps.: Сервер VPS ubuntu 12.04, Asterisk 13, Астер патчился на предмет дубляжа входящих звонков когда при входящем в статистику выводился ответивший на звонок оператор и все не ответившие.
Здравствуйте! Очень нужен ответ на вопрос в заголовке.
PhpMyAdmin древний. Вкладки триггеры нет. Права на создание триггеров имеются.
Через SQL пробовал добавлять по мануалам, но постоянно пишет что синтаксис неверный. Явно где-то косячу.
Apache/2.2.22
Версия MySQL-клиента: 5.5.53
Phpmyadmin 3.4.10.1deb1
BEGIN IF ((NEW.dst = 's' OR NEW.dst = '~~s~~') AND NEW.realdst != '') THEN SET NEW.dst = NEW.realdst; END IF; END
При выборе доп. опции Параллельные звонки выдается ошибка:
PDO::errorInfo(): Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY unix_timestamp(calldate) ASC LIMIT 100' at line 1 )
Версия сервера: 5.5.47-0+deb8u1 - (Debian)
Веб-сервер nginx/1.6.2
Версия клиента базы данных: libmysql - 5.5.47
PHP расширение: mysqli
Дамп прилагаю
localhost.sql.zip
Флеш плеер очень плохая идея. Есть ли возможность заменить его на html5/js плеер. Как это сделано в cdr freepbx 11.17?
В астериске в настройках mysql поставил отравлять записи в cdr в utf8, теперь все записи в самой базе отображаются корректно, раньше были кракозябры в базе, но нормально выводилось в Asterisk-CDR-Viewer-Mod, теперь всё правильно выводится в базе, но вопросы вместо символов в Asterisk-CDR-Viewer-Mod. В браузере стоит utf8. Как пофиксить?
Большое человеческое спасибо за этот продукт!
Очень удобный просмотрщик истории звонков.
Не отрабатывает вот это
FOR EACH ROW BEGIN
IF ((NEW.dst = 's' OR NEW.dst = '~~s~~') AND NEW.realdst != '') THEN
SET NEW.dst = NEW.realdst;
END IF;
END
Пишет
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.dst = NEW.realdst;
END IF;
День добрый, в Readme у вас ошибка в макросе для старого диалплана, в строчке
exten => s,n,Set(CDR(realdst)=${called});
вместо названия переменной ${called} должно быть ${ARG2} т.к. в старом синтаксисе в макросе не описываются имена переменных, а просто идут по счету ARG1 ARG2 и т.д.
Добрый день.
Сегодня заметил - много разговоров/звонков, запись которых на самом деле есть, но Asterisk-CDR-Viewer-Mod не показывает записи разговоров.
Массово такое замечено за вчерашний день. Изменений никаких не вносил.
В "родном" CDR поле filename заполнено, и сам файл лежит в соответствующей директории.
Не могу понять, почему не отображаются записи иногда.
Кто-нибудь с подобным сталкивался?
Вот выборка из SQL:
*************************** 1. row ***************************
calldate: 2016-07-23 12:40:17
clid: "Reception2" <102>
src: 102
dst: 83522450799
dcontext: office-uc
channel: SIP/uc102-000009b8
dstchannel: SIP/3522XXXXXX-000009b9
lastapp: Dial
lastdata: SIP/3522XXXXXX/83522yyyyyy,30,m(default)
duration: 40
billsec: 25
disposition: ANSWERED
amaflags: 3
accountcode: out-office
uniqueid: 1469259617.2501
userfield:
filename: 1469259617.2501-2016-07-23-12_40-102-83522yyyyyy.mp3
did:
recordingfile:
cnum:
cnam:
outbound_cnum:
outbound_cnam:
dst_cnam:
А вот как этот звонок виден в A-CDR-V-M (нет значка "прослушать" и "скачать", будто запись отстутсвует):
http://rgho.st/8FRxGlHbd
На самом деле файл записи есть:
root@pbx:~# ls -lh /var/calls/1469259617.2501-2016-07-23-12_40-102-83522450799.mp3
-rw-rw-r-- 1 asterisk asterisk 100K Jul 23 12:40 /var/calls/1469259617.2501-2016-07-23-12_40-102-83522450799.mp3
root@pbx:~#
У нас идет подключение к MySQL через ODBC.
И никак не можем сделать так, чтоб Asterisk знал о существовании этого столбца в таблице.
Есть простой способ?
Ситуация следующая. Есть VPS сервер c астериском. Звонки пишутся на Яндекс.Диск (Диск примонтирован в /mnt/backup. Все работало замечательно пока хостер не провел плановую замену оборудования. Конфиги все те что и были раньше. Все пишется, крутится но звонки в CDR доступны только за текущий день.
Кто-то сталкивался? В какую сторону смотреть?
$system_storage_format = 2;
Записи переносятся скриптом по подпапкам раз в стуки.
Здравствуйте! Создал пользователя admin. Соответственно в файл .htpasswd и прописал
$admin_user_names = "admin"
Авторизация работает. Создал пользователя, равным экстеншену в .htpasswd (к примеру 101).
Но когда захожу под ним, вижу все так же, как и под админам "всем все". Сервер - nginx
Как решить проблему?
Добрый день.
Если есть несколько серверов каждый из которых хранит базу локально. На каждом установлен CDR-Viewer.
Есть ли возможность без выноса базы данных на отдельный общий сервер с помощью CDR-Viewer тянуть инфу сразу с нескольких серверов?
Добрый день.
Не могу понять один момент. Если использовать в плане набора конструкцию:
exten => 74991233333,1,Macro(rec,${CALLERID(num)})
exten => 74991233333,n,Dial(SIP/1002,30)
exten => 74991233333,n,Hangup()
то всё нормально записывается в базу данных, в том числе и в поле filename, а вот если использовать:
exten => 74991233333,1,Dial(SIP/1002,10,M(rec^${CALLERID(num)}))
exten => 74991233333,n,Hangup()
то в базу пишутся все поля, кроме filename
При этом на консоле Астериск показывает, что макрос нормально отработал.
Хотелось бы понять с чем это связано.
Добрый день
чтобы имя файла сохранилось в mysql в поле filename пришлось добавить в файл cdr_mysql.conf
[aliases]
filename=filename
спасибо.
Здравствуйте.
Будет ли добавлен данный функционал?
Спасибо.
Здравствуйте. Пару дней назад наткнулся на вашу разработку. Все просто круто! Но, как всегда есть но. Нет возможности конвертировать все в mp3. Есть ли какая то возможность воспроизводить родные wav файлы? И еще, в стандартном cdr FreePbx можно при поиске по входящему номеру писать несколько номеров через запятую. Можно ли реализовать это и в вашей версии? Иногда нужно искать сразу по нескольким номерам. Заранее спасибо!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.