Запись разговоров в FreeSWITCH в деталях

voice recordings freeswitch

Этот пост является логическим продолжением статьи о базовых возможностях записи разговоров в FreeSWITCH. В нем я хочу более подробно остановиться на деталях. Итак, запись разговора мы уже начали, а с какого же момента пойдет запись? Напомню, что запись начнется со следующего приложения bridge ниже по конфигурационному файлу. Но все-таки будут ли в записи присутствовать гудки, которые слышит звонящий абонент или запись начнется с ответа абонента, взявшего трубку.  Для активации момента начала записи по ответу абонента — необходимо установить переменную media_bug_answer_req в true. Теперь запись разговора пойдет после ответа (answer) на вызов. По-умолчанию запись начинается с момента вызова приложения «bridge». В более старых версиях FreeSWITCH необходимо было работать с переменной RECORD_ANSWER_REQ, а не с media_bug_answer_req. Но я не застал тех времен. :) Вообще рекомендую при всех установках FreeSWITCH пользоваться последней актуальной GIT «сборкой». По заявлениям разработчиков она всегда наиболее стабильна. Но как и везде бывают исключения. Если у вас именно такой случай, то имея последние исходники проекта можно откатиться на предыдущие коммиты в GIT.

Вернемся к нашим «зайцам». По-умолчанию FreeSWITCH микширует два канала разговора в один моно канал в записи разговоров. Если же вам необходима информация о каждом канале, то этот вопрос можно решить установкой переменной RECORD_STEREO в истину. В этом случае голосовой поток звонящего будет записан в левый канал, а голосовой поток ответившего абонента в правый канал. Поменять каналы местами можно установкой канальной переменной RECORD_STEREO_SWAP в истину. Если стоит задача записывать только исходяший или входящий поток, то можно воспользоваться переменными RECORD_WRITE_ONLY или RECORD_READ_ONLY. Для их активации также необходимо присвоить значение истины.

Еще одна полезная канальная переменная — это RECORD_APPEND, при установки ее в истиное значение разговор пишется в один файл, так сказать дописывается в конец. Такое поведение при записи разговоров редко востребовано при необходимости детальной статистики, но все же приятно, что разработчики предусмотрели такую возможность.

Для контроля минимальной длительности записи разговора во FreeSWITCH имеется переменная RECORD_MIN_SEC, по-умолчанию равная 3 — записи длительностью менее 3 секунд удаляются. Если есть необходимость хранить все записи разговоров, то значение переменной RECORD_MIN_SEC необходимо установить в ноль.

Также вкратце можно упомянуть про переменные RECORD_TITLE, RECORD_COPYRIGHT, RECORD_SOFTWARE, RECORD_ARTIST, RECORD_COMMENT, RECORD_DATE устанавливая которые мы влияем на метаданные в заголовке звукового файла. Даже такую опцию предусмотерли разработчики.

<extension name="outcall">
<condition field="destination_number" expression="^(\d{11})$">
<action application="set" data="RECORD_TITLE=Recording ${destination_number} ${caller_id_number} ${strftime(%Y-%m-%d %H:%M)}"/>
<action application="set" data="RECORD_COPYRIGHT=(c) 2012"/>
<action application="set" data="RECORD_SOFTWARE=FreeSwitch"/>
<action application="set" data="RECORD_ARTIST=FreeSwitch"/>
<action application="set" data="RECORD_COMMENT=Voice recordings"/>
<action application="set" data="RECORD_DATE=${strftime(%Y-%m-%d %H:%M)}"/>
<action application="set" data="RECORD_STEREO=true"/>
<action application="set" data="media_bug_answer_req=true"/>
<action application="record_session" data="$${base_dir}/recordings/${strftime(%Y%m%d_%H%M%S)}_${destination_number}_${caller_id_number}.wav"/>
<action application="bridge" data="sofia/gateway/pctel.ru/$1"/>
</condition>
</extension>

Пример выше — фрагмент плана нумерации в котором устанавливается значение большинства перечисленных переменных. Думаю, что все очевидно и в дополнительных комментариях не нуждается.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>