Asterisk configurazione

Da raspibo.
Jump to navigation Jump to search

Per ampliare le funzionalità di Asterisk è possibile aggiungere degli interni ed anche un numero voip per l'interfacciamento con la rete telefonica tradizionale (registrazione gratuita ad esempio messagenet.it, viene assegnato un numero geografico è ed possibile da subito ricevere chiamate, va ricaricato un minimo di credito per effettuarle).

I files di configurazione si trovano nella dir /etc/asterisk/

Qui di seguito la configurazione del file sip.conf viene divisa a blocchi per maggiore dettaglio (le righe che seguono possono essere inserite in un file vuoto):

Nella configurazione generale vanno inseriti i dati di rete compreso l'ip o il dominio del nostro modem più i dati di accesso per un provider voip

[general]
context=default                 ; Default context for incoming calls
allowoverlap=no                 ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
tcpenable=no                    ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0             ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
transport=udp                   ; Set the default transports.  The order determines the primary default transport.
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls
register => 5xxxxxx:********@sip.messagenet.it:5061/0510NNNNNN	;MESSAGENET vedi sotto per i parametri
;5xxxxxx=URI (identificativo client SIP): vedi mail con oggetto Messagenet - attivazione FreeNumber (Servizio VoIP)
;********=Password: 8CA9QQBd vedi mail con oggetto Messagenet - attivazione FreeNumber (Servizio VoIP)
;0510NNNNNN=numero telefonico vedi mail con oggetto Messagenet - attivazione FreeNumber (Servizio VoIP)
nat=yes
externip=asterisk.raspibo.org	;nome dominio oppure ip pubblico 
externrefresh=120		;tempo di aggiornamento del dominio sul provider
localnet=192.168.1.0/255.255.255.0	;configurazione della sottorete

Questa parte non è stata modificata rispetto alla configurazione di default

[authentication]
[basic-options](!)                ; a template
       dtmfmode=rfc2833
       context=from-office
       type=friend
[natted-phone](!,basic-options)   ; another template inheriting basic-options
       directmedia=no
       host=dynamic
[public-phone](!,basic-options)   ; another template inheriting basic-options
       directmedia=yes
[my-codecs](!)                    ; a template for my preferred codecs
       disallow=all
       allow=ilbc
       allow=g729
       allow=gsm
       allow=g723
       allow=ulaw
[ulaw-phone](!)                   ; and another one for ulaw-only
       disallow=all
       allow=ulaw

In questa sezione vengono configurati i numeri di telefono:

[2000]
type=friend
secret=noncorso                 ; Password 
host=dynamic
insecure=port                   ; Allow matching of peer by IP address without
context=noncorso                                 ; matching port number
insecure=invite                 ; Do not require authentication of incoming INVITEs
insecure=port,invite            ; (both)
qualify=1000                    ; Consider it down if it's 1 second to reply
qualifyfreq=60                  ; Qualification: How often to check for the
[2001]
type=friend
secret=noncorso
host=dynamic
insecure=port                   ; Allow matching of peer by IP address without
context=noncorso                                 ; matching port number
insecure=invite                 ; Do not require authentication of incoming INVITEs
insecure=port,invite            ; (both)
qualify=1000                    ; Consider it down if it's 1 second to reply
qualifyfreq=60                  ; Qualification: How often to check for the
[2002]
type=friend
secret=noncorso
host=dynamic
insecure=port                   ; Allow matching of peer by IP address without
context=noncorso                                 ; matching port number
insecure=invite                 ; Do not require authentication of incoming INVITEs
insecure=port,invite            ; (both)
qualify=1000                    ; Consider it down if it's 1 second to reply
qualifyfreq=60                  ; Qualification: How often to check for the
[2003]
type=friend
secret=noncorso
host=dynamic
insecure=port                   ; Allow matching of peer by IP address without
context=noncorso                                 ; matching port number
insecure=invite                 ; Do not require authentication of incoming INVITEs
insecure=port,invite            ; (both)
qualify=1000                    ; Consider it down if it's 1 second to reply
qualifyfreq=60                  ; Qualification: How often to check for the
[sip.messagenet.it] 
type=friend 
auth=md5
username=5xxxxxx 		;Vedi nota sopra
fromuser=5xxxxxx		;Vedi nota sopra
secret=********		        ;Vedi nota sopra
host=sip.messagenet.it
port=5061
qualify=yes
insecure=invite
context=da_messagenet
nat=yes
canreinvite=no

Proseguiamo con la configurazione del file extensions.conf (le righe che seguono vanno aggiunte al file esistente che è molto lungo e non viene riportato integralmente):

[noncorso]
;Risponditore automatico sull'interno 1234 che recita una fonia e attende una post selezione per eseguire uno script bash
exten => 1234,1,Wait(1)                   	  ; Wait a second, just for fun
exten => 1234,n,Answer                    	  ; Answer the line
exten => 1234,n(menu),BackGround(custom/menu001) ; Play a congratulatory message
exten => 1234,n,WaitExten(5)
exten => 1234,n,Goto(1234,menu)
;digitando 51 sulla tastiera viene eseguito uno script che accende un rele
exten => 51,1,Noop(accendo)
exten => 51,n,System(/var/sys/Scripts/astrasp.sh 1)
exten => 51,n,Goto(1234,menu)
;digitando 52 sulla tastiera viene eseguito uno script che spegne un rele
exten => 52,1,NoOp(spengo)
exten => 52,n,System(/var/sys/Scripts/astrasp.sh 0)
exten => 52,n,Goto(1234,menu)
;gestione delle chiamate fra interni
exten => 2000,1,Dial(SIP/2000)
exten => 2000,n,Hangup
exten => 2002,1,Dial(SIP/2002)
exten => 2003,n,Hangup
exten => 2003,1,Dial(SIP/2003)
exten => 2003,n,Hangup
exten => _9.,1,Dial(SIP/${EXTEN:1}@sip.messagenet.it) ;Per chiamare l'esteno si antepone 9 davanti al numero _ indica una espressione regolare(tutto quello che inizia con 9
[da_messagenet]
exten => _0510NNNNNN,1,Dial(SIP/2001,30,tTr)            ;Vedi nota su sip.conf
exten => _0510NNNNNN,n,Hangup				 ;Vedi nota su sip.conf

Per completezza un dettaglio sulla configurazione:

[noncorso] indica il contesto

le righe che iniziano con exten indicano le esetensioni cioè regole legate ad ogni linea con il seguente formato:

exten => destinazione,priorità,applicazione(argomenti) 

quindi la riga:

exten => 2000,1,Dial(SIP/2000)

indica che quando viene chiamato l'interno 2000 per prima cosa (1) deve essere girata la chiamata verso l'interno 2000

exten => 2000,n,Hangup

all'istruzione successiva (n, etichetta, potrebbe essere indicata come 2, ma richiederebbe che eventuali modifiche tengano conto della sequenzialità delle istruzioni) quando la chiamata termina viene fatto un riaggancio della linea

E' possibile anche creare delle etichette a cui fare goto ad esempio quando viene riprodotta una fonia:

exten => 1234,n(menu),BackGround(custom/menu001) ; Play a congratulatory message

NB: i files audio devono rispettare il formato usato dal codec in uso per la comunicazione in questo caso wav a 8KHz, per convertire un file audio si può usare il comando sox con i seguenti parametri:

sox file_origine.wav -r 8k -c 1 -e wav menu001.wav

come in questo caso in cui la fonia viene riprodotta ciclicamente:

exten => 1234,n,Goto(1234,menu)

E' anche possibile lanciare script di shell

exten => 51,n,System(/var/sys/Scripts/astrasp.sh 1)

In questo caso una chiamata in arrivo dall'esterno viene girata verso il numero 2001:

exten => _0510NNNNNN,1,Dial(SIP/2001,30,tTr)