Archive

Archive for February, 2009

Asterisk – Configurare i Provider Voip [settima parte]

February 18th, 2009 1 comment

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

Categories: Articolo Tecnico, Voip Tags:

Asterisk – VoiceMail e Directory [sesta parte]

February 16th, 2009 No comments

L’applicazione VoiceMail()

Una delle funzioni più interessanti di Asterisk è quella della VoiceMail. Grazie a questa applicazione ogni utente può avere la propria segreteria telefonica a cui può accedere secondo le specifiche stabilite.

Inoltre è possibile settare Asterisk in modo tale da far inviare alla caselle di posta un email con l’allegato wave del messaggio lasciato in segreteria. Vediamo come implementare tutto questo.

Aggiungiamo la VoiceMail agli interni Read more…

Categories: Articolo Tecnico, Voip Tags:

Asterisk – Un Dialplan interattivo (IVR) [quinta parte]

February 15th, 2009 No comments

Un IVR non è nient’altro che un risponditore automatico che agisce in base ai toni DTMF che riceve in ingresso

L’applicazione del Dialplan che svolge questo ruolo è Background() (simile all’applicazione Palyback con la differenza che si interrompe quando riceve i DTMF). Vediamo un esempio:

[incoming]

exten => 123,1,Answer()

exten => 123,2,Background(menu)

exten => 1,1,Playback(digits/1)

exten => 2,1,Playback(digits/2)

Dopo la risposta se il chiamante premerà 2 sentirà il Palyback di 2…Alla pressione di un tasto Asterisk aspetta un paio di secondi per essere sicuro dell’azione da eseguire (1 e 123 iniziano con lo stesso numero…)

I Timeout della funzione Background()

Response Timout : tempo di attesa prima che venga inserita la prima cifra (default=10 sec)

Digit Timeout: tempo di attesa tra una cifra e l’altra (default 5 sec)

La funzione WaitExten() permette di modificare “in corsa” il RESPONSE TIMOUT Read more…

Categories: Articolo Tecnico, Voip Tags:

Asterisk – Introduzione ad Dialplan [quarta parte]

February 14th, 2009 No comments

Le istruzioni/strutture principali che permettono di creare un Dialpaln sono:

– Contesti

– Estensioni

– Priorità

– Applicazioni

NB: Il dialplan di Asterisk è contenuto nel file principale di tutto il sistema che è extensions.conf

I contesti

I contesti suddividono il dialplan in varie sezioni.

Nota Bene –> Asterisk identifica i tipi d’interfaccia sui quali si può telefonare con il termine canal, canale. Un canale può essere, per esempio, l’interfaccia ISDN (es. chan_dahdi.conf) o l’interfaccia Ethernet per il VoIP (es. sip.conf). La configurazione dei canali è fatta con dei file di configurazione *.conf, che si trovano nella directory /etc/asterisk. Nei vari canali, in base al flusso di ingresso, si può scegliere con quale contesto – presente nel file extension.conf – tale flusso deve essere gestito. (Questo argomento verrà ripreso successivamente).

Il nome di ogni contesto è racchiuso tra parentesi quadre. E’ possibile includere un contesto dentro l’altro utilizzando la funzione include. Es

[users] ; questo è il contesto users
exten => 6001,1,Dial(SIP/6001,20)
exten => 6002,1,Dial(SIP/6002,20)
include => features ; in questo modo includo il contesto features dentro il contesto users

[features]
exten => 6003,1,Dial(SIP/6003,20)
exten => 6004,1,Dial(SIP/6004,20) Read more…

Categories: Articolo Tecnico, Software Tags:

Asterisk – Configurazione Base [terza parte]

February 12th, 2009 No comments

Siamo giunti al primo passo per vedere Asterisk all’opera. I file che andremo ad editare sono extensions.conf e sip.conf. E’ conveniente rinominare quelli che Aserisk propone (tropo lunghi e complessi) e cominciare con due file vuoti.

In Asterisk qualsiasi conversazione implica 2 chiamate:
dal telefono chiamante ad asterisk e da asterisk al telefono chiamato two legs:

Nel caso che i due telefoni siano degli endpoint sip notiamo che sia ilflusso di segnalazione SIP sia il flusso voce (RTP) passa sempre per Asterisk. Questo comportamento è diverso dallo standard SIP dove il flusso RTP avviene direttamente tra i due telefoni.

Ma entriamo nel dettaglio. Vediamo ora come creare due estensioni (SIP) e come farle paralre tra di loro.
Editiamo il file sip.conf nel seguente modo Read more…

Categories: Articolo Tecnico, Voip Tags:

Asterisk – Intallazione [seconda parte]

February 11th, 2009 No comments

Scelta la distribuzione di Linux su cui installare il nostro PBX Software come prima scelta è possibile installare direttamente il pacchetto relativo alla distribuzione stessa. Come seconda (ma forse preferibile) scelta è chiaramente possibile installare Asterisk dai sorgenti. Vediamo quali sono i passi principali.

Preparazione del sistema per l’installazione di Asterisk

Prima di installare le varie componenti di Asterisk sono necesari i seguenti paccetti:
– compilatore gcc
– OpenSSL e le relative librerie di sviluppo
– ncurses e ncursers-devel
– Zlib
– librerie newt e newt-devel (per le DAHDI utilities)
– Curl (pre far interagire Asterisk con i siti web)
– Sendmail o Postfix (per far inviare le voicemail all’indorozzo di posta desiderato)

Le componenti di Asterisk

Per l’installazione di Asterisk sono necessarie tre componenti (sorgenti) fondamentali
libpri: gestisce le interfaccie PRI ISDN (da installare solo se presenti schedwe T1/E1/J1)
DAHDI: driver per le schede analogiche e/o digitali. Fornisce anche il “system timing” (clock) in assensa delle schede hardware
Asterisk: codic sorgente di Asterisk
– (opzionale) Asterisk-addons
tutto dal seguente link: http://downloads.digium.com/pub/telephony/ Read more…

Asterisk – Introduzione [prima parte]

February 10th, 2009 No comments


Cominciamo con oggi una serie di post su questo ormai usatissimo (open source) PBX software. L’obbiettivo è quello di creare un manuale (o meglio una guida) su Asterisk  da consultare in ogni momento.
Asterisk nasce nel 1999 da un idea di Mark Spencer fondatore della LSS (Linux Support Services). Trovandosi di fronte alla necessità di avere un centralino software gestibile a bassi costi e non trovando sul mercato nulla che lo soddisfacesse decide di implementare lui stesso un sistema che fosse il più versatile possibile. Da qui il nome Asterisk (“*” che rappresenta il caratter jolly sotto linux), un sistema cioè in grado di fare qualsiasi cosa. Nel 2002 la LSS vien inglobata nella Digium che sviluppava ( esviluppa tuttora) le schede hardware utilizzate da Asterisk. Read more…

Trucchi e scorciatoie da tastiera per Mac OS X

February 2nd, 2009 No comments

tastiera

Non c’è niente di più godurioso di saper “maneggiare” un sistema operaivo utitlizzando solo la tastiera. Cominciamo con il mettere a dsposizione una lisa di shortcut per lavorare velocemente su un MAC OS

Spostarsi tra le finestre :

Per spostarsi tra le finestre ci sono diverse combinazioni di tasti:

– “Cmd + TAB” : ti sposti tra finestre di programmi diversi

– “Cmd + <” : ti sposti tra finestre dello stesso programma.

– “Ctrl + F4” : è come “Mela + TAB”

Nota BeneCmd + <” funziona solo per i programmi del Sistema Operativo (es. Finder).

Per cambiare tra finestre della stessa applicazione per tutti i programmi (tipo Thunderbird, Firefox ecc…) di default su puo usare Cmd +

E’ possibile personalizzare tale scorciatoia . Per farlo selezionare “Apple” -> “Preferenze di Sistema” -> “Tastiera” -> “Abbreviazioni da tastiera”. Sulla colonna di sinistra evidenziare “Input del testoi e della…” e modificare selezionando la combinazione di tasti la voce “Evidenzia finestra successiva”. Si può, ad esempio, impostare  Cmd\  (cioé tasto Command + backslash)


Cambio Vista sul Finder
:

Per cambiare velocemente la “Vista” delle finestre del “Finder”, modificndo la visuzlizzazione della finestra basta semplicemente tenere premuto:

-“Cmd + 1” : per visualizzare le icone

– “Cmd + 2” : per visualizzare l’elenco

– “Cmd + 3” : per visualizzare le colonne


Zoom
:

Tenete premuto il pulsante “Ctrl” della vostra tastiera e contemporaneamente muovete in avanti la rotella del mouse.

Dock:

Per muoversi nel dock è sufficente premere “Ctrl + F3” e muovere le frecce cursore per scieglier l’applicazione da lanciare permendo “Invio”.

Chiusura delle finestre:

– “Cmd + Shift + Q” : chiude tutte le applicazioni ed effettua il logout

– “Cmd + Alt + Shift + Q” : chiude tutte le applicazioni senza effettuare  effettua il logout

– “Cmd + TAB + Q” : per chidere l’applicazione evidenziata

– “Cmd + Alt + Esc” : per aprire la finestra dove forzare la chiusura delle varie applicazioni

Categories: Utilità Tags: