Одним из многих требований к современной телефонной системе является запись разговоров. Хочу немного рассказать о том как реализована запись разговоров в FreeSWITCH.
Разговоры в FreeSWITCH записываются с использованием приложения record_session. В качестве параметров этому приложению необходимо передать путь и имя файла для записи, причем расширение файла определяет в каком формате будет осуществлена запись этого разговора.
<!-- This will create file in "recordings" dir --> <!-- like 20120501_120432_1001_1005.wav --> <action application="record_session" data="$${base_dir}/recordings/${strftime(%Y%m%d_%H%M%S)}_${caller_id_number}_${destination_number}.wav"/>
В данном примере мы записываем следующий разговор (следующее приложение bridge ниже по конфигурационному файлу) в формате wav, помещаем этот файл в папку recordings и назваем сегодняшней датой, временем и номерами абонентов(кто звонил, кому звонили). Например, так - 20120501_120432_1001_1005.wav
Для записи я предпочитаю использовать формат wav, как наиболее популярный и удобный для дальнейшей обработки. Удобнее пользоваться постобработкой файлов, а не записывать сразу в сложные для процессора форматы, например mp3, так как это будет снижать общую производительность системы FreeSWITCH. Правильнее, я считаю, на нагруженной системе обработку файлов записи делать тогда, когда система менее активна. А это, как правило, бывает ночью. Тут поможет cron. Либо же, если рассматривать отказоустойчивую распределенную систему FreeSWITCH — то передать эти задачи отдельному серверу, он же может являться и хранилищем массива записей.
Таким образом только с помощью одной строчки в конфигурационном файле — мы записали разговор. Но на этом все не заканчивается, а начинаются тонкости. О них подробнее в этой статье.