Упрощение перевода записей в режим стерео в FreePBX
В предыдущей статье мы рассмотрели способы добавления и редактирования параметров на вкладку Advanced Settings . В этой статье рассмотрим, как правильно обращаться к параметрам Advanced Settings из кода модуля. Делать мы это будем на примере доработки, которая упростит перевод записей в режим стерео в FreePBX. Также добавим обработчик переключателя, между использованием приложения Monitor и MixMonitor […]
В предыдущей статье мы рассмотрели способы добавления и редактирования параметров на вкладку Advanced Settings . В этой статье рассмотрим, как правильно обращаться к параметрам Advanced Settings из кода модуля. Делать мы это будем на примере доработки, которая упростит перевод записей в режим стерео в FreePBX. Также добавим обработчик переключателя, между использованием приложения Monitor и MixMonitor для записи разговоров (добавление самого переключателя описывается в предыдущей статье).
Подготовительный этап
Перед тем, как приступим к написанию кода, необходимого для работы нашего функционала, проведём ряд подготовительных мероприятий.
1) Создадим переключатель между приложениями Monitor и MixMonitor. Если Вы это уже делали, в рамках предыдущей статьи, то данный шаг можно пропустить и перейти к пункту 2. Если же нет, то необходимо выполнить в MySQL запрос:
INSERT INTO insert into freepbx_settings(keyword,value,name,description,type,options,defaultval,readonly,hidden,category,module,sortorder) values ('MIXMONITOR_USE',0,'Use MixMonitor','KEYWORD:MIXMONITOR_USE Setting true will use the MixMonitor application instead of Monitor so the concept of \'joining/mixing\' the in/out files now goes away when this is enabled.','bool','',1,0,0,'Call Recording','callrecording',0);
2) Создаём переключатель, позволяющий управлять стереорежимом записи разговоров. Для этого в MySQL выполняем следующий запрос:
insert into freepbx_settings(keyword,value,name,description,type,options,defaultval,readonly,hidden,category,module,sortorder) values ('STEREOMODE_USE',0,'Enable Stereo Mode','KEYWORD:STEREOMODE_USE Setting true will use the record in stereo mode.','bool','',0,0,0,'Call Recording','callrecording',0);
По итогу, после выполнения этих запросов, категория Call Recording на странице Advanced Settings должна выглядеть следующим образом:
Теперь, когда подготовка завершена, перейдём к редактированию скриптов.
Правки скриптов
Открываем в режиме редактирования файл …/admin/modules/callrecording/functions.inc.php. Находим в нём функцию callrecording_get_config($engine). Здесь находим строку:
$context = 'ext-callrecording';
До неё вставляем следующий код:
$stereo_mode = FreePBX::Config()->get_conf_setting('STEREOMODE_USE');
$use_mixmonitor = FreePBX::Config()->get_conf_setting('MIXMONITOR_USE');
$path_to_sox = FreePBX::Config()->get_conf_setting('WHICH_sox');
Тем самым мы обеспечили считывание текущих настроек, указанных на вкладке Advanced Settings. В переменную $path_to_sox считываем значения параметра Path for sox. Оно нам потребуется в дальнейшем, при реализации стереорежима записи.
Теперь, в этой же функции находим строку:
$exten = 'recordcheck';
Это означает, что правки, внесённые ниже, будут относиться к экстеншену recordcheck, контекста sub-record-check. Находим вызов приложения MixMonitor, относящийся к данному экстеншену (должен быть немного ниже), по следующей строке:
$ext->add($context, $exten, '', new ext_mixmonitor('${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}','abi(LOCAL_MIXMON_ID)${MIXMON_BEEP}','${MIXMON_POST}'));
Вместо этой строки вставляем следующий код:
$monitor_flag = '';
if ($stereo_mode) {
$ext->add($context, $exten, '', new ext_set('MONITOR_EXEC',"$path_to_sox -M"));
$monitor_flag = 'm';
}
if ($use_mixmonitor) {
$ext->add($context, $exten, '', new ext_mixmonitor('${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}','abi(LOCAL_MIXMON_ID)${MIXMON_BEEP}','${MIXMON_POST}'));
}
else {
$ext->add($context, $exten, '', new ext_monitor('${MIXMON_FORMAT}','${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}', $monitor_flag));
}
Кодом выше мы добавили использования стереорежима и использования приложения Monitor вместо MixMonitor.
Теперь необходимо провести такую же процедуру с экстеншеном recq, также описанным в данной функции. Находим строку:
$exten = 'recq';
По аналогии с предыдущей правкой, находим здесь вызов приложения MixMonitor:
$ext->add($context, $exten, '', new ext_mixmonitor('${MONITOR_FILENAME}.${MON_FMT}','${MONITOR_OPTIONS}${MIXMON_BEEP}','${MIXMON_POST}'));
И заменим эту строку на следующий код:
$monitor_flag = '';
if ($stereo_mode) {
$ext->add($context, $exten, '', new ext_set('MONITOR_EXEC',"$path_to_sox -M"));
$monitor_flag = 'm';
}
if ($use_mixmonitor) {
$ext->add($context, $exten, '', new ext_mixmonitor('${MONITOR_FILENAME}.${MON_FMT}','${MONITOR_OPTIONS}${MIXMON_BEEP}','${MIXMON_POST}'));
}
else {
$ext->add($context, $exten, '', new ext_monitor('${MIXMON_FORMAT}','${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}',$monitor_flag));
}
На этом редактирование данного файла завершено.
По умолчанию, в FreePBX 13 версии отсутствует ext_monitor, который мы использовали в своём коде. Необходимо его добавить. Для этого открываем в режиме редактирования файл …/admin/libraries/ extensions.class.php. Находим здесь описание класса ext_mixmonitor (достаточно воспользоваться поиском по названию). Сразу после завершения его описания добавим свой класс ext_monitor:
class ext_monitor extends extension {
var $file;
var $format;
var $flags;
function ext_monitor($format, $file, $flags = "") {
$this->file = $file;
$this->format = $format;
$this->flags = $flags;
}
function output() {
return "Monitor(".$this->format.",".$this->file.",".$this->flags.")";
}
}
Таким образом, вызов ext_monitor осуществляется с тремя параметрами: расширение файла ($format), имя файла с указанием пути ($file) и необязательный параметр – указание флагов ($flags).
На этом редактирование кода завершено. Перейдём к его проверке.
Проверка работы кода
Для проверки работы кода обратимся к файлу extensions_additional.conf. При значении параметров в Advanced Settings: Enable Stereo Mode = No,Use MixMonitor = Yes, диалплан в контексте sub-record-check останется стандартным.
Теперь изменим значения параметров следующим образом: Enable Stereo Mode = Yes, Use MixMonitor = No. Применяем параметры, возвращаемся к файлу. Диалплан модернизируется следующим образом:
Также меняется диалплан в экстеншене recq.
Описание работы
Здесь приведу описание работы, в зависимости от значения параметров:
- Enable Stereo Mode = [Yes|No],Use MixMonitor = Yes – записывается один файл, используя стандартное приложение MixMonitor;
- Enable Stereo Mode = No,Use MixMonitor = No – записываются отдельно левое и правое плечи канала в два разных файла, используя приложение Monitor;
- Enable Stereo Mode = Yes,Use MixMonitor = No – записываются отдельно левое и правое плечи канала в два разных файла, используя приложение Monitor, после чего «склеиваются» приложением sox в один стереофайл.
На этом доработка по упрощению перевода записей в режим стерео завершена.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Подскажите а как сразу в mp3 писать? Или какой скрипт использовать чтобы он отрабатывал? Использовал вариант из ваших чтатей но он не отрабатвает после окончания записи в случае использования стерео.
Дмитрий, сразу писать в формате mp3 не получится. Можно прикрутить скрипт конвертации в mp3 «на лету».
Для этого можно воспользоваться материалами из этой статьи: https://voxlink.ru/kb/asterisk-configuration/udalenie-ishodnyh-fajlov-zapisej-razgovorov-pri-ispolzovanii-stereo/ (если удаление исходных файлов записей не нужно, то это можно убрать из скрипта, здесь важно описание вызова скрипта).
После этого в файл rec_source_remove.sh можем поместить конвертацию с помощью lame. Пример такой конвертации можно найти в статье: https://voxlink.ru/kb/asterisk-configuration/skript-konvertacii-zapisej-v-mp3-na-letu-otpravka-zapisi-na-pochtu-s-ukazaniem-informacii-po-zvonku/
отлично. Спасибо большое))