Installazione e Configurazione Asterisk PBX + IaxModem + Hylafax Server (2a parte)

Installazione e Configurazione Asterisk PBX + IaxModem + Hylafax Server (1a parte)
Aprile 2, 2013
Domande degli utenti: [Asterisk] interno esterno che non possa chiamare esterno :-)
Aprile 6, 2013

Come promesso nel precedente articolo ecco qui la seconda parte della guida su come installare, configurare Asterisk + Iaxmodem + Hylafax server.

Oggi andremo a configurare Asterisk e nel dettaglio:

  • Creeremo gli interni
  • Creeremo un piano chiamate (dialplan) per far comunicare tra loro gli interni
  • Creeremo le caselle vocali (voicemail)

Tutti i file che andremo a modificare sono contenuti nella seguente cartella /etc/asterisk/, vi consiglio di effettuare una copia di backup dei file che andremo a modificare così da averne sempre anche una copia di riserva nel caso qualcosa vada storto.

Cominciamo subito!

Configurazione fine sip.conf e Creazione Interni

1 – apriamo il file /etc/asterisk/sip.conf

nano /etc/asterisk/sip.conf

2 – e modifichiamo i seguenti parametri generali:

[general]
context=default
bindaddr=0.0.0.0 ;(in questo modo asterisk resta in ascolto su tutte le interfacce id rete disponibili)
udpbindaddr=0.0.0.0  ;(come sopra per connessione UDP)
;tcpenable=yes ;(se volete abilitare le connessioni TCP dovete togliere “;”)
;tcpbindaddr=0.0.0.0  ;(come sopra per connessione TCP, nel caso togliere “;”)
;tlsenable=no ;(se volete abilitare le connessioni TSL dovete togliere “;”)
;tlsbindaddr=0.0.0.0 ;(come sopra per connessione TSL, nel caso togliere “;”)
srvlookup=yes
disallow=all ;(disabilitiamo tutti i codec ad abilitiamo solo quelli che vogliamo utilizzare)
;allow=all
;allow=ilbc
;allow=g729
;allow=gsm
;allow=g723
allow=ulaw
allow=alaw
language=it ;(impostiamo la lingua delle voci registrate, che vedremo dopo)

;—————————————– T.38 FAX SUPPORT ———————————-
t38pt_udptl=yes,redundancy,maxdatagram=400 ;(abilitiamo il supporto T38 per i fax)

;—————————————– NAT SUPPORT ————————
localnet=192.168.1.0/255.255.255.0 ;(se siamo collegati sotto NAT impostiamo la nostra rete)
;externaddr=123.456.789.123 ;(se abbiamo una connessione con ip statico impostiamo il nostro ip)
;externhost=miodominio.com ;(se abbiamo un nome di dominio impostiamolo qui)

3 – ed ora creiamo gli interni (io ne ho creati 3 in modo da provare a effettuare chiamate interne ), aggiungendo le seguenti voci alla fine del file sip.conf :

[6000]  ;(numero dell’interno)
type = friend  ;(friend = può ricevere ed effettuare chiamate, peer = può solo riceverle)
callerid = Interno 6000 ;(nome che verrà visualizzato da chi riceve la chiamata)
secret = MIA_PASSWORD ;(impostiamo una password per il collegamento)
host = dynamic
canreinvite = no
dtmfmode = rfc2833
mailbox = 6000 ;(il numero della voicemail, la vedremo dopo) 
disallow = all ;(anche in questo caso possiamo dichiarare i codec che l’interno può usare)
allow = ulaw
allow = alaw
transport = udp ;(udp o tcp)
context=from-internal ;(nome del contesto nel dialplan, lo vedremo dopo)
language=it ;(lingua delle voci registrate per l’interno, possiamo tranquillamente ometterlo se vogliamo)

[6001]  ;(numero dell’interno)
type = friend  ;(friend = può ricevere ed effettuare chiamate, peer = può solo riceverle)
callerid = Interno 6001 ;(nome che verrà visualizzato da chi riceve la chiamata)
secret = MIA_PASSWORD ;(impostiamo una password per il collegamento)
host = dynamic
canreinvite = no
dtmfmode = rfc2833
mailbox = 6001 ;(il numero della voicemail, la vedremo dopo) 
disallow = all ;(anche in questo caso possiamo dichiarare i codec che l’interno può usare)
allow = ulaw
allow = alaw
transport = udp ;(udp o tcp)
context=from-internal ;(nome del contesto nel dialplan, lo vedremo dopo)
language=it ;(lingua delle voci registrate per l’interno, possiamo tranquillamente ometterlo se vogliamo)

[6002]  ;(numero dell’interno)
type = friend  ;(friend = può ricevere ed effettuare chiamate, peer = può solo riceverle)
callerid = Interno 6002 ;(nome che verrà visualizzato da chi riceve la chiamata)
secret = MIA_PASSWORD ;(impostiamo una password per il collegamento)
host = dynamic
canreinvite = no
dtmfmode = rfc2833
mailbox = 6002 ;(il numero della voicemail, la vedremo dopo) 
disallow = all ;(anche in questo caso possiamo dichiarare i codec che l’interno può usare)
allow = ulaw
allow = alaw
transport = udp ;(udp o tcp)
context=from-internal ;(nome del contesto nel dialplan, lo vedremo dopo)
language=it ;(lingua delle voci registrate per l’interno, possiamo tranquillamente ometterlo se vogliamo)

4 – salviamo il file, colleghiamoci alla CLI di asterisk e ricarichiamo la configurazione attraverso il comando reload (oppure se vogliamo possiamo anche riavviare completamente asterisk con il comando “service asterisk reload”) :

asterisk -r

Asterisk 1.6.2.9-2+squeeze10, Copyright (C) 1999 – 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 1.6.2.9-2+squeeze10 currently running on centralino (pid = 2750)
centralino*CLI> reload

5 – a questo punto, sempre attraverso la CLI, verifichiamo che asterisk veda gli interni che abbiamo creato attraverso il comando “sip show peers”, il risultato del comando dovrebbe essere come il seguente:

centralino*CLI> sip show peers
Name/username             Host                        Dyn        Nat       ACL       Port         Status
6000                                   (Unspecified)       D             N                          5060       Unmonitored
6001                                   (Unspecified)       D             N                           5060       Unmonitored
6002                                   (Unspecified)       D             N                           5060       Unmonitored
3 sip peers [Monitored: 0 online, 0 offline Unmonitored: 3 online, 0 offline]
centralino*CLI>

Ora dobbiamo testarne il collegamento, per fare ciò (se non abbiamo un telefono voip a portata di mano) possiamo utilizzare un softphone installato su un computer o installato su uno smartphone:

Softphone per Windows
Softphone per Mac
Softphone per Linux
Softphone per Smartphone Android
Softphone per Smartphone Symbian
Softphone per Blackberry

La configurazione è molto semplice, vi riporto un’immagine con i parametri da inserire (ovviamente saranno da modificare con i vostri

Una volta collegato nella CLI dovrebbe apparirvi una scritta come questa:

centralino*CLI>
— Registered SIP ‘6000’ at 192.168.1.3 port 5060
> Saved useragent “qutecom/rev-6653cd8f2afd-trunk” for peer 6000
centralino*CLI>

Perfetto si è collegato! Ora possiamo chiudere il file sip.conf

Creazione del Dialplan per le chiamate tra interni

6- apriamo il file /etc/asterisk/extensions.conf , questo è il file dove vengono creati i dialplan o piani chiamate.

Come prima spostiamoci alla fine del file ed aggiungiamo le seguenti righe:

[from-internal]

;—— CHIAMATE VOCE VERSO INTERNI ———

exten => 6000,1,Dial(SIP/6000,20)
exten => 6000,n,Hangup()

exten => 6001,1,Dial(SIP/6001,20)
exten => 6001,n,Hangup()

exten => 6002,1,Dial(SIP/6002,20)
exten => 6002,n,Hangup()

Che cosa abbiamo fatto? Diamo un senso a queste voci:

[from-internal]: E’ il nome del contesto in cui deve essere utilizzato questo dialplan, infatti, se vi ricordate, nella creazione degli interni avevamo aggiunto la voce “context=from-internal” vuol dire che tutte le chiamate che arrivano da quell’interno passeranno dal contesto “from-internal” che abbiamo appena dichiarato.

exten => 6000,1,Dial(SIP/6000,20): In poche parole stiamo dicendo che se arriva una chiamata per l’estensione 6000 (il numero chiamato) facciamo partire l’applicazione “Dial” verso l’interno 6000. Se non risponde nessuno, dopo 20 secondi, il sistema passa in automatico alla successiva istruzione: exten => 6000,n,Hangup() nella quale gli diciamo semplicemente di terminare la chiamata.

Quindi riepilogando la forma per scrivere un dialplan è la seguente:

exten => ESTENSIONE,PRIORITA’,APPLICAZIONE(ARGOMENTI)

Ora abbiamo utilizzato due applicazioni, Dial e Hangup, ovviamente ce ne sono molte altre, ad esempio Playback che serve per far ascoltare a chi chiama un messaggio registrato, ma questo lo vedremo più avanti.

Per avere un’idea di tutte le applicazioni disponibili basterà inserire nella CLI il comando “core show applications” che come risultato ci darà la lista delle applicazione disponibili:

centralino*CLI> core show applications
-= Registered Asterisk Applications =-
AddQueueMember: Dynamically adds queue members.
ADSIProg: Load Asterisk ADSI Scripts into phone
AgentLogin: Call agent login.
AgentMonitorOutgoing: Record agent’s outgoing call.
AGI: Executes an AGI compliant application
AlarmReceiver: Provide support for receiving alarm reports from a burglar or fire alarm panel.
AMD: Attempt to detect answering machines.
Answer: Answer a channel if ringing.
Authenticate: Authenticate a user
BackGround: Play an audio file while waiting for digits of an extension to go to.
BackgroundDetect: Background a file with talk detect.
Bridge: Bridge two channels.
Busy: Indicate the Busy condition.
ChangeMonitor: Change monitoring filename of a channel
ChanIsAvail: Check channel availability
ChannelRedirect: Redirects given channel to a dialplan target
ChanSpy: Listen to a channel, and optionally whisper into it.
ClearHash: Clear the keys from a specified hashname.
……..

centralino*CLI>

Per vedere il dettaglio e la modalità di utilizzo di un’applicazione il comando da CLI è “core show application APPLICAZIONE”, vediamo per esempio il risultato per l’applicazione Hangup:

centralino*CLI> core show application Hangup

-= Info about application ‘Hangup’ =-

[Synopsis]
Hang up the calling channel.

[Description]
This application will hang up the calling channel.

[Syntax]
Hangup([causecode])

[Arguments]
causecode
If a <causecode> is given the channel’s hangup cause will be set
to the given value.

[See Also]
Answer(), Busy(), Congestion()
centralino*CLI>

9 – Torniamo quindi al nostro file extensions.conf, salviamolo e ricarichiamo il dialplan dalla CLI attraverso il comando “dialplan reload”. Se è stato tutto configurato correttamente dal softphone dovreste riuscire a chiamare gli altri interni e dopo 20 secondi, se non rispondete, la chiamata verrà terminata.

Bene per la guida di oggi manca solo l’ultimo passo, dobbiamo creare e configurare una voicemail.

Creazione della Voicemail

Apriamo quindi il file etc/asterisk/voicemail.conf e, sempre alla fine, inseriamo le seguenti istruzioni:

[voicemail-internal]

6000 => 1234,Interno 6000,interno6000@miaemail.com
6001=> 1234,Interno 6001,interno6001@miaemail.com
6002 => 1234,Interno 6002,interno6001@miaemail.com

Anche in questo caso abbiamo prima dichiarato un contesto: [voicemail-internal] e successivamente creato le 3 voicemail per i tre interni, il formato che abbiamo utilizzato è il seguente:

VOICEMAIL => PASSWORD_ACCESSO,NOME_UTENTE,EMAIL_UTENTE

10 -salviamo quindi il file extensions.conf e dalla CLI riavviamo la voicemail attraverso il comando “voicemail reload”, a questo punto dobbiamo modificare il dialplan (estensions.conf) per fare in modo che se non rispondiamo, prima di terminare la chiamata, dia la possibilità al chiamante di lasciarci un messaggio, riapriamo quindi il file /etc/asterisk/extensions.conf e modifichiamo come segue:

[from-internal]

;—— CHIAMATE VOCE VERSO INTERNI ———

exten => 6000,1,Dial(SIP/6000,20)
exten => 6000,n,Voicemail(6000@voicemail-internal)
exten => 6000,n,Hangup()

exten => 6001,1,Dial(SIP/6001,20)
exten => 6001,n,Voicemail(6001@voicemail-internal)
exten => 6001,n,Hangup()

exten => 6002,1,Dial(SIP/6002,20)
exten => 6002,n,Voicemail(6002@voicemail-internal)
exten => 6002,n,Hangup()

Quindi se ora chiamiamo un interno non disponibile la chiamata verra passata alla casella vocale dell’interno e successivamente la chiamata verrà terminata.

Quindi per aggiungere la voicemail al dialplan è la seguente:

exten => ESTENSIONE,PRIORITA’,Voicemail(VOICEMAIL@CONTESTO)

Perfetto anche per oggi è tutto, nella prossima guida vedremo come configurare i provider Voip, aggiungere il dialplan per le chiamate in ingresso ed in uscita e come aggiungere una musica di attesa.

Come sempre, per chiarimenti, informazioni o suggerimenti scrivetemi.

E-Rottamazione 4.0

Rottama il tuo vecchio sito web, subito per te:

Uno sconto del 20% sulla realizzazione del tuo nuovo sito;

In regalo 100 Euro di campagna pubblicitaria su Google.

Top