asterisk-bubbleAbbiamo visto, negli articoli precedenti, come compilare ed installare da zero un centralino ASTERISK VoIP.

Non tutti pensano a quanto possa essere potente un sistema come questo, si possono fare cose che con un centralino tradizionale non è possibile nemmeno pensare o, forse, è possibile fare a costi molto alti.

Oggi vedremo come fare per configurare il server per registrare una o più linee VoIP/SIP esterne (l’esempio tratterà in particolare l’integrazione di una linea Cloud Italia Orchestra e MessageNet), la creazione di interni, l’interazione tra loro e la segreteria telefonica.

Quindi, se non avete ancora eseguito l’installazione di Asterisk sul vostro Linux, credo che sia arrivato il momento di leggere l’articolo Come installare Asterisk su Ubuntu ed, eventualmente, Usare una chiavetta internet per voce ed SMS.

A questo punto si può procedere.

15/02/2018: Attenzione! È stato scritto un articolo nuovo riguardante questo argomento. Puoi visitare la pagina “Asterisk Server su RaspberryPI Desktop” dove viene trattata l’installazione e la configurazione di base di Asterisk su Debian, Ubuntu e derivate.

I files di configurazione di Asterisk si trovano nella cartella /etc/asterisk di linux ed in principali da modificare (richiesti i permessi di root/super user) sono i seguenti:

sip.conf
extensions.conf
voicemail.conf

Vediamo, uno ad uno, a cosa servono questi files. Consiglio di rinominare o rimuovere i files creandone poi dei nuovi da zero.

sip.conf  –  Registra linee esterne VoIP/SIP e configura gli interni.

Vediamo il contenuto di questo file. Esiste una sezione chiamata [general] che contiene le informazioni principali relative alle linee SIP. Le informazioni minime che contiene questa sezione sono le seguenti:

[general]
context = default
realm = voip.eutelia.it
register => numero_di_telefono:password:numero_di_telefono@voip.eutelia.it:5060/numero_di_telefono
register => username:password@sip.messagenet.it:5061/numero_di_telefono
port = 5060
srvlookup = no
defaultexpirey = 30
useragent = Asterisk_Eut
bindaddr = 0.0.0.0
externip = numero_ip_pubblico
localnet = 192.168.1.0/24   ; indirizzo identificativo della rete locale

disallow = all
allow = alaw
allow = ulaw
allow = g729
allow = gsm
allow = h263
allow = h263p

Come si può vedere dal testo di configurazione, abbiamo registrato con il comando register => due numeri di telefono esterni ottenuti dai servizi ex-eutelia (ora Cloud Italia Orchestra) e di MessageNet. Vanno, naturalmente, sostituiti ai valori numero_di_telefonopasswordusername quelli che i provider ci forniscono al momento dell’attivazione delle numerazioni nazionali.

Ora vediamo di registrare anche le impostazioni per ognuno di questi numeri aggiungendo le seguenti linee di configurazione al file /etc/asterisk/sip.conf

[numero_di_telefono-out] ; relativo all’account MessageNet
context = numero_di_telefono-in
type = friend
auth = md5
username = username
fromuser = username
secret = password
host = sip.messagenet.it
port = 5061
qualify = no
insecure = port,invite
nat = yes
allow = gsm
allow = ulaw
call-limit=1
incominglimit=1
[numero_di_telefono-out]  ; relativo all’account Cloud Italia Orchestra
context = numero_di_telefono-in
type = friend
username = numero_di_telefono
fromuser = numero_di_telefono
secret = password
fromdomain = voip.eutelia.it
srvlookup = yes
host = voip.eutelia.it
qualify = no
insecure = port,invite
nat = yes
canreinvite = no
disallow = all
allow = gsm
allow = ulaw

MessageNet, nell’account base, non permette di uscire o ricevere più di una chiamata in contemporanea per account e, per questo, sono stati impostati i valori call-limit e incominglimit a 1. Nel momento in cui scrivo Cloud Italia Orchestra non credo che ponga limiti e, per questo, non ho impostato tali valori. Naturalmente, per poter gestire più chiamate contemporaneamente su un numero, è necessario avere una buona linea ADSL.

Ora creiamo un paio di interni, il 40 ed il 41, che saranno poi assegnati a Telefoni VoIP fisici o software.

[40]
type = friend
host = dynamic
port = 5060
context = out
secret = password
nat = yes
canreinvite = no
dtmfmode = rfc2833
mailbox = 40
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.0/255.255.255.0

[41]
type = friend
host = dynamic
port = 5060
context = out
secret = password
nat = yes
canreinvite = no
dtmfmode = rfc2833
mailbox = 41
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.0/255.255.255.0

Per ogni interno è possibile definire una casella vocale (mailbox) e limitarne l’accesso da una rete interna (come nell’esempio a qualsiasi indirizzo IP della rete 192.168.1.xxx) oppure ad un numero di IP in particolare sostituendo lo zero finale con il numero corrispondente alla propria configurazione. Se si vuole raggiungere l’interno dall’esterno, commentare con un ; le righe deny e permit oppure, se si dispone di un indirizzo IP fisso dalla postazione dove vogliamo accedere all’interno, indicarne il numero nella riga permit. Commentare le righe denypermit è molto pericoloso in quanto, dall’esterno, potrebbe registrarsi un utente con intenzioni poco buone; le intenzioni poco buone, di solito, sono prosciugare il credito telefonico effettuando chiamate a spese vostre. Proteggere gli account di questo tipo con password difficili da trovare.

Aggiungere a piacimento i numeri di interni copiando/incollando quelli dell’esempio precedente.

A questo punto gli interni sono configurati e, se non abbiamo commesso errori, sono anche funzionanti. Però ancora non è stato detto ad Asterisk come gestirli: cosa far squillare quando arriva una chiamata su MessageNet? dopo quanto tempo attivare la segreteria telefonica? Per questo, ed altre centinaia di funzioni, dobbiamo affidarci al file extensions.conf.

extensions.conf – Configura come devono essere gestite le linee esterne ed interne

A questo punto gli interni sono pronti, le linee esterne sono registrate ma come fare a far funzionare il tutto? Qui di seguito indico la configurazione che attualmente utilizzo io, in modo minimale, per la gestione delle chiamate:

[general]
static = yes
writeprotect = no
autofallthrough = no

[default]
; Segreteria Telefonica
exten => 777,1,VoiceMailMain(${EXTEN@default})
exten => 777,2,Hangup()

; Definizione interni
exten => 40,1,Macro(intcall,40);
exten => 41,1,Macro(intcall,41);

[out]
exten => _0X.,1,Dial(SIP/${EXTEN}@numero_di_telefono-out,30,tTrR)
exten => _3X.,1,Dial(SIP/${EXTEN}@numero_di_telefono-out,30,tTrR)
exten => _800X.,1,Dial(SIP/${EXTEN}@numero_di_telefono-out,30,tTrR)
include => default

[numero_di_telefono-in]  ;  relativo all’account Cloud Italia Orchestra
exten => numero_di_telefono,1,Dial(SIP/40,30,tT)
exten =>numero_di_telefono,2,VoiceMail(40)
exten =>numero_di_telefono,3,Hangup()

[numero_di_telefono-in]  ;  relativo all’account MessageNet
exten => numero_di_telefono,1,Dial(SIP/41,30,tT)
exten =>numero_di_telefono,2,VoiceMail(41)
exten =>numero_di_telefono,3,Hangup()

[macro-intcall]
exten => s,1,Dial(SIP/${ARG1},30)
exten => s,2,VoiceMail(${ARG1})
exten => s,3,Hangup()

In questo esempio vediamo nella sezione [default] la definizione degli interni e di numerazioni speciali (tipo l’interno virtuale 777 per l’ascolto della segreteria telefonica), nella sezione [out] la gestione delle numerazioni in uscita. Nel caso specifico troviamo gestite le chiamate nazionali che iniziano per 0, le chiamate ai cellulari che iniziano per 3 e quelle destinate ai numeri verdi che iniziano per 800. Per ognuna di queste linee è possibile modificare il contesto numero_di_telefono-out prendendo quello che ha tariffe più convenienti per il tipo di chiamata da effettuare. Se per esempio il provider Cloud Italia fosse più conveniente per le chiamate nazionali e meno per le chiamate ai cellulari si potrebbe configurare la linea in uscita per le linee che iniziano per 0 su Cloud Italia e quelle che iniziano per 3 su MessageNet o viceversa (in questo articolo non si trattano le tariffe dei vari provider che potrebbero variare velocemente).

Inoltre troviamo le definizioni per le chiamate in arrivo sulle numerazioni VoIP esterne che abbiamo precedentemente registrato. Per ogni provider è possibile definire quali interni far squillare, per quanto tempo e se attivare la segreteria telefonica. In realtà potremmo associare ad una numerazione un IVR, ovvero un sistema di risponditore automatico come quelli ai quali siamo abituati chiamando i call center, ma questo sarà trattato in un altro momento.

Infine abbiamo creato una macro chiamata intcall che gestisce in modo automatico la chiamata in ingresso su un interno. In questo modo potremmo programmare Asterisk per agire in un determinato modo per le chiamate in arrivo su un interno e, modificando solo la macro, potremmo modificare in un colpo solo le specifiche di tutti gli interni. Per ora limitiamoci a metterlo e poi vedremo in seguito come utilizzarlo.

È quasi tutto pronto ma manca la parte finale per la configurazione delle caselle vocali che faremo nel prossimo passaggio.

voicemail.conf – Configura le password, i nomi e le e-mail associate ad ogni interno

Questo file è molto semplice da configurare. Come sempre ci sono delle sezioni generali ed una specifica in cui inserire i dati necessari. Ecco qui quello che utilizzo normalmente:

[general]
format=wav49|gsm|wav
servermail=asterisk
attach=yes
skipms=3000
maxsilence=10
silencethreshold=128
maxlogins=3
emaildateformat=%A, %B %d, %Y at %r
sendvoicemail = yes

[default]
40 => password_numerica, nome_dell_interno, indirizzo@email
41 => password_numerica, nome_dell_interno, indirizzo@email

Asterisk provvederà, quando verrà invocata la segreteria telefonica, a registrare il messaggio nel proprio sistema e, nel caso si fornisca un indirizzo e-mail valido e nel caso in cui il server su cui è installato il centralino è correttamente configurato per l’invio di e-mail, e ad inviarlo nel formato WAV all’indirizzo e-mail definito.

Essendo possibile ascoltare i messaggi anche tramite telefono, la password da inserire nel file di configurazione, dovrà essere digitabile da tastierino telefonico e, di conseguenza, dovrà essere numerica.

Tutto pronto? Riavviamo il server!!

I files sono stati configurati, apriamo il terminale e digitiamo:

sudo service asterisk restart

In questo modo il server si riavvierà e sarà in grado di gestire le chiamate per come sono state configurate. Basterà installare un softphone sul proprio PC o Smartphone e configurarlo con i valori inseriti nel file sip.conf relativi all’interno. Meglio ancora se si dispone di telefoni VoIP.

Attualmente ho testato personalmente il software CPhoneSimple su Android ed i telefoni ed adattatori ATA della marca GrandStream.

Buon divertimento con Asterisk.

Attenzione: l’utilizzo di un telefono VoIP su cellulare utilizza la connessione dati del tuo abbonamento, se non sei coperto da rete WiFi, e quindi consuma traffico IP. Per controllare l’utilizzazione dei dati 3G consiglio l’utilizzo di un software tipo “3g watchdog” disponibile gratuitamente sul PlayStore di Google per Android.

Relativamente alle numerazioni nazionali registrabili su Cloud Italia Orchestra MessageNet leggere attentamente le modalità di richiesta e le limitazioni. Alcuni provider prevedono la possibilità di dare gratuitamente numeri di telefono che, se non utilizzati, vengono poi tolti e assegnati ad altri utenti. Consiglio quindi sempre di leggere attentamente le informazioni disponibili sui relativi siti e di scegliere consapevolmente a quale provider VoIP affidarsi. Per mantenere la numerazione attiva, solitamente, basta effettuare una ricarica di almeno € 5,00.

IMPORTANTE!!! I NUMERI VOIP NON SONO ABILITATI AD EFFETTUARE CHIAMATE DI EMERGENZA TIPO 112 O 118!!!