Инструменты пользователя

Инструменты сайта


asterisk:stereo_record

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
asterisk:stereo_record [19.08.2024 22:59] nikolayasterisk:stereo_record [24.08.2024 13:22] (текущий) nikolay
Строка 1: Строка 1:
 ====== Запись звонков в стерео во FreePBX ====== ====== Запись звонков в стерео во FreePBX ======
 +
 +<note important>
 +Внимание! Данная инструкция подходит только к FreePBX версии **15**
 +</note>
  
 Рассмотрим доработку FreePBX версии **15** для возможности записи разговоров в режиме стерео, что позволяет прослушивать записи разговоров отдельно два конца линии для их последующего анализа. Рассмотрим доработку FreePBX версии **15** для возможности записи разговоров в режиме стерео, что позволяет прослушивать записи разговоров отдельно два конца линии для их последующего анализа.
Строка 26: Строка 30:
  
 Открываем в режиме редактирования файл **…/admin/modules/callrecording/functions.inc.php**. Открываем в режиме редактирования файл **…/admin/modules/callrecording/functions.inc.php**.
 +
 +**Внимание** Рекомендую сделать резервную копию файла **…/admin/modules/callrecording/functions.inc.php** перед внесением правок
  
   - Находим в нём функцию **callrecording_get_config($engine)**. Здесь находим строку:<code php>   - Находим в нём функцию **callrecording_get_config($engine)**. Здесь находим строку:<code php>
Строка 43: Строка 49:
 </code> Это означает, что правки, внесённые ниже, будут относиться к экстеншену **recordcheck**, контекста **sub-record-check**. Находим вызов приложения MixMonitor, относящийся к данному экстеншену (должен быть немного ниже), по следующей строке:<code php> </code> Это означает, что правки, внесённые ниже, будут относиться к экстеншену **recordcheck**, контекста **sub-record-check**. Находим вызов приложения MixMonitor, относящийся к данному экстеншену (должен быть немного ниже), по следующей строке:<code php>
 $ext->add($context, $exten, '', new ext_mixmonitor('${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}','a${MONITOR_REC_OPTION}i(${LOCAL_MIXMON_ID})${MIXMON_BEEP}','${MIXMON_POST}')); $ext->add($context, $exten, '', new ext_mixmonitor('${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT}','a${MONITOR_REC_OPTION}i(${LOCAL_MIXMON_ID})${MIXMON_BEEP}','${MIXMON_POST}'));
 +</code>Найденное заменяем на:<code php>
 +$fullname = $path_to_monitor . '${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}';
 +
 +$fname = '${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}';
 +
 +if ($stereo_mode) {
 +    $command = $path_to_rm . ' -f ' . $fullname . '.${MON_FMT}';
 +    $command .= ' && ' . $path_to_sox . ' -M ' . $fullname . '-in.${MON_FMT} ' . $fullname . '-out.${MON_FMT} ' . $fullname . '.${MON_FMT}';
 +
 +    if ($remove_source) {
 +        $command .= ' && ' . $path_to_rm . ' -f ' . $fullname . '-in.${MON_FMT} ' . $fullname . '-out.${MON_FMT}';
 +    }
 +
 +    $ext->add($context, $exten, '', new ext_execif('$[${LEN(${MIXMON_POST})}]', 'Set', 'MIXMON_POST= && ${MIXMON_POST}'));
 +    $ext->add($context, $exten, '', new ext_mixmonitor($fname . '.${MON_FMT}', 'a${MONITOR_REC_OPTION}i(${LOCAL_MIXMON_ID})${MIXMON_BEEP}r(' . $fname . '-in.${MON_FMT})t(' . $fname . '-out.${MON_FMT})S', $command . '${MIX
 +MON_POST}'));
 +}
 +else {
 +    $ext->add($context, $exten, '', new ext_mixmonitor($fname . '.${MON_FMT}','a${MONITOR_REC_OPTION}i(${LOCAL_MIXMON_ID})${MIXMON_BEEP}', '${MIXMON_POST}'));
 +}
 </code> </code>
 +  - Теперь находим ниже по коду строку:<code php>
 +$exten = 'recq';
 +</code> и заменяем строку кода:<code php>
 +$ext->add($context, $exten, '', new ext_mixmonitor('${MONITOR_FILENAME}.${MON_FMT}','${EVAL(${MONITOR_OPTIONS})}${MIXMON_BEEP}','${EVAL(${MIXMON_POST})}'));
 +</code> на:<code php>
 +$fullname = $path_to_monitor . '${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}';
 +
 +$fname = '${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}';
 +
 +if ($stereo_mode) {
 +    $command = $path_to_rm . ' -f ' . $fullname . '.${MON_FMT}';
 +    $command .= ' && ' . $path_to_sox . ' -M ' . $fullname . '-in.${MON_FMT} ' . $fullname . '-out.${MON_FMT} ' . $fullname . '.${MON_FMT}';
 +
 +    if ($remove_source) {
 +        $command .= ' && ' . $path_to_rm . ' -f ' . $fullname . '-in.${MON_FMT} ' . $fullname . '-out.${MON_FMT}';
 +    }
 +
 +    $ext->add($context, $exten, '', new ext_execif('$[${LEN(${MIXMON_POST})}]', 'Set', 'MIXMON_POST= && ${MIXMON_POST}'));
 +    $ext->add($context, $exten, '', new ext_mixmonitor($fname . '.${MON_FMT}', '${EVAL(${MONITOR_OPTIONS})}${MIXMON_BEEP}r(' . $fname . '-in.${MON_FMT})t(' . $fname . '-out.${MON_FMT})S', $command . '${EVAL(${MIXMON_POST}
 +)}'));
 +}
 +else {
 +    $ext->add($context, $exten, '', new ext_mixmonitor('${MONITOR_FILENAME}.${MON_FMT}','${EVAL(${MONITOR_OPTIONS})}${MIXMON_BEEP}','${EVAL(${MIXMON_POST})}'));
 +}
 +</code>
 +
 +===== Примечания =====
 +
 +После правки скрипта у вас будет постоянно висеть сообщение, что нарушена целостность модуля. Для отключения данного предупреждения необходимо в разделе **Call Recording** вкладки **System Setup** выключить переключатель **Enable Module Signature Checking**
 +
 +Также если будет происходить обновление модуля **Call Recording**, то правки в файл **…/admin/modules/callrecording/functions.inc.php** придётся делать снова.
asterisk/stereo_record.1724097566.txt.gz · Последнее изменение: nikolay