вівторок, 15 січня 2008 р.

Запись разговоров в Asterisk

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


Путем сложных поисков в гугле нашел несколько способов записи разговоров, но всё они записывали в wav и размер был соответствующим, а это меня не устраивало, как говорится в одном анекдоте: появился анлимный инет, осталось найти анлимный винт. Была у меня сначала идея регулярно переобжимать в mp3. Но потом нашёл параметры чтобы сразу после разговора обжималось с wav в mp3.

exten => 3,n, Set(CALLFILENAME=${STRFTIME(${EPOCH},,%y-%m-%d__%H-%M)}_${CALLERID(name)});
exten =>; 3,n, Set(monopt=nice -n 19 /usr/bin/lame -b 16 --noshort --silent "/var/spool/asterisk/monitor/${CALLFILENAME}.wav" "/var/spool/asterisk/monitor/${CALLFILENAME}.mp3" && rm -f "/var/spool/asterisk/monitor/${CALLFILENAME}.wav")
exten => 3,n, MixMonitor(${CALLFILENAME}.wav|b|${monopt});
exten => 3,n, Dial(SIP/7002&SIP/7003,20,tTm)
exten => 3,n, GotoIfTime(10:00-19:00|mon-fri|*|*?mobiln-admin,1)
exten => 3,n, StopMonitor;

По поводу параметров lame, эти были подобраны опытным путем, вроде как самый малый размер чтобы нормально послушать.
Да, кстати, разговор пишется только если на второй стороне взяли трубку, то есть файл не пустой.