Viktor Hlača 24/09/2018

Snimanje razgovora na Asterisku

Tehnologija
Tehnologija
1

Mnogi proizvođači nude rješenja za snimanje razgovora (Nice, Verint), a neki i integriraju tuđa rješenja u svoje pakete kao što čini Avaya. No, ako su takva rješenja izvan vašeg budžeta, nemojte odustati. Naime i Asterisk podržava snimanje razgovora i to „on-demand“ snimanje (jedan od sudionika pokrene snimanje razgovora tijekom razgovora) i „total“ (svi razgovori koji uključuju pojedine ekstenzije se snimaju)

On-demand snimanje

Da bi on-demand mogli koristiti potrebno je u datoteci features.conf omogućiti:

[featuremap]
automixmon => *3 

Ovom postavkom smo odredili da tipkanjem „*3“ tijekom poziva pokrećemo snimanje. Kasnije u dialplanu s dodatnom opcijom u aplikaciji Dial omogućujemo da se s „*3“ pokrene snimanje. Na primjer:

 exten => _3XX,1, Dial(SIP/dolaznaLinija/${EXTEN},,X)

 U ovom primjeru omogućeno je da POZIVATELJ aktivira snimanje. Ako stavimo „x“ umjesto „X“ onda ćemo omogućiti POZVANOM da aktivira snimanje. Možemo staviti i oboje („Xx“)
Ako želim da za jednu ekstenziju svi pozivi budu snimljeno onda u dialplanu navodimo:

 exten => 503,1,NoOp()
                same => n,Answer()
                same => n,Set(MONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-FROM-${CALLERID(num)}-TO-${EXTEN})
                same => n,MixMonitor(${MONITOR_FILENAME}.wav,b) 
                same => n,Dial(SIP/treci)

 U ovom primjeru smo definirali samo ime datoteke (vrijeme, pozivatelj, pozvani), a može se definirati i direktorij u koji će se smještati snimljeni razgovori.

Ramdisk

Današnji diskovi su prilično brzi. No u višekorisničkom okruženju svejedno mogu biti usko grlo (osim ako govorimo o SSD diskovima, ali kod njih je problem cijena). Da bi se izbjegli eventualni problemi s brzinom diska, možemo koristiti ramdisk. Ramdisk je dio memorije na kojem administriramo virtualni disk. Kako je memorija puno bžra od čvrstih diskova onda je i ramdisk puno brži.

Ramdiski koristimo tako da ga „mountamo“ na mjesto gdje se pozivi snimaju (default je /var/spool/asterisk/monitor). Zatim kreiramo skriptu koja će s ramdiska kopirati na fizički disk i pokrenemo cron proces koji svakih npr. 10 minuta kopira sve s ramdiska na drugu lokaciju.

Da bi kreirali ramdisk pratimo sljedeću proceduru

Kreiramo mjesto gdje ćemo ga mountati:

mkdir /mnt/ramdisk

Dodamo liniji /etc/fstab da bi se ramdisk mountao tijekom boota:

tmpfs           /mnt/ramdisk tmpfs      defaults,size=512M 0 0
(veličinu možemo podesiti prema potrebi i mogućnostima, ako je minuta otrpilike 1MB onda je 512MB dovoljno za 500minuta)

Mountamo ramdisk:

mount /mnt/ramdisk

Nakon toga napravimo link između /var/spool/asterisk/monitor i našeg ramdiska:

ln -s /mnt/ramdisk /var/spool/asterisk/monitor

 Da bi se svakih 10 minuta micao sadržaj ramdiska na hard disk, kreiramo skriptu koja će sadržavati:

# do this every 10 minutes
# skripta se kopiranjesnimki
# nalazi se na lokaciji /opt/skripte/
*/10 * * * * mv /media/ramdisk/* /var/lib/asterisk/VoiceRec/

 I stavimo ga u cron komandom

crontab /opt/skripte/kopiranjesnimki

 U ovom primjeru skripta se nalazi u /opt/skripte i zove se kopiranje snimki.