Italiano English
Edit History Actions

ConfigurazioneAsterisk

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