- 85 KB

Transcript

- 85 KB
“ASTERISK FALLBACK SIP PSTN”
PROGETTO V.O.C.I.
HOWTO
“REALIZZAZIONE DI UN SISTEMA DI FALLBACK
AUTOMATIZZATO PER LE CHIAMATE VOIP SU
RETE PSTN”
N O M E
D A T A
F I L E
:
A T T I V I T À
U R L
Asterisk_Fallback_SIP_PSTN.doc
15/09/2009
:
S T A T O
:
:
:
A U T O R E
/
I
:
Gruppo VoIP
ABSTRACT:
Il presente documento contiene l’howto relativo alla configurazione di un sistema di “fallback” delle
chiamate VoIP verso la rete telefonica pubblica.
ASTERISK_FALLBACK_SIP_PSTN.DOC
1/6
“ASTERISK FALLBACK SIP PSTN”
INDICE
INTRODUZIONE ......................................................................................................................3
1. REALIZZAZIONE DI UN SISTEMA DI FALLBACK AUTOMATIZZATO PER LE
CHIAMATE VOIP SU RETE PSTN ..........................................................................................4
1.1.
Configurazione basata sulla variabile “DialStatus” .............................................4
1.2.
Configurazione basata sulla variabile “HangupCause” .......................................5
ASTERISK_FALLBACK_SIP_PSTN.DOC
2/6
“ASTERISK FALLBACK SIP PSTN”
INTRODUZIONE
Il documento contiene l’howto relativo alla configurazione di un sistema per il “fallback” delle
chiamate VoIP verso la rete telefonica pubblica. L’IP-PBX Asterisk mantiene traccia dello stato di una
chiamata attraverso le variabili “Dialstatus” ed “Hangupcause” automaticamente scritte al termine di
una chiamata. Un’istruzione “Dial” può essere seguita da controlli su queste variabili al fine di
generare, eventualmente, chiamate con protocolli di segnalazione diversi. Nell’howto è indicata la
procedura per eseguire il fallback su rete telefonica PSTN (Public Switched Telephone Network) ma
le indicazioni sono comunque valide per eseguire il “fallback” su server o canali diversi. Le
configurazioni allegate sono valide per le release Asterisk “1.2.X, 1.4.X, 1.6.X”. Esiste però una
differenza nel numero di argomenti richiesti dalla funzione “ENUMLOOKUP” indicata nell’howto.
ASTERISK_FALLBACK_SIP_PSTN.DOC
3/6
“ASTERISK FALLBACK SIP PSTN”
1. REALIZZAZIONE DI UN SISTEMA DI FALLBACK AUTOMATIZZATO PER LE
CHIAMATE VOIP SU RETE PSTN
Il servizio riguarda la possibilità di prelevare una chiamata entrante su un interno o numero di servizio
da una estensione telefonica diversa da quella con la quale il chiamato risulta registrato con il sistema.
La configurazione può richiedere la definizione di due identificativi di gruppo da associare all'account
VoIP di ciascun utente: “callgroup” e “pickupgroup”. Il “callgroup” indica il gruppo al quale la
chiamata appartiene; il “pickupgroup” indica invece di quale gruppo possono essere prelevate le
chiamate entranti. Di default sono attivabili 64 “callgroup”. Esiste un vincolo sul funzionamento: la
chiamata per poter essere prelevata, non deve essere già stata accettata (risposta). Il codice da
selezionare per la attivazione del servizio é “*8”. Esiste però la possibilità di definirne uno nuovo
configurando il file “features.conf” al parametro “pickupexten” presente nella sezione “general”. La
configurazione del servizio può anche essere condotta ricorrendo alla applicazione “Pickup” che é
possibile impiegare nel dialplan. Questo consente di creare “customizzazioni” del servizio basate ad
esempio sul contesto o al verificarsi di determinati controlli all'interno del dialplan. A tale proposito
saranno presentati degli esempi relativi alle impostazioni per le due forme di configurazione
introdotte.
1.1. Configurazione basata sulla variabile “DialStatus”
Le istruzioni da inserire rispetto quelle presenti nella sezione WEB1, sono evidenziate in grassetto.
L'estratto consente la configurazione dell'IP-PBX Asterisk in modo da rendere automatizzate le
chiamate su rete PSTN (Public Switched Telephone Network) in caso di URI SIP non individuata
dalla consultazione DNS. Il fallback è eseguito anche in presenza di problemi nella instaurazione della
chiamata con il protocollo SIP (es. utente VoIP chiamato occupato e/o non registrato). In questo caso
prestare attenzione alla “Hangup” di chiusura del blocco di codice presente in Tabella 1.
exten=> _+.,1,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip, , 1,e164.arpa)})
exten => _+.,n,GotoIf($["${Sipuri}" != ""]?dial)
exten => _+.,n,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip, , 1, secondo_albero_DNS-VoIP)})
exten => _+.,n,GotoIf($["${Sipuri}" = ""]?lookupfailed)
exten=> _+.,1,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip, , 1,terzo_albero_DNS_VoIP)})
exten => _+.,n,GotoIf($["${Sipuri}" != ""]?dial)
exten => _+. ,n(dial),Dial(SIP/${Sipuri},60,r)
exten => _+.,n,
GotoIf($[$[${DIALSTATUS}=NOANSWER|${DIALSTATUS}=CHANUNAVAIL|${DIALSTATU
S}=CONGESTION]?fault:bye)
exten => _+.,n(fault),Dial(ZAP/g1/${EXTEN},60,r)
exten => _+.,n,Hangup()
exten => _+.,n(bye), Hangup()
Tabella 1 Estratto del file “extensions.conf” relativo alla “Dialstatus”
1
http://www.servizi.garr.it/index.php/it/voip/informazioni-tecniche/utilizzo-di-nrenum
ASTERISK_FALLBACK_SIP_PSTN.DOC
4/6
“ASTERISK FALLBACK SIP PSTN”
L’estratto di Tabella 1 è relativo alle release Asterisk “1.4.X” e “1.6.X”; per release “1.2.X” è
necessario rimuovere una “,” da quelle che seguono il metodo “sip”.
1.2. Configurazione basata sulla variabile “HangupCause”
La configurazione che segue fa riferimento alla variabile “HangupCause” è allegata in Tabella 2.
exten =>_+.,1,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip, , 1,e164.arpa)})
exten =>_+.,n,GotoIf($["${Sipuri}" != ""]?dial)
exten =>_+.,n,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip, , 1,secondo_albero_DNS_VoIP)})
exten =>_+.,n,GotoIf($["${Sipuri}" = ""]?lookupfailed)
exten=>_+.,1,Set(Sipuri=${ENUMLOOKUP(${EXTEN},sip, , 1,terzo_albero_DNS_VoIP)})
exten => _+.,n,GotoIf($["${Sipuri}" != ""]?dial)
exten => _+. ,n(dial),Dial(SIP/${Sipuri},60,r)
exten => _+.,n,
GotoIf($[$[${HANGUPCAUSE} = 16] | $[${HANGUPCAUSE} = 17] |
$[${HANGUPCAUSE} = 18] ]?fault:bye)
exten => _+.,n(fault),Dial(ZAP/g1/${EXTEN},60,r)
exten => _+.,n,Hangup()
exten => _+.,n(bye), Hangup()
Tabella 2 Estratto del file “extensions.conf” relativo alla “Hangupcause”
L’estratto di Tabella 2 è relativo alle release Asterisk “1.4.X” e “1.6.X”; per release “1.2.X” è
necessario rimuovere una “,” da quelle che seguono il metodo “sip”. Le configurazioni sono relative al
pattern “_+.” che “cattura” i numeri “E164” ma possono essere modificate per associarle ad altre
estensioni (ad esempio di gestione di numeri in formato “NationalDestinationCodeSubscriberNumber”) opportunamente completati della porzione “CountryCode” es. da “064962522” a
“+390649622522” nella connettività dell’IP-PBX attivo. Gli estratti di dialplan allegati nelle Tabella 1
e Tabella 2 possono essere utilizzati per definire due macro: una prima dedicata alla interrogazione di
alberi DNS dedicati al VoIP, la seconda per la gestione dei valori ottenuti. La Tabella 3 ne contiene
una possibile implementazione.
[contesto_voip]
exten =>_+.,1,Macro(checkenum,${EXTEN})
exten => _+.,n,Macro(mydial,${Sipuri},${EXTEN})
exten => _+.,n,Hangup()
[macro-checkenum]
exten => s,n,Set(Sipuri=${ENUMLOOKUP(${ARG1},sip, , 1,e164.arpa)})
exten => s,n,GotoIf($[“${Sipuri}”!=””]?toexit)
exten => s,n,Set(Sipuri=${ENUMLOOKUP(${ARG1},sip, , 1,secondo_alberoDNS_VoIP)})
exten => s,n,GotoIf($[“${Sipuri}”!=””]?toexit)
ASTERISK_FALLBACK_SIP_PSTN.DOC
5/6
“ASTERISK FALLBACK SIP PSTN”
exten => s,n,Set(Sipuri=${ENUMLOOKUP(${ARG1},sip, , 1,terzo_alberoDNS_VoIP)})
exten => s,n,GotoIf($[“${Sipuri}”!=””]?toexit)
exten => s,n(toexit),MacroExit()
;:::::::::::::::::::::::::::::IMPLEMENTAZIONI POSSIBILI PER LA MACRO MYDIAL
[macro-mydial] ;:::::::::::::1) BASATA SULLA VARIABILE DIALSTATUS
;ARG1=${Sipuri},
exten => s,n,Dial(SIP/${ARG1},20)
exten=>
s,n,GotoIf($[${DIALSTATUS}=NOANSWER|${DIALSTATUS}=CHANUNAVAIL|${DIALSTAT
US}=CONGESTION]?fault:bye)
exten => s,n(fault),Dial(ZAP/1/${ARG1}) ; questa Dial può essere eseguita su server o canale di fallback
anche diverso da card ISDN pilotate dal driver Zaptel
exten => s,n(bye),Hangup()
[macro-mydial] ;:::::::::::::2) BASATA SULLA VARIABILE HANGUPCAUSE
exten => s,n,Dial(SIP/${ARG1},20)
exten=>
GotoIf($[$[${HANGUPCAUSE} = 16] | $[${HANGUPCAUSE} = 17] |
$[${HANGUPCAUSE} = 18] ]?fault:bye)
exten => s,n(fault),Dial(ZAP/1/${ARG1}) ; questa Dial può essere eseguita su server o canale di fallback
anche diverso da card ISDN pilotate dal driver Zaptel
exten => s,n(bye),Hangup()
Tabella 3 Estratto del file “extensions.conf”
Le chiamate sono gestite eseguendo una prima interrogazione su tre alberi DNS: “e164.arpa (“Golden
Tree”) e due alberi privati (secondo_albero_DNS_VoIP e terzo_albero_DNS_VoIP). Una volta
eseguita la funzione “Dial” è necessario esaminare lo stato della chiamata. A tal fine sono stati previsti
i controlli sui valori: “${DIALSTATUS}” e “${HANGUPCAUSE}” confrontandoli con codici e
costanti disponibili in Asterisk. Una possibile implementazione della consultazione degli alberi DNS
per il VoIP è allegata in Tabella 4.
[macro-checkenum]
exten => s,n,Set(Sipuri=${ENUMLOOKUP(${ARG1},sip, , 1,e164.arpa)})
exten => s,n,GotoIf($[“${Sipuri}”!=””]?toexit)
exten => s,n,Set(Sipuri=${ENUMLOOKUP(${ARG1},sip, , 1,nrenum.net)})
exten => s,n,GotoIf($[“${Sipuri}”!=””]?toexit)
exten => s,n,Set(Sipuri=${ENUMLOOKUP(${ARG1},sip, , 1,freenum.org)})
exten => s,n,GotoIf($[“${Sipuri}”!=””]?toexit)
exten => s,n(toexit),MacroExit()
Tabella 4 Estratto del file “extensions.conf”
ASTERISK_FALLBACK_SIP_PSTN.DOC
6/6

Documenti analoghi

Esercitazione di laboratorio su Asterisk Marco Romagnoli, Davide

Esercitazione di laboratorio su Asterisk Marco Romagnoli, Davide priorità che deve essere data in ordine sequenziale a partire da 1.  • applicazione(): rappresenta l’azione che deve compiere Asterisk quando quel passo  della sequenza viene eseguito. Vediamo un e...

Dettagli

- 222 KB

- 222 KB risposto (lasciato squillare a vuoto) oppure sia non registrato ASTERISK_IVR_RUBRICA_E_MENU_GESTIONE_CHIAMATE

Dettagli