Перейти до

progxaker

Маглы
  • Всього повідомлень

    13
  • Приєднався

  • Останній візит

Сообщения додав progxaker

  1. 5 минут назад, Ромка сказал:

    2021-02-26_17-26.thumb.png.4ae1c417fefc55a8b18ade42d44673d6.png

    Модуль Askozia монитор ... А топик называет "... Asterisk"... Хотя да, мне известно, что теперь используется одна функция для воспроизведения записей, но для понимания кода, оставил здесь своё решение. Да и в документацию неплохо бы добавить, что необходимо писать имена файлов в ранее указанные столбцы, а то не все шарят в PHP)

  2. Разобравшись в коде(две недели назад, хех), узнал то, что было необходимо - в каком формате необходимо подавать записи БД. На самом деле в любом, главное, чтобы столбец с названием файла назывался 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 и другие аспекты, но думаю этим уже займутся сопровождающие.

    Итого:
    image.png.fee5426783b063255bf9822c28e63661.png

  3. 2 часа назад, nightfly сказал:

    Я у себя сегодня, уже быстренько все мигрировал на html5 audio :P

    Причем оно сложноее, так как пришлось еще на лету конвертировать gsm в OGG чтобы оно игралось в браузере. С голым астериском все должно быть радикально проще.

    spacer.png

     

    пинайте Pautiina либо bobr-kun - всякое про астериск, это их психоделическое творчество.


    Хм-м) Окей, буду пинать)

  4. 2 часа назад, nightfly сказал:

    Посмотрел одним глазом. Там по неизвестной мне причине, используется флэшовый плеер. Так, что все тлен.

     

     

    Ха-ха) Переходим на китайскую поделку?) Если серьёзно, то что же, придётся использовать CDR Viewer.

    Вам спасибо за потраченое время. Может позже кто заменит на HTML5)

  5. 2 часа назад, bos сказал:

    http://ubilling.net.ua/api_doc/classes/Asterisk.html#source-view
    есть еще такой документ) и как вариант все же назвать имя файла ${UNIQUEID} и подключить CEL - о чем написано в святом писании документации 

     

    Хех. Похоже, что придётся) О результатах отпишусь завтра. Или сегодня, если просто ${UNIQUEID} зайдёт)

  6. 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, но вот что ему пихать и что получается на выходе - загадка)

  7. 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 не шифровал, но когда сам разбирал ногу сломал, вот и пришёл лечиться)

  8. 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. 9 минут назад, bos сказал:

    Если есть возможность можете связать их через  поле filename в астере это допиливается легко 
    или использовать готовый инструмент  http://prog-it.github.io/Asterisk-CDR-Viewer-Mod/ 

     

     

    CDR Viewer Mod - это весьма заманчиво. Ранее рассматривал этот вариант. Оставил, как запасной) Есть ведь встроенная функция в UBilling, поэтому хочется воспользоваться ею.
    Про поле filename, правильно ли понимаю, что при вызове, вместе с записью, добавляется запись в таблицу, где указано полученное имя?
    Что-то вроде:

    exten => 100,1,Set(filename="...")

     

  10. Здравствуйте. Появилась потребность в подключении 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=<папка>(права есть, группы назначены).

    2021-02-08_21-23.png

×
×
  • Створити нове...