Raspberry Asterisk Server
Raspberry Asterisk Server
* ASTERISK SERVER *
Installiamo o cloniamo
RaspberryPI-Desktop in VirtualBox
Prima di tutto dobbiamo avere a portata di mano una versione di RaspberryPI-Desktop
che possiamo installare su un PC reale o su uno virtuale con l’aiuto del programma
VirtualBox.
Nella rubrica Le Guide di Oculus.it abbiamo già trattato l’argomento. Consiglio, quindi,
di visitare il sito al seguente indirizzo http://www.oculus.it/oculusblog/it/raspberrypi-
desktop-installiamolo-virtualbox/ per consultare o scaricare gratuitamente la relativa
guida.
Se invece abbiamo già a portata di mano un’installazione di base di RaspberryPI-
Desktop in VirtualBox, basterà crearne un clone seguendo la procedura spiegata
precedentemente.
In questo caso dovremo provvedere, manualmente, a far partire il server con il comando:
Compilazione da sorgenti
La compilazione da sorgenti è sicuramente più lunga e laboriosa ma, nel contempo, ci
permette di avere un software aggiornato all’ultimissima versione.
cd ~/Downloads
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
sudo apt-get install build-essential ncurses* libxml2-dev libsqlite3-dev libssl-dev libjansson-dev uuid-dev
sudo su
cd ~/Downloads
tar zxvf dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete*
make
make install
Ora passiamo alla compilazione delle librerie libpri. Il funzionamento è simile a quello
visto per le librerie DAHDI.
sudo su
cd ~/Downloads
tar zxvf libpri-current.tar.gz
cd libpri*
make
make install
sudo su
cd ~/Downloads
tar zxvf asterisk-15-current.tar.gz
cd asterisk*
./configure
make menuconfig
make
make install
[transport-udp-nat]
type = transport
protocol = udp
bind = 0.0.0.0
Ora possiamo passare alla prima parte della confgurazione degli interni:
[telefoni](!)
type = endpoint
context = in-Uscita
allow = !all,g722,ulaw,gsm
direct_media = no
trust_id_outbound = yes
device_state_busy_at = 1
dtmf_mode = rfc4733
[aor-single-reg](!)
type = aor
max_contacts = 1
Prima di tutto defniamo una serie di impostazioni generali che siano uguali per tutti gli
interni che andremo a creare. Nello specifco confguriamo un endpoint che punti, per
tutti quanti, alla confgurazione in-Uscita (che ritroveremo nel fle extensions.conf) e
che permetta l’uso solo dei codec audio specifcati.
L’autenticazione auth avverrà tramite username e password e solo un dispositivo alla
volta potrà connettersi al centralino con quel determinato numero di interno.
Evito di specifcare i signifcati del resto del fle di confgurazione perché lo ritengo, in
questo momento, superfuo. Sono tutti parametri consigliati dalle guide ufciali di
Asterisk.
A questo punto defniamo gli interni veri e propri:
[40](telefoni)
auth = 40
aors = 40
callerid = Pinco Pallino <40>
[40](auth-userpass)
password = 40
username = 40
[40](aor-single-reg)
mailboxes = [email protected]
[41](telefoni)
auth = 41
aors = 41
callerid = Paolino Paperino <41>
[41](auth-userpass)
password = 41
username = 41
[41](aor-single-reg)
mailboxes = [email protected]
In questo caso vediamo tre gruppi di confgurazioni con prefsso [40] seguiti da un
sufsso tra parentesi per ogni interno. Il contenuto che troviamo nelle parentesi non è
altro che il nome che abbiamo dato inizialmente nella confgurazione dei parametri
predefniti.
Nel fle vuoto che ci troviamo davanti inseriamo queste poche righe:
[in-Uscita]
exten = _XX,1,Dial(PJSIP/${EXTEN})
same = n,Hangup()
Nella sezione [in-Uscita], che era stato settato nel pjsip.conf come context predefnito
per i telefoni degli interni (fare bene attenzione all’uso delle maiuscole), mettiamo una
semplice estensione che prenda tutti i numeri formati da due cifre (XX) e mettiamoli in
contatto tramite il protocollo PJSIP. Al termine chiudiamo la conversazione con
Hangup().
[prov]
type = registration
outbound_auth = prov-auth
server_uri = sip:username@server:porta
client_uri = sip:username@server:porta
retry_interval = 60
[prov-auth]
type = auth
auth_type = userpass
username = username
password = password
[prov-endpoint]
type=endpoint
context = prov-Ingresso
allow = !all,g729,alaw,ulaw
outbound_auth = prov1-auth
aors = prov-aor
direct_media = no
from_domain = server:porta
[prov1-auth]
type = auth
auth_type = userpass
username = username
password = password
realm = server
[prov-aor]
type = aor
contact = sip:server:porta
[prov-identify]
type=identify
endpoint = prov-endpoint
match = ip.del.server
Anche in questo caso dovremo confgurare il fle extensions.conf per dare le regole per
le chiamate in ingresso e per le chiamate in uscita.
[prov-Ingresso]
exten = s,1,Dial(PJSIP/40,30,tTrR)
same = n,Hangup()
Con queste semplici righe indirizzeremo le chiamate in ingresso verso l’interno n. 40 che
abbiamo defnito precedentemente.
Queste righe, invece, scritte sotto alla categoria [prov-Uscita], reindirizzeranno verso il
provider defnito in prov-endpoint tutte le chiamate indirizzate verso i numeri verdi 800.
Tutte le altre chiamate in uscita verranno ignorate perché non è stato defnito il loro
instradamento verso il relativo trunk.
Le regole si creano tramite pattern che iniziano con un underscore _. Per capire meglio
le regole possiamo aiutarci con esempi pratici:
I caratteri speciali delle regole, che nell’esempio qui sopra sono evidenziati con le X,
possono in realtà essere di più. Nello specifco:
Ora che conosciamo i pattern possiamo creare, all’interno del fle extensions.conf, le
regole per l’inoltro delle chiamate verso uno specifco trunk.
exten = _800X.,1,Set(CALLERID(num)=numero_tel)
same = n,Dial(PJSIP/${EXTEN}@prov-endpoint)
same = n,Hangup()
exten = 3X.,1,Set(CALLERID(num)=numero_tel)
same = n,Dial(PJSIP/${EXTEN}@prov-endpoint)
same = n,Hangup()
Naturalmente, nel caso disponessimo di più trunk, per ogni tipo di destinazione
sceglieremo quella più adatta, a livello di costi, per quella determinata chiamata.
È molto importante sapere che i TRUNK SIP NON PERMETTONO l’instradamento
verso i numeri di emergenza 112, 113, ecc.
A questo punto, dopo aver confgurato tutto quanto, siamo pronti ad efettuare le prime
prove.
Scegliere la voce Impostazioni Selezionare la voce Account Riempire tutti i dati necessari e
e selezionare Impostazioni Sip confermare con il tastino in alto
Account a destra
L’interfaccia grafca non è delle più belle ma, vi assicuro, funziona benissimo.
Dal menu Yate si può accedere alla
confgurazione di un nuovo account tramite un
semplice wizard o tramite un’interfaccia
tradizionale clikkando sulla voce Add account.
Selezionando il protocollo SIP basterà inserire i
soliti valori relativi all’account del centralino
come username, password e nome server
oppure il suo numero IP.
Se tutto è stato confgurato in modo giusto sarà possibile ricevere le telefonate o
efettuarne tramite il trunk precedentemente confgurato.
Qui di seguito inserisco alcuni comandi utili per controllare il funzionamento del
centralino e la registrazione con interni e trunk: