Посетители профиля
Блок посетителей профиля отключен и не будет отображаться другим пользователям
progxaker's Achievements
Пролетал Мимо (1/9)
0
Репутація
-
@nightfly "поклеил, как есть", а сам не дожидаясь, проверил у себя. Можно было не 300px, 285, потому что при диагонали 4:3 и "лупы" 80% есть небольшой отступ, но это лишь детали. Основной вопрос закрыт, тему можно закрывать.
-
Сегодня добавлен pull request от @bobr-kun. Как только примут в основную ветку, посмотрю и отпишусь, а после можно и тему закрывать.
-
Модуль 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 и другие аспекты, но думаю этим уже займутся сопровождающие. Итого:
-
Хм-м) Окей, буду пинать)
-
Ха-ха) Переходим на китайскую поделку?) Если серьёзно, то что же, придётся использовать CDR Viewer. Вам спасибо за потраченое время. Может позже кто заменит на HTML5)
-
Хех. Похоже, что придётся) О результатах отпишусь завтра. Или сегодня, если просто ${UNIQUEID} зайдёт)
-
Пытался разобраться в коде, и запутался. 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, но вот что ему пихать и что получается на выходе - загадка)
-
Насчёт CEL думал, но это уже более подробная таблица, и в документации указано что "ASTERISK_CALLRECS_CEL_TAB_NAME" необязательна(т.е. и так работать может). Про "ASTERISK_CALLRECS_FORMAT" в самом конфиге прописано, что "можете оставить пустым и тогда буду смотреть все файлы", но попробую снова. Про исходный код, вроде PHP и JS не шифровал, но когда сам разбирал ногу сломал, вот и пришёл лечиться)
-
К сожалению без проблем не обошлось) Запись разговора есть, запись в БД есть, но UBilling продолжает игнорировать файл. Выставлял и 777, и запись менял(с .wav и без), однако не помогло.
-
Спасибо тебе добрый человек) Сегодня попробую, но думаю проблем не возникнет.
-
progxaker змінив свою фотографію
-
CDR Viewer Mod - это весьма заманчиво. Ранее рассматривал этот вариант. Оставил, как запасной) Есть ведь встроенная функция в UBilling, поэтому хочется воспользоваться ею. Про поле filename, правильно ли понимаю, что при вызове, вместе с записью, добавляется запись в таблицу, где указано полученное имя? Что-то вроде: exten => 100,1,Set(filename="...")
-
progxaker підписався на Записи звонков Asterisk
-
Здравствуйте. Появилась потребность в подключении 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=<папка>(права есть, группы назначены).
