Il titolo di questo post riassume perfettamente quello di cui parliamo oggi, ovvero come gettare le basi per un centralino VoIP full-featured con software libero ed, eventualmente, hardware Digium (TDM410 e 4 FXO).
Si inizia installando una linux box con Debian 6.0.3. Il mio consiglio è di tenerla il più leggera e pulita possibile: niente X, niente programmi inutili etc etc… il sistema base è perfetto !
Il passo successivo è l’installazione di Asterisk e di FreePBX, una GUI che ne permette un facile utilizzo e configurazione. Fortunatamente per tutti voi (la mia prima installazione di un sistema simile, 5 anni addietro, è stata un macello !), c’è chi ha creato dei comodi scripts che automatizzano gran parte del processo. In particolare, per la Debian, abbiamo questi:
http://www.freepbx.org/support/documentation/installation/install-process-for-debian / http://www.corenetworks.com.au/wiki/doku.php
Sono necessarie comunque alcune piccolissime modifiche, in particolare l’aggiornamento del numero di versione di Asterisk (serie 1.4.x), ad oggi alla 1.4.42 (lo script, se non modificato, scaricherà ed installerà la 1.4.39).
Lo script installa automaticamente anche Dahdi, la LibPRI e gli Asterisk AddOns (CDR su MySQL, MoH ed altro…), velocizzando tantissimo il nostro lavoro di installazione.
Interfacciarsi alla rete telefonica tradizionale
Per chi ha intenzione di interfacciare il centralino Asterisk alla rete telefonica tradizionale (PSTN) sarà necessario acquistare dell’hardware dedicato. Personalmente mi son sempre trovato bene con le schede Digium, supportate al 100% da Asterisk (il produttore è lo stesso…) e di veloce installazione e configurazione.
In particolare ho utilizzato 2 schede TMD410 per interfacciare 8 linee PSTN ad un sistema telefonico VoIP, acquistando anche 8 moduli FXO. I moduli FXO servono per collegare linee telefoniche ATTIVE ad un centralino Asterisk. I moduli FXS, invece, servono se vogliamo collegare a questo centralino anche dei telefoni/fax PSTN.
Il modulo Dahdi, e relativi tools, è il driver per queste schede (ed altre della Digium) e richiede un pò di tempo per capire come configurarlo, anche perchè questo modulo si occupa dell’echo cancellation, riconosce i fax, i toni di linea…
Insomma, questi tools dovranno diventare vostri amici, anche perchè questa è la fase più delicata di tutto il setup: dahdi_cfg, dahdi_genconf, dahdi_hardware, dahdi_monitor, dahdi_scan, dahdi_test, dahdi_tool.
P.S. Mentre lo script succitato provvede a scaricare e compilare, leggetevi comodamente il manuale 🙂
Due parole sul funzionamento di Asterisk…
Come avevo già parlato in alcune mie slides in occasione del Linux Day (www.zerozone.it/Documenti/Presentazioni/VoIP/ e www.zerozone.it/Documenti/Presentazioni/Asterisk/Asterisk.pdf), Asterisk è un PBX (Private Branch eXchange) VoIP che offre, oltre alle funzionalità di routing e di grouping proprie di un qualsiasi centralino, anche funzioni di IVR, Conference, Fax, Queues, etc etc etc
La configurazione di Asterisk avviene attraverso dei files, generalmente presenti nella directory /etc/asterisk, dove si definisce quali sono i moduli da disattivare, le configurazioni, i flussi di routing, l’autenticazione etc etc etc
In rete trovate centinaia di pagine su come funziona Asterisk pertanto vi rimando al buon vecchio Google. Tuttavia quello che dovete aver ben chiaro sono i contesti (context), ovvero i “punti di accesso” delle telefonate. E’ importante perchè Asterisk (file /etc/asterisk/extensions.conf) si aspetta che le chiamate in ingresso arrivino dal contesto [from-pstn] :
;------------------------------------------------------------------------------- ; from-pstn: ; ; Entry context for calls from the outside world to hit FreePBX [from-pstn] include => from-pstn-custom ; create this context in extensions_custom.conf to include customizations include => ext-did include => ext-did-post-custom include => from-did-direct include => ext-did-catchall ; THIS MUST COME AFTER ext-did
pertanto dobbiamo assicurarci che il file di configurazione di Dahdi (/etc/asterisk/dahdi-channels.conf) contenga il context giusto:
; Span 1: WCTDM/0 "Wildcard TDM410P Board 1" (MASTER) ;;; line="1 WCTDM/0/0 FXSKS" signalling=fxs_ks callerid=asreceived group=0 context=from-pstn channel => 1 callerid= group= context=default
Possiamo adesso tralasciate tutto il resto della configurazione che faremo attraverso l’interfaccia web di FreePBX. Quello che dobbiamo sapere è:
Extensions (Extensioni) = sono gli “interni” telefonici
Trunks = sono i canali di ingresso/uscita delle chiamate dal nostro PBX. Ad esempio, se vogliamo connetterci con un’altro Asterisk, possiamo creare un trunk IAX !
Outbound routes = Le rotte in uscita, ovvero quelle che utilizzeranno i nostri interni per chiamare all’esterno (per capirsi, qui definiamo lo “0” per uscire).
Inbound routes = Rotte in ingresso, ovvero indicheremo quali sono i canali da cui riceviamo le chiamate.
CID = Caller ID, possiamo utilizzare questo valore per creare regole diverse a seconda della linea da cui proviene la chiamata. Ad esempio, se ho 8 linee esterne che rispondono ai numeri 555-1001, 555-1002….555-1008 ed il 1001 è il direttore, il 1002 la segretaria… dobbiamo creare regole diverse per ognuna di queste linee ed utilizzeremo proprio il CID come variabile discriminante.
Ok, nel frattempo che scrivevo, l’installazione di Asterisk e FreepBX si è conclusa con successo.
+----------------------------------------------------------------+ | Asterisk with FreePBX installation is finished. | | For running asterisk+freepbx you must use this command : | | # /etc/init.d/freepbx start | | | | # you can also use amportal start stop restart etc | | !! NEVER LOAD ASTERISK DIRECTLY !! | +----------------------------------------------------------------+ +----------------------------------------------------------------+ | Asterisk has been started goto http://[your ip] | | Done, enjoy | +----------------------------------------------------------------+
Apro il browser e vado su http://[your ip], dove trovo il buon server http Apache2 a rispondermi come dovrebbe. Da questa interfaccia si accede:
ARI = Pannello di gestione delle caselle vocali degli utenti abilitati
FOP (Flash Operatori Panel) = Strumento in Adobe Flash che visualizza lo stato degli interni, dei trunk, delle conferenze…
FreePBX Administration = Interfaccia di amministrazione FreePBX di Asterisk, che rappresenta la parte più importante del nostro centralino.
Cliccando sul FreePBX Administration si accede alla schermata riepilogativa, con il menu delle funzioni a sinistra.
La prima cosa da fare è aggiornare FreePBX all’ultima versione. Clicchiamo su Module Admin, sotto la voce Tools, per accedere alle funzioni di aggiornamento ed installazione dei vari moduli a disposizione.
N.B. Dopo ogni cambiamento ricordatevi di cliccare sempre su Apply configuration changes per rendere effettive le modifiche.
A questo punto dobbiamo solo decidere come il nostro centralino dovrà funzionare. Per iniziare, possiamo anche scaricare uno dei tanti softphone SIP (XLite, SJPhone…) ed utilizzarlo per fare alcune prove.
Per creare un nuovo interno andiamo su Setup->Extensions, scegliamo quale tipo di interno vogliamo creare (che sarà Generic SIP devices…) e poi compiliamo i vari campi che si presenteranno a schermo.
In particolare:
User Extension = il numero di interno che vogliamo creare (200, 101, 302…)
Display name = nome dell’utente (“Pinco Pallino”), che verrà utilizzato anche per altre funzioni
secret = la password dell’interno, che dovremmo inserire nella configurazione del softphone
importante anche specificare se l’interno si può trovare dietro un NAT oppure no: questo è importante perchè tutti i messaggi SIP transitano via UDP !
Ok, per il momento credo di avervi aiutato a configurare almeno la base di un centralino Asterisk. Consideratelo come aver varcato la soglia di un albergo di 90 piani: avere lo sguardo sulla reception non è certo sufficiente ma può andar bene come inizio !
Alcuni lettori si chiederanno come mai ho già scritto dei posti sul VoIP parlando però di OpenSIPS: bene, OpenSIPS è essenzialmente un SIP router che svolge funzioni di autenticazione e gestione dei flussi SIP, adatto alle grandi realtà (10000 ed oltre dispositivi) mentre Asterisk è molto più adatto, e completo, per le piccole realtà di 10-20-50 interni. Tuttavia OpenSIPS si integra perfettamente con Asterisk, soprattutto per l’interfacciamento con la rete PSTN e come Media gateway. Una comparazione tra i due strumenti è disponibile a questo link: http://advantia.ca/weblog/opensips-and-asterisk-compared
Se ci sono domande o segnalazioni, i commenti sono a vostra disposizione.