Автор Тема: Статистика и прослушивание звонков asterisk  (Прочитано 179646 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн profiton

  • Начинающий
  • *
  • Сообщений: 10
  • Рейтинг: 1
  • Пол: Мужской
  • Линуксоид
    • Просмотр профиля
  • Откуда: Россия
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #150 : 15 сентября 2015, 12:55:32 »
Всем привет!
Есть вопрос по такому моменту. Все настроил как по вашей статье на хабре, все работает, НО каждый звонок дублируется (то есть когда делаем select * from cdr; - видим 2 записи, вместо одной).
Соответственно, в веб-интерфейсе отображается также 2 позиции.
Подскажите, куда копать?

У вас в базе тоже дубликаты записей или только в веб-интерфейсе ? Если в базе тоже дубликаты, то, возможно, у вас установлен Asterisk 13.
В Asterisk 13 версии есть такой баг.

Оффлайн keaf

  • Новичок
  • *
  • Сообщений: 1
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Красноярск
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #151 : 04 февраля 2016, 06:20:53 »
Имеем:
PBX Elastix 2.5
asterisk CDR viewer MOD версии 2.2.5
Изменены параметры в config.inc.php:
$system_column_name = 'recordingfile';
$system_monitor_dir = '/var/spool/asterisk/monitor';

Так как записи разговоров преобразуются в mp3 с расширением wav изменен параметр: $system_audio_format = 'wav';
Записи разговоров складываются в таком виде:
ls /var/spool/asterisk/monitor/2016/02/04/
exten-69xx-1xxx-20160204-090435-1454551475.7921.wav  - входящий
q-19xx-1xxx-20160204-094051-1454553650.8091.wav  - очередь
out-1xxx-69xx-20160204-094628-1454553988.8121.wav  - исходящий

Есть несколько вопросов по внедрению asterisk-cdr-viewer:
1. Почему в интерфейсе asdr показываются записи только звонков очереди? Как сделать, чтобы показывались входящие и исходящие звонки? При этом в elastix можно прослушивать все звонки, в базе mysql в таблице тоже запись с ссылкой на разговор есть.
2. На сколько реально разграничить прослушивание звонков по пользователям? Некоторые пользователи должны прослушивать звонки только из группы.
3. Возможно ли сделать вход с помощью пользователя из базы mysql, а не из файла htpasswd? Как лучше это сделать?

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #152 : 08 февраля 2016, 23:04:32 »
keaf,
1. должно все отображаться, по крайней мере у меня так
2 и 3 - наймите PHP программера
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн syjet

  • Новичок
  • *
  • Сообщений: 2
  • Рейтинг: 0
  • Пол: Мужской
    • kotsarev
    • Просмотр профиля
  • Откуда: Краснодар
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #153 : 08 марта 2016, 22:13:53 »
profiton, вы еще поддерживаете свою версию Asterisk CDR Viewer Mod?
А то проблемки есть, и смотрю на гите вы давно не появляетесь...
1.
При выборе доп. опции Параллельные звонки выдается ошибка:
Цитировать
PDO::errorInfo(): Array (
  • => 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
2.
Так же не работают настройки (всегда все фильтры отображаются, независимо от настроек)
### Включение / Отключение показа условий поиска и типов отчетов
## Если 1 - показать, 0 - скрыть
$display_search = array();
# Показ типа отчета - Параллельные звонки
$display_search['chart_cc']=0;
# Показ типа отчета - ASR и ACD (Коэффициент отвеченных вызовов / Средняя продолжительность вызова)
$display_search['asr_report'] = 0;
# Показ условия поиска - Входящий канал
$display_search['channel'] = 0;
# Показ условия поиска - Имя звонящего
$display_search['clid'] = 0;
# Показ условия поиска - DID (Внешний номер)
$display_search['did'] = 0;
# Показ условия поиска - Исходящий канал
$display_search['dstchannel'] = 0;
# Показ условия поиска - Код аккаунта
$display_search['accountcode'] = 0;
# Показ условия поиска - Описание (userfield)
$display_search['userfield'] = 0;
# Показ условия поиска - Приложение
$display_search['lastapp'] = 0;

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #154 : 10 марта 2016, 06:04:25 »
syjet, думаю быстрее ответит если на гитхабе напишите.
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн syjet

  • Новичок
  • *
  • Сообщений: 2
  • Рейтинг: 0
  • Пол: Мужской
    • kotsarev
    • Просмотр профиля
  • Откуда: Краснодар
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #155 : 11 марта 2016, 17:58:53 »
На гите я оставил, там месяцами некого не было, пришлось сюда писать.
Пока решил тем, что поудалял в коде ненужные фильтры и колонки таблицы.

Оффлайн killog32

  • Новичок
  • *
  • Сообщений: 2
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: SCOW
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #156 : 11 апреля 2016, 15:27:02 »
[macro-recording]
exten => s,1,GoToIf($["${RECORDING}" = "1"]?yes:no)
exten => s,n(yes),Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
exten => s,n,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32  --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${$
exten => s,n,Set(CDR(recordingfile)=${fname}.mp3);
exten => s,n,Set(CDR(realdst)=${ARG2});
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b,${monopt});
exten => s,n(no),Verbose(Exit record);


Использовал данный макрос,но вызовы пишуться только на исходящие,что нужно исправить чтобы шла запись и на входящие и на исходящие вызовы?

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #157 : 12 апреля 2016, 05:50:16 »
killog32, неплохо было бы увидеть диалплан на входящие и на исходящие )
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн killog32

  • Новичок
  • *
  • Сообщений: 2
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: SCOW
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #158 : 12 апреля 2016, 07:56:51 »
exten => _83XXXXXXXXX,1,Verbose(1,>>> Start of Inter City Call's Processing)
 same => n,Macro(map-to-city,${CALLERID(num)})
same => n,Macro(recording,${CALLERID(num)},${EXTEN})
 same => n,Set(CALLERID(num)=99999${ANOTHERCALLER})
 same => n,Dial(${TELCO}/${EXTEN},,Ttfg)
[macro-map-to-city]
exten => s,1,Goto(s-${ARG1},1)
 same => n,Set(ANOTHERCALLER=${ARG1})
exten => _s-.,1,Set(ANOTHERCALLER=999999)

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #159 : 13 апреля 2016, 12:13:53 »
killog32, ну теперь включай debug(core set verbose 9) и смотри при входящих/исходящих как что отрабатывает
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн wolf_ktl

  • Новичок
  • *
  • Сообщений: 1
  • Рейтинг: 0
    • Просмотр профиля
  • Откуда: Москва
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #160 : 13 мая 2016, 16:14:54 »
### Название столбца в БД, в котором хранится название записи звонка
$system_column_name = 'recordingfile';



## Если др. значение, то все записи хранятся в одной папке (/var/calls)
$system_storage_format = 2;



### Папка, где находятся записи Asterisk
$system_monitor_dir = '/var/spool/asterisk/monitor'; // без слеша на конце


Не видит файлы


/var/spool/asterisk/monitor/2016/05/13/external-3180-Private-20160513-153548-1463142948.2367.mp3

в базе прописан external-3180-Private-20160513-153548-1463142948.2367.mp3
« Последнее редактирование: 13 мая 2016, 16:31:29 от wolf_ktl »

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #161 : 14 мая 2016, 21:54:31 »
wolf_ktl, вопрос то в чем?
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн Makioro

  • Начинающий
  • *
  • Сообщений: 23
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Ukraine
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #162 : 01 июня 2016, 20:06:54 »
Добрый день
Хочу поделиться скриптом, который я сделал к этому моду, а также хотел бы попросить помощи в реализации разграничения прав.
Для начала поделюсь своим скриптом для автоматического звонка астериском при клике на номер в asterisk-cdr-viewer. Создаём файл (я назвал его dialout.php) и кладём в корень asterisk-cdr-viewer'а с таким содержимым:
<?php
$filename = $_SERVER['REQUEST_TIME'] . '-' . $_GET['from'] . '-' . $_GET['to'] . '.call';
$temp_dn = "/var/spool/asterisk/outgoing_archive/";
$dn = "/var/spool/asterisk/outgoing/";
$fn = $temp_dn . $filename;
$dest_fn = $dn . $filename;
echo "Calling from SIP/" . $_GET["from"] . "\n";
echo "to " . $_GET["to"] . "\n";
echo '<br>';

$fp = fopen($fn,'wt');
$test = fwrite($fp,"Channel: SIP/" . $_GET["from"] . "
CallerID: \"Some Name\" <+380123456789>
MaxRetries : 2
RetryTime: 300
WaitTime: 45
Context: outgoing
Extension: " . $_GET["to"] . "
Priority: 1
Archive: Yes");

if ($test) echo 'File successfully writed';
else echo 'Write file error!';
echo '<br>';
$new_fn = $fn . '.bak';
$test = copy($fn,$new_fn);
if ($test) echo 'File successfully copied';
else echo 'Copy file error!';
echo '<br>';

$test = rename($fn,$dest_fn);
if ($test) echo 'File successfully moved';
else echo 'Move file error!';
?>
(Всякие выводы можно опустить, ни разу не сталкивался с тем, чтобы выдавались ошибки)
где $temp_dn (/var/spool/asterisk/outgoing_archive/) - это папка, где будет создаваться файл и там будет храниться его копия для истории. Если история не нужна, то закомментируйте код $test = copy($fn,$new_fn);. У этой папки должны быть права o+rw. Когда писал это заметил что у меня Archive было без "с". Сейчас проверить возможности нет, но может этот кусок кода вовсе не нужен с включенной опцией Archive: Yes
$dn (/var/spool/asterisk/outgoing/) - папка астериска, в которую он смотрит постоянно и звонит когда там появляется файл звонка
CallerID, MaxRetries и т.п. подредактируйте в соответствии с настройками вашего сервера и вашими пожеланиями. Астериск вызовет сначала SIP/"from", а когда вы снимете трубку - попытается позвонить на номер "to" через экстеншн "outgoing".
В конфиге inc/config.inc.php нужно установить переменную:
$rev_lookup_url = '/dialout.php?from=' . $cdr_user_name . '&to=' . '%n';
И (не уверен, что нужно, но я на всякий случай сделал) перенести вот эти строки:
// Имя пользователя
$cdr_user_name = getenv('REMOTE_USER');
выше строки с $rev_lookup_url.
Также очень важно, чтобы ваше SIP имя совпадало с логином в asterisk-cdr-viewer (используется именно это имя)
Если я где-то сделал косяк или что-то правильнее сделать по-другому - сообщайте.
__________________________________________________________
И теперь мой вопрос вам: как сделать чтобы одни могли прослушивать звонки, а другие - нет? Не реализовал ли кто ранее такое?

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 972
  • Рейтинг: 25
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #163 : 02 июня 2016, 11:33:08 »
Makioro, годная идея со скриптом.
На счет вопроса - я не пробовал сделать, возможно подтянутся еще камрады.
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн Makioro

  • Начинающий
  • *
  • Сообщений: 23
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Ukraine
Прослушивание звонков из asterisk-cdr-viewer
« Ответ #164 : 02 июня 2016, 21:58:16 »
И ещё есть необходимость сделать чтобы звонки как-то помечались: дозвонился человек или нет, и перезвонили ему потом или нет
Например, все операторы разговаривали когда человек звонил, он немного в очереди покрутился и положил трубку. И вот если ему потом перезвонили или он сам таки дозвонился чтоб все его предыдущие звонки были отмечены, что контакт с абонентом был. А лучше отмечать красным те записи, которые на текущий момент так и не дозвонились.
И кстати, почему когда человек попал в очередь, а потом положил трубку, статус "Отвечено"? Он же до оператора не дозвонился. Может нужен какой-то другой статус если не удалось связаться?

Опыта у меня в php меньше, чем в астериске. Да и астериском я занят всего полгода - в офисе настраиваю с нуля без всяких веб-интерфейсов. Но желание поучиться есть. Мне бы человека, кто потратит немного времени на подсказки. Гугл, конечно, хорошо, но не всегда знаешь, что именно искать