Skip to content

angeloxx.it :: 6.00

Home Contattami
Anguillara Sabazia 4.6°C - Genova Albaro 4.2°C - Predappio --.-°C - Forlimpopoli --.-°C
Temperatura casa 22.2°C - Pressione 970.8hPa - Umidità 94% - Pioggia ultime 24h 17.6 mm

Come ti registro le telefonate
martedì 20 gennaio 2009

Per motivi vari mi sono trovato con la necessità di registrare le telefonate in transito sul server asterisk. Registrarle come noto è semplice, basta utilizzare l'applicazione Monitor che fa tutto da sola: registra l'audio in entrambe le direzioni in /var/spool/asterisk/monitor ed al termine richiama sox per la conversione in una unica traccia.

Se però volessi inviare la registrazione ad un indirizzo mail, magari in formato leggermente compresso? Beh, non è così immediata la cosa, motivo per cui ho deciso di condividere il modo in cui io l'ho realizzato. Nel mio caso l'invio avviene direttamente ad una singola casella di posta elettronica, ma nulla vieta di inviarlo ad esempio allo specifico utente che ha generato o ricevuto la chiamata.

Il dialplan è abbastanza semplice:


exten => _X.,1,Noop()
exten => _X.,n,Set(CALLFILENAME=/var/spool/asterisk/monitor/${TIMESTAMP})
exten => _X.,n,Set(MONITOR_EXEC=/opt/mailcall.sh "${CALLERID(num)}" "${EXTEN}")
exten => _X.,n,Monitor(wav,${TIMESTAMP},m)
exten => _X.,n,Dial(Zap/4/${EXTEN:1})

E' chiaro? Hmmm, mi sa di no. Ecco vediamo un po' come funziona. Normalmente il comando Monitor si occupa della registrazione della chiamata, nel formato specificato (wav solitamente) nel path definito in CALLFILENAME, motivo per cui si definisce prima questa variabile. Senza ulteriori dettagli, senza quindi la "m" come parametro di Monitor e senza MONITOR_EXEC quello che succede è che la chiamata viene registrata, vengono generati i due callfile (in e out) e finisce tutto qui.

Se aggiungiamo la "m" quello che Monitor fa è lanciare uno script alla chisura della chiamata, script che normalmente come detto esegue sox per il join delle due tracce. Se però facciamo eseguire un nostro script (definito con MONITOR_EXEC) possiamo ottenere qualsiasi effetto. Lo script (mailcall.sh) riceve in input i parametri da noi definiti e quindi numero chiamante e chiamato e altri tre parametri, che altro non sono che i due file di ingresso e quello di uscita.

A questo punto il simpatico script mailcall.sh può essere ad esempio il seguente:


#!/bin/sh
/usr/bin/sox -m "$3" "$4" "$5"
/bin/rm -f "$3" "$4"
/usr/bin/oggenc $5 -o /tmp/recording.ogg
echo "Mail inviata automaticamente" | biabam "/tmp/recording.ogg" -s "[Asterisk] Call '$1' - '$2'" Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo
/bin/rm -f $5

Cosa fa lo script? Non fa altro che unire le due tracce audio come farebbe lo script standard di Monitor, cancella i due file non più utili, comprime con oggenc la registrazione in formato wav  e la invia in allegato ad una mail con biabam, uno dei tanti programmetti che da console si occupano dell'invio di allegati via mail, preoccupandosi personalmente dell'encoding necessario.

Insomma, due righe nel dialplan ed uno script ed abbiamo ottenuto il nostro scopo.

 

XBMC RaiClick

XMBCRaiClick è lo script di consultazione dell'archivio online di RaiClick attraverso l'XBOX Media Center. La versione aggiornata è la 0.8 scaricabile di seguito:

SmartConnect

SmartConnect è il software, attualmente per Windows ma in progetto anche per Linux e MacOS X, di gestione di connessioni a server remoti tramite FTP, SSH, SCP/SFTP, Terminal Server, Cisco VPN e tanto altro. L'ultima versione è scaricabile qui di seguito:
[+]
  • Narrow screen resolution
  • Wide screen resolution
  • Auto width resolution
  • natural color