QUESTA PAGINA E' ANCORA DA REVISIONARE
Asterisk è un PBX per linux, ovvero un centralino telefonico per le telefonate voip e non solo. Cosa si può fare con Asterisk? Semplicissimo: Si può configurare un computer che si interconnette ad un servizio voip su internet e che smista le telefonate verso degli interni oppure semplicemente consente di effettuare chiamate tra i numeri interni. Prendiamo per esempio la rete telefonica di un grosso ufficio: ogni utente può chiamare gli altri interni componendo un numero che identifica univocamente il telefono di un altro utente. Asterisk ci permette di fare esattamente questo utilizzando la tecnologia VOIP e il cavo ethernet. Passiamo alla configurazione. Per il momento non prendiamo in considerazione l'istallazione, consideriamo di lavorare su una distribuzione linux che preveda l'uso di pacchetti come ad esempio Debian e che con solo:
# apt-get install asterisk
ci ritroviamo con asterisk istallato. Dunque nella directory /etc/asterisk troviamo tutti i file di configurazione di Asterisk. I più importanti di cui ci occuperemo sono:
sip.conf extensions.conf iax.conf
In sip.conf si trovano le configurazioni degli utenti SIP e dei peer con servizi esterni (su internet) che offrono account SIP.
In sip.conf si trova una sezione general in cui si specificano i parametri di default come questa:
[general] context=default language="it" ; lingua scelta ad esempio per i messaggi della segreteria port=5060 ;porta utilizzata in ascolto del server asterisk realm=sip.ninux.org ;indirizzo ip o nome del server. Bindaddr=0.0.0.0 ;indirizzo della interfacce su cui fare ascoltare il server (0.0.0.0 =tutte) externip=62.123.40.19 ; nel caso il server sia dietro ad un nat, ip publico o dominio dinamico localnet=10.162.0.0/255.255.255.0 ;caso nat (ip rete locale) disallow=all ;codec audio supportati con relatica sequenza di priorità videosupport=yes allow=ulaw allow=alaw allow=g729 allow=gsm allow=h263 allow=h263p
Sempre nel sip.conf si trovano le configurazioni degli interni con account SIP come questa d'esempio:
[100] ;numero interno type=friend ;significa che questo utente può ricevere e effettuare telefonate secret=XXXXXXX ;password username=nino ;nome può essere impostato con una striga qualsiasi host=dynamic ;l' utente ha un ip dinamico context=mio ; contesto di riferimento... vedremo più avanti cosa sono i contesti nat=yes ;l'interno si trova dietro nat canreinvite=no ;la chiamata dovrà passare per il server (non direttamente client-client)
Nello stesso file si possono configurare anche collegamenti con gestori esterni, per esempio uno per ricevere telefonate ed uno per effettuarne:
register => username:password:username@indirizzo_server_sip:porta/extension (un numero)
Spendo qualche parola in più per quanto riguarda questa riga. Come potete notare ci sono tutti i parametri che normalmente si usano in una connessione come l'indirizzo del server username e password ed anche la porta. Fin qui tutto a posto. L' unico dato che sicuramente ancora non conoscete proprio perchè tipico di asaterisk è extension. Esso è un numero che ritroveremo nella configirazione di extensions.conf che serve per decidere come sarà smistata una telefonata in entrata tramite questo account appena configurato. Praticamente un numero che deciderete voi che dovrete anche impostare in extensions.conf.
[sip.messagenet.it] ;nome del provider context=mio ; contesto di riferimento type=user ; tipo account, in questo caso user perchè account solo per ricevere host=sip.messagenet.it ;indirizzo server
In modo molto similare configuriamo un account per chiamare esternamente.
[provider] ;nome account (scelto da noi) utilizzato in extensions.conf type=peer ;tipo account peer= solo chiamate host=sip.voipstunt.com ;indirizzo server sip provider username=XXXX ;username secret=XXXXX ;password context=mio ;contesto... un po di pazienza tra qualche rigo saprete di che si tratta
Passiamo ad analizzare il secondo file: extensions.conf
le sezioni tra [] in questo file identificano i contesi, finalmente. In ogni contesto un numero digitato sulla tastiera dei nosti terminali (telefoni) acquisisce un senso. Esempio: nel file di prima la configurazione dell' interno 100 aveva come context=mio. Ciò significa che qualsiasi numero verrà composto dall'utente 100 verrà cercata una corrispondenza con una configurazione del contesto [mio]. Credo che un esempio in questo caso sia più efficace che mille parole:
[mio] exten=>101,1,Dial(SIP/101,20)
questo significa che se l'utente 100 dovesse digitare sulla tastiera il numero 101, come prima priorita( l'uno dopo la prima virgola) verrà chiamato l'account SIP con numero 101. Spero che sia chiaro adesso cosa è un contesto. Ma in ogni caso che anche se non dovesse esserlo tra qualche riga lo sarà.
[default] ;contesto di default exten=>800,1,Dial(SIP/100,20) ;questa extension (800) è quella da me utilizzata per le chiamate entranti, vi ricordate il numero dopo la / nel sip.conf? Quello che decideva le sorti della chiamata in ingresso? La chiamata in ingresso in questo caso è smistata all' interno 100! il 20 sono gli squilli per i quali non si passa alla priorità successiva. exten=>800,2,SetLanguage(it) ;se la chiamata non dovesse andare in porto si passa alla priorità 2 (vedi numero dopo prima virgola della riga) exten=>800,3,Voicemail(b100) ;Segreteria telefonica dell'utente 100 exten=>800,102,Voicemail(u100) ; la priorità 102 è dovuta al fatto che se l'interno è occuparo o comunque non disponibile la priorità base è sommata di default a 101 quindi 1+101=102.
Andiamo avanti. Passiamo al contesto per le chiamate generate dagli interni.... introduco una variabile che ci consente di esprimere il numero composto: ${EXTEN}. Per evitare di scrivere una riga in extensions.conf per ogni interno esistente si può utilizzare una sintassi del genere: Verranno usati alcuni caratteri speciali come: “_”, “.”, “X”: essi hanno il valore rispettivemente di:
“_” = quello che verrà dopo è da interpretare... ovvero non è un numero preciso. “.” = qualsiasi sequenza di numeri. “X”= una cifra per esempio: _3XXX = qualsiasi numero a 4 cifre che inizia per 3. _3.= qualsiasi numero che inizia per 3 di lunghezza qualsiasi. _.=qualsiasi numero
Vediamo un esempio di contesto per le chiamate effettuate dagli interni:
[mio] ;contesto per i numeri interni exten=>_1XX,1,Dial(SIP/${EXTEN},20) ; se un interno chiama un numero di 3 cifre che inizia con 1 verrà chiamato quel numero e si aspetterà per 20 squilli in caso di mancata risposta. exten=>_1XX,2,Dial(IAX2/${EXTEN},20); con priorità 2 si proverà a chiamare la stessa utenza ma con il protocollo IAX che poi vedremo di cosa si tratta. ;chiamate in uscita exten => _00.,1,Dial(SIP/${EXTEN}@provider) ;chiamate internazionali tramite provider SIP corrispondente a [provider] in sip.conf exten=>_0X.,1,Dial(SIP/0039${EXTEN}@provider);chiamate nazionali (italia) tramite provider SIP corrispondente a [provider] sip.conf
Per approfondimenti questo è un bel libro AsteriskTFOT.pdf