SIP Service Provider Account
[AGGIORNATO CON ALTRO ESEMPIO]
Si trovano su Internet moltissimi siti che offrono servizio di VoIP Provider.
E’ possibile utilizzare Asterisk sia per quei provider che forniscono solo un numero entrante, sia per quelli che permettono chiamate in uscita e naturalmente per quelli che ti danno entrambe questi servizi.
Asterisk distingue nella configurazione del file sip.conf l’attivazione dei tre tipi di servizi sopra indicati in modo differente.
type=peer –> può solo inviare chiamate
type=user –> può solo ricevere chiamate
type=friend –> può inviare e ricevere
user e peer hanno delle opzioni specifiche che hanno funzionalità differenti, il friend le eredita entrambe. In generale utilizziamo il friend quando uno user agent (per es. un soft phone) si registra ad asterisk, usiamo un peer quando è asterisk che si registra a qualcuno e gestisce le chiamate in uscita, useremo uno user quando dobbiamo ricevere delle chiamate da qualcuno esternamente quando è sempre asterisk che si registra (o quando vogliamo che l’user agnt possa sopo ricevere). In pratica quelli che si comportano come interni saranno dei friend, i trunk saranno dei peer/user.
PEER
Quando si definisce un peer tra [ ] si dovrà mettere un nome che è puramente indicativo e non indica il suo username; il campo host ha lo scopo di specificare dove inviare le chiamate (sarà sempre l’ip del Provider e non sarà dynamic poichè è lui che deve registrare). A differenza dell’ “user” il “peer” non prevederebbe il context, che definisce l’arrivo delle chiamate, visto che può solo uscire. E qui le cose si complicano perchè invece si può utilizzare poichè c’è un’eccezione gestita da asterisk, dove, se non vede uno user abbinato al peer usa il context definito dal peer stesso. Questo molto spesso ci evita di definire lo user e di usare il peer per gestire entrambe le cose, anche se può portare confusione
(I peers) hanno invece il campo “host” per specificare dove inviare le chiamate.
Il “peer” ha un campo username e password dove viene definito lo username e la password che permettono l’autenticazione con il peer remoto. (Nota che quando definisci uno user lo username va dentro le parentesi quadre, mentre quando definisci un peer lo username va messo nel campo username)
Per inviare le chiamate al peer SIP si possono usare le seguente sintassi:
Dial(SIP/extension@peername) <– il peername è quello tra parentesi quadre:
o
Dial(SIP/peername/extension) <– l’extension è il numero che voglio chiamare
Per inviare le chiamate al peer IAX si può usare solo al seguente sintassi:
Dial(IAX2/peername/extension)
La registrazione
Se il tuo IP è dinamico o il tuo provider non conosce il tuo indirizzo IP, è necessario registrarsi periodicamente con il server in modo tale che il tuo provider possa sempre conoscere l’indirizzo a cui inviare le chiamate. Per fare questa cosa si deve utilizzare (sia in sip.conf che in iax.conf) il comando “register”
Sintassi:
register => user[:secret]@host[:port][/extension]
Esempio register => nome:password@voipprovider.com
USER
Esempio base:
[test] <– sezione
type=user
secret=password
context=incoming <– Quando arriva la chiamata per l’utente “test” la chiamata viene inviata nel contesto specificato (in questo caso incoming)
network options: E’ possibile permettere o bloccare un range di IP con i comandi “permit” e deny”:
[test]
type=user
secret=password
context=incoming
deny=0.0.0.0/0
permit=192.168.1.5
permit=192.168.2.100
permit=10.16.5.0/24
permit=172.16.100.0/255.255.255.0
codec options: E’ possibile specificare quali e in quale ordine usare determinati codec
[test]
type=user
secret=password
context=incoming
disallow=all
allow=gsm
allow=ulaw
FRIENDS
Un friend è sia un user che un peer
I friends sono una semplice scorciatoia per configurare degli endpoint (telefoni IP). Sono anche utilizzati per i più comuni sip provider (sipgate, sipcall, Gizmo, messagnet)
Altri SIP Provider (come per esempio Eutelia) vogliono come configurazione user e peer separati
Per uno user, Asterisk non richiede l’autenticazione username/password se non è presente la voce “secret=”. Per un friend generalmente dobbiamo specificare una “secret” per le nostre connessioni in uscita. Se il friend è un Provider Voip questo prima di instaurare la connessione manda un invite ad Asterisk il quale a questo punto si aspetta un autenticazione da parte del provider per poter terminare la sissione SIP. Chiaramente nessun provider invia questa informazione. Per questo motivo è possibilie utilizzare il seguente comando per saltare l’autenticazione:
insecure=invite,port (vedi anche questo link)
Esempio TRUNK SIP
Vediamo come configurare i trunk SIP. E’ importante ricordarsi che la registrazione va fatta alla fine del contesto [general]
sip.conf
;*******************************************
;*** GLOBAL SETTING
[general]
;context=default
context=from_outside ; –questo è il context che sta in extensions.conf vale solo per le chiamate sip in ingresso a meno che non sia specificato un context nel peer o nello user –;
realm=class.digium.com
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
disallow=all
allow=ulaw
allow=gsm
language=en
;*******************************************
;*** REGISTER STATEMENTS
register => training1:training@192.168.1.100
;*******************************************
;*** FRIENDS, USER AND PEERS…
[6001]
type=friend
host=dynamic
secret=zoiper
context=users
mailbox=6001@default
[6002]
type=friend
host=dynamic
secret=polycom
context=users
mailbox=6002@default
[to_sipprovider]
type=peer
username=training1
fromuser=training1
fromdomain=example.com
secret=training
canreinvite=no
insecure=invite,port
host=192.168.1.100
deny=0.0.0.0/0
permit=192.168.1.100
disallow=all
allow=gsm
allow=ulaw
allow=alaw
qualify=yes
nat=no
NB: il comando insecure=invite,port viene utilizzato perchè Asterisk generalmete richiede la peer di inviargli le credenziali per poter accettare la chiamata ma non tutti i provider mandano tali informazioni. Con questo comando si dice ad Asterisk di non fare tali richieste ed accettare le chiamate in ingresso.
extension.conf
;*******************************************
;*** GLOBAL SETTING FOR EXTENSION
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no
;*******************************************
;*** GLOBAL SETTING FOR variables
[globals]
;*******************************************
;*** EXTENSION CONTEXT
[from_outside]
include => inside
[users]
include => inside
include => features
[inside]
exten => 6001,1,Dial(SIP/6001,20)
exten => 6001,n,VoiceMail(6001@default)
exten => 6002,1,Dial(SIP/6002,20)
exten => 6002,n,VoiceMail(6002@default)
[features]
exten => 6599,1,Answer()
exten => 6599,n,Playback(hello-world)
exten => 6599,n,wait(2)
exten => 6599,n,Playback(good-evening)
exten => 6599,n,Hangup()
exten => 6598,1,Goto(demo-menu,s,1)
exten => 6601,1,Goto(day-menu,s,1)
;per ascoltare i messaggi
exten => 6500,1,Answer()
exten => 6500,n,VoiceMailMain(@default)
;Outbound extension
exten => 6700,1,Dial(SIP/6000@to_sipprovider)
;Record The Day Menu
exten => 6600,1,Answer()
exten => 6600,n,Wait(0,5)
exten => 6600,n,Record(day-menu.gsm)
exten => 6600,n,Wait(1)
exten => 6600,n,Playback(day-menu)
[demo-menu]
…
[day-menu]
…
IAX2 ITSP Account
Nel file iax.conf aggiungere (dove sono già esistenti e commentati gli esempi di register) la seguente riga:
register => training1:training@192.168.1.100
Per quanto riguarda l’inserimento dell’user account utilizziamo (invece del friend) due utenze separate per chiamate in uscita (peer) e chiamate in ingresso (user):
[to_iaxprovider]
username=training1
secret=training
type=peer
auth=md5
transfer=no
host=192.168.1.100
disallow=all
allow=gsm
allow=ulaw
allow=alaw
qualify=yes
trunk=yes
[training1]
type=user
auth=md5
transfer=no
disallow=all
allow=gsm
allow=ulaw
allow=alaw
secret=training
context=from_outside
In extensions.conf aggiungiamo la chiamata verso il provider IAX
[features]
...
;Outbound extension
exten => 6700,1,Dial(SIP/6000@to_sipprovider)
exten => 6701,1,Dial(IAX2/to_iaxprovider/6000)
...
[AGGIORNAMENTO]
Vediamo un altro esempio in cui il nostro Provider ci fornisce un account voip basato sul proxy sip OpenSER
Dati forniti dal Provider
username: 655
password: pwd655
sip proxy: sip.provider.net
configurazione sip.conf
[general]
language=it
registerattempts=0
registertimeout=80
context=default ; Default context for incoming calls
…
register => 633:pwd633@sip.provider.net/633
…
[6001]
;type=user
type=friend
host=dynamic
secret=zoiper
context=supercall
[to_sip]
type=peer
context=from_provider_voip ;per le chiamate in ingresso
username=633
fromuser=633 ;serve per sovrascrivere lo username (qui sarebbe 6001)
secret=pwd633
host=sip.provider.net
fromdomain=sip.provider.net
qualify=yes
insecure=invite,port
se non viene indicato il context allora verrà considerato quello indicato nella sezione general (in questo caso quello di default)
configurazione extension.conf
Vogliamo che le chiamate entranti dall’account VoIP vengano inoltrate sull’interno 6001 e che solo quest’ultimo possa utlizzare il provider in uscita mettendo come prefisso 88
[local]
exten => _600X,1,Dial(SIP/${EXTEN},20)
…
[to_provider_voip]
exten => _88X.,1,Dial(SIP/${EXTEN:2}@to_sip)
…
[from_provider_voip]
exten => 633,1,Dial(SIP/6001,20)
…
[supercall]
include => local
include => to_provider_voip
Recent Comments