Тип контенту
Профили
Форум
Календарь
Сообщения додав progxaker
-
-
Сегодня добавлен pull request от @bobr-kun. Как только примут в основную ветку, посмотрю и отпишусь, а после можно и тему закрывать.
-
5 минут назад, Ромка сказал:
Модуль Askozia монитор ... А топик называет "... Asterisk"... Хотя да, мне известно, что теперь используется одна функция для воспроизведения записей, но для понимания кода, оставил здесь своё решение. Да и в документацию неплохо бы добавить, что необходимо писать имена файлов в ранее указанные столбцы, а то не все шарят в PHP)
-
Разобравшись в коде(две недели назад, хех), узнал то, что было необходимо - в каком формате необходимо подавать записи БД. На самом деле в любом, главное, чтобы столбец с названием файла назывался app_data или recordingfile. Дабы не пересоздавать базу, добавил в else изменённую запись.
if (!empty($this->recordingsPath)) { if (isset($each['app_data']) and in_array($each['app_data'], $allVoiceFiles)) { $fileUrl = self::URL_ME . '&astercallrecs=' . urlencode($each['app_data']); $data[] = $this->getSoundcontrols($fileUrl); } elseif (isset($each['recordingfile']) and in_array($each['recordingfile'], $allVoiceFiles)) { $fileUrl = self::URL_ME . '&astercallrecs=' . urlencode($each['recordingfile']); $data[] = $this->getSoundcontrols($fileUrl); } elseif (isset($each['filename']) and in_array($each['filename'], $allVoiceFiles)) { // То, что в each - это название столбца, в моём случае у меня всё было в filename $fileUrl = self::URL_ME . '&astercallrecs=' . urlencode($each['filename']); $data[] = $this->getSoundcontrols($fileUrl, urlencode($each['filename'])); } else { $data[] = ''; } }
Дальше проблемы с плеером. У меня версия UBilling 1.0.6(не обновлял, потому что на тестовом стенде, хех), поэтому он не работает(может сейчас работает в новых версиях). Переписал на HTML5:
protected function getSoundcontrols($fileUrl, $filename) { $result = ''; if (!empty($fileUrl)) { $playableUrl = $fileUrl . '&playable=true'; $playerId = 'player_' . wf_InputId(); $playControlId = 'controller_' . wf_InputId(); if($filename != "" && file_exists($this->recordingsPath . $filename)) $result .= wf_tag('audio', false, '', 'controls="" id="' . $playerId . '" preload="none" style="width: 200px;"') . wf_tag('source', false, '', 'src="' . $playableUrl . '" type="audio/wav"') . wf_tag('audio', true); } }
Можно ещё дописать проверку на то, указано ли расширение в alter.ini и другие аспекты, но думаю этим уже займутся сопровождающие.
Итого: -
2 часа назад, nightfly сказал:
Я у себя сегодня, уже быстренько все мигрировал на html5 audio
Причем оно сложноее, так как пришлось еще на лету конвертировать gsm в OGG чтобы оно игралось в браузере. С голым астериском все должно быть радикально проще.
пинайте Pautiina либо bobr-kun - всякое про астериск, это их психоделическое творчество.
Хм-м) Окей, буду пинать) -
2 часа назад, nightfly сказал:
Посмотрел одним глазом. Там по неизвестной мне причине, используется флэшовый плеер. Так, что все тлен.
Ха-ха) Переходим на китайскую поделку?) Если серьёзно, то что же, придётся использовать CDR Viewer.
Вам спасибо за потраченое время. Может позже кто заменит на HTML5)
-
2 часа назад, bos сказал:
http://ubilling.net.ua/api_doc/classes/Asterisk.html#source-view
есть еще такой документ) и как вариант все же назвать имя файла ${UNIQUEID} и подключить CEL - о чем написано всвятом писаниидокументацииХех. Похоже, что придётся) О результатах отпишусь завтра. Или сегодня, если просто ${UNIQUEID} зайдёт)
-
2 часа назад, bos сказал:
я в пхп не очень силен, может поправите, но селект идет к cel
https://github.com/nightflyza/Ubilling/blob/887dc31198f1b402bbf800806da1ce4be763affc/api/libs/api.asterisk.php#L842Пытался разобраться в коде, и запутался.
if (!empty($this->recordingsPath)) { if (isset($each['app_data']) and in_array($each['app_data'], $allVoiceFiles)) { $fileUrl = self::URL_ME . '&astercallrecs=' . urlencode($each['app_data']); $data[] = $this->getSoundcontrols($fileUrl); } elseif (isset($each['recordingfile']) and in_array($each['recordingfile'], $allVoiceFiles)) { $fileUrl = self::URL_ME . '&astercallrecs=' . urlencode($each['recordingfile']); $data[] = $this->getSoundcontrols($fileUrl); } else { $data[] = ''; } }
recordingPath у меня есть, значит выясняем allVoiceFiles. В нём записывает ответ getCallsDir, но вот что ему пихать и что получается на выходе - загадка)
-
2 часа назад, bos сказал:
1) посмотрите код веб страницы которую вы используете для просмотра в ubilling, думаю вопрос в том что при выборке он ищет определенный столбец где находится имя записи
2) как я вижу еще может тянутся название с СEL(но опять таки нужно понимать какое поле используется) что-то мне подсказывает что ориентироваться ubilling хочет на UNIQUEID
но без исходного кода страницы сказать что либо сложно2 часа назад, nightfly сказал:ASTERISK_CALLRECS_FORMAT
ASTERISK_CALLRECS_CEL_TAB_NAME
И вообще это все скорее вопросы к Pautiina.
Насчёт CEL думал, но это уже более подробная таблица, и в документации указано что "ASTERISK_CALLRECS_CEL_TAB_NAME" необязательна(т.е. и так работать может). Про "ASTERISK_CALLRECS_FORMAT" в самом конфиге прописано, что "можете оставить пустым и тогда буду смотреть все файлы", но попробую снова.
Про исходный код, вроде PHP и JS не шифровал, но когда сам разбирал ногу сломал, вот и пришёл лечиться) -
-
22 минуты назад, bos сказал:
в зависимости от версии астера, начиная, по-моему, с 13го:
1) same => n,Set(CDR(filename)=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}_${CALLERID(dnid)}.wav);2) нужно создать такое поле в самой таблице ))
3*) иногда, если вы пишите через cdr_adaptive_odbc в разделе добавить алиасов)table=cdr
alias start => calldate
alias filename => filename
Спасибо тебе добрый человек)
Сегодня попробую, но думаю проблем не возникнет. -
9 минут назад, bos сказал:
Если есть возможность можете связать их через поле filename в астере это допиливается легко
или использовать готовый инструмент http://prog-it.github.io/Asterisk-CDR-Viewer-Mod/CDR Viewer Mod - это весьма заманчиво. Ранее рассматривал этот вариант. Оставил, как запасной) Есть ведь встроенная функция в UBilling, поэтому хочется воспользоваться ею.
Про поле filename, правильно ли понимаю, что при вызове, вместе с записью, добавляется запись в таблицу, где указано полученное имя?
Что-то вроде:exten => 100,1,Set(filename="...")
-
Здравствуйте. Появилась потребность в подключении Asterisk к UBilling с возможностью записи разговоров.
Данный функционал(со стороны Asterisk) выполнил через MixMonitor.
exten => _XXX,1,MixMonitor(/var/records/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}_${CALLERID(dnid)}.wav)
Сделал базу CDR, привязал к UBilling'у, но вот прослушать/скачать записи не получается.
Хочется понять в каком формате(имя и расширение) сохранять, чтобы он мог их прочитать.
P.S. В alter.ini аргументы ASTERISK_ENABLED=1, ASTERISK_CALLRECS_PATH=<папка>(права есть, группы назначены).
Записи звонков Asterisk
в Stargazer Ubilling
Опубліковано:
@nightfly "поклеил, как есть", а сам не дожидаясь, проверил у себя. Можно было не 300px, 285, потому что при диагонали 4:3 и "лупы" 80% есть небольшой отступ, но это лишь детали. Основной вопрос закрыт, тему можно закрывать.