Asterisk. Команда Record.

Record() - Записывает в файл аудиосигнал, передаваемый по каналу.

Record(имяфайла.формат[,пауза[,максимальнаяпродолжительность[,опции]]])

Записывает аудиосигнал из канала в файл с заданным параметром имяфайла. Если файл уже существует, он будет перезаписан.

К необязательным аргументам относятся:
формат - Определяет формат, в котором будет записываться файл.
пауза - Определяет допустимую паузу (в секундах), после которой запись будет закончена и выполнение перейдет к следующему приоритету диалплана.
максимальнаяпродолжительность - Устанавливает максимальную продолжительность записи, в секундах. Если не задана или равна 0, ограничений по продолжительности нет.
опции - Может содержать любой из следующих символов:
a - Дописываем в конец файла, а не перезаписываем его.
n - Не отвечаем на звонок, но все равно выполняем запись.
q - Скрытый режим; не воспроизводим звуковой сигнал в начале записи.
s - Не выполняем запись, пока не установлено соединение.
t - Используем альтернативную кнопку завершения * вместо применяемой по умолчанию #.
x - Игнорируются все кнопки завершения и продолжается запись до разрыва соединения.

Если имяфайла содержит %d, эти символы будут замещены номером, увеличивающимся на 1 при каждой записи файла.
Пользователь может нажать кнопку #, чтобы завершить запись и продолжить выполнение со следующего приоритета диалплана.

Пример:

; записываем имя вызывающего абонента
exten => 123,1,Playback(pls-rcrd-name-at-tone)
exten => 123,n,Record(/tmp/name.gsm,3,30)
exten => 123,n,Playback(/tmp/name)