Академический Документы
Профессиональный Документы
Культура Документы
Escenario
de Trabajo y Anlisis
de posibles
soluciones
140
Re
d
de
Te
le
fo
n
a
Re
d
de
Da
to
s
141
142
En el estrato inferior tendramos las redes actuales y de acceso con sus respectivos
terminales. Estas redes cursan y reciben trfico a travs de un ncleo de red IP
(ethernet conmutada) que a su vez ofrece dos servicios claves a las aplicaciones:
fiabilidad (restauracin automtica y diseo redundante) y control de prestaciones
(retardo, prdidas y ancho de banda) para aplicaciones de tiempo real (voz y
vdeo). Finalmente, el estrato de los servicios se plantea como un plano que
permite la implementacin y el control (contabilidad, autorizaciones, seguridad,
calidad del servicio, grupos, etc.. ) de las aplicaciones ofrecidas. A este respecto en
el proyecto se plantean la implementacin de VoIP, televigilancia, telediagnstico y
de un servicio de localizacin y control de presencia basado en WiFi.
Toda esta informacin ha sido obtenida del pliego del proyecto presentado a la
empresa y que se puede encontrar aqu.
143
ESCENARIO 2:
E S C E N A R IO N M E R O 2
750
A1
756
A2
B1
231
B2
B3
GSM
B4
PSTN
Anlisis
Se ha considerado que los factores referentes al coste, al retardo mnimo, el trfico
y la aplicacin a la que va destinada no son relevantes para el anlisis de estos
escenarios.
144
Llamadas internas:
Escenario 1: Comunicacin entre los usuarios 7750 y 7756, ambas
extensiones conectadas a la centralita Ericsson: no habra modificaciones
sobre la actual configuracin.
Comunicacin entre los usuarios 7750 y 2731: Se modifica la actual
configuracin, se elige el puerto que llamaremos A2 de la centralita A que
145
Llamadas salientes
Escenario 1: Llamada desde 7750 al exterior: La extensin llamante puede
acceder al exterior de dos formas distintas:
Marcando _0954xxxxxx: La centralita Ericsson enviar la llamada por
el puerto A1 como hace actualmente.
Marcando _0650xxxxxx: La centralita Ericsson enviar la llamada por
el puerto A2 y ser Asterisk el encargado de mandarla a travs del
puerto B1 a la red GSM.
La llamada se realiza desde 2731 al exterior:
Marcando el _0954xxxxxx: La centralita Asterisk enviar la llamada
por el puerto B1.
Marcando el _0650xxxxxx: La centralita Asterisk enviar la llamada
por el puerto B1.
Escenario 2: Llamada desde 7750 al exterior: La extensin llamante puede
acceder al exterior de dos formas distintas:
Marcando _0954xxxxxx: La centralita Ericsson enviar la llamada por
el puerto A1 como hace actualmente, pero en este caso la centralita
Asterisk tendr que tratarla y volver a enviarla a la red RTC por el
puerto B3.
Marcando _0650xxxxxx: La centralita Ericsson enviar la llamada por
el puerto A2 y ser Asterisk el encargado de mandarla a travs del
puerto B4 a la red GSM.
La llamada se realiza desde 2731 al exterior:
Marcando el _0954xxxxxx: La centralita Asterisk enviar la llamada
por el puerto B3.
Marcando el _0650xxxxxx: La centralita Asterisk enviar la llamada
por el puerto B4.
Llamadas entrantes:
146
Llegados a este punto, se resumen las modificaciones que habra que hacerle a la
actual centralita Ericsson, puesto que ser un factor determinante en la eleccin de
topologa.
1. En el escenario 1: El puerto A2 que anteriormente se utilizaba para conectar
con el primario GSM ahora son la salida de las llamadas _0650xxxxxx y las
llamadas _954552xxx correspondiente a las extensiones de los telfonos IP,
por lo tanto hay que modificar Ericsson para que todas las llamadas que
sigan ese patrn vayan encaminadas por ese puerto.
2. En el escenario 2:La nica modificacin necesaria es que cuando se llame a
una de las extensiones correspondientes a telfonos IP, la centralita Ericsson
deber aadirles el 954552xxx y enviarla por el puerto A1 para que la
centralita Asterisk lo trate.
Conclusin: A nivel de modificaciones en la centralita Ericsson, a simple vista no
se aprecian diferencias significativas en cuanto a dificultad de configuracin, sin
embargo, dichas diferencias se pueden hacer patentes en el momento de configurar
las conexiones con las redes RTC y GSM por ejemplo en el escenario 1 donde se
usar la misma conexin para llamadas a fijos como a mviles
Se ha considerado que es necesario analizar en el apartado de configuracin dos
puntos ms, el referente a desvo de llamadas incondicional (para la fase de
147
Llamadas internas:
Escenario 1:
a. Un telfono 7750 til (entendiendo por til que no tiene asociado una
extensin IP) llama al nmero 7753 que ya no es til sino que ahora es
2753. La centralita Ericsson deber identificar que ese nmero de extensin
est ahora asociado a 2753 y le asignar el valor 954552753 y lo enviar
por el puerto A2 para que Asterisk la redirija a la extensin correspondiente.
b. Un telfono 2750 llama a un 7753 que ya no existe: primero Asterisk deber
comprobar que la extensin a la que estoy llamando no es ahora l mismo.
Si fuera as se cortara por ejemplo colgando. Una vez comprobado, la
centralita, deber asignarle el nuevo nmero y dirigir a la extensin
correspondiente, que tambin gestiona ella.
Escenario 2:
a. Un telfono 7750 til llama al nmero 7753 que ya no es til sino que ahora
es 2753. La centralita Ericsson, deber asociarlo al valor que le corresponde
ahora y al identificar que es un nmero 2750 le aadir el 95455 y lo enva
como todas las extensiones correspondientes a IP a travs del puerto A2.La
centralita Asterisk redirigir la llamada a la extensin correspondiente.
148
Llamadas salientes:
Para este caso no afecta el hecho de que haya desvo de llamada puesto que
si un puesto de trabajo solo dispone ya de un telfono IP usar este y el
nmero llamante en este caso es indiferente.
Llamadas entrantes:
Escenario 1:
a. Nmero externo llama a travs de la RTC a una extensin 7750 que ya no
existe: Ericsson comprueba que esta extensin ya no corresponde a ese
valor sino a 2750, le aade el 954552xxx y la enva a travs del puerto A2
para que Asterisk trabaje con ella.
b. Nmero externo llama a travs de GSM a una extensin 7750 que ya no
existe: Asterisk debe comprobar que esta extensin est asociada ahora al
valor 2750 y tratarla como una llamada entrante.
Escenario 2:
a. Nmero externo llama a travs de la RTC a una extensin 7750 que ya no
existe: Asterisk comprueba que esta extensin ya no corresponde a ese
valor sino a 2750, y la redirige a la extensin correspondiente.
b. Nmero externo llama a travs de GSM a una extensin 7750 que ya no
existe: Asterisk debe comprobar que esta extensin est asociada ahora al
valor 2750 y tratarla como una llamada entrante.
149
Conclusin
Para la emisin de una conclusin que contribuya a decidir la topologa que se
adoptar como solucin a este proyecto se tendr en cuenta por un lado el
resultado de dicho anlisis as como una serie de consideraciones ajenas a las
ventajas tcnicas.
En primer lugar, para cada una de las anteriores especificaciones se ha obtenido
que:
1. Ante fallo: Escenario 1 no deja sin servicio a la fbrica, sin embargo puede
que tras realizar las pruebas, el tiempo que queda sin servicio en el
escenario 2 se encuentra dentro de unos mrgenes aceptables dentro de la
calidad de servicio exigida.
2. Facilidad de configuracin actual: Escenario 2
3. Facilidad de migracin al uso nico de Asterisk: Escenario 2
4. Desvo de llamada permanente: Escenario 2
Por lo tanto, ante estos resultados y a falta de realizar las pruebas, se estima que
el escenario 2 supondr una mejor solucin al proyecto planteado.
Mediante el anlisis se obtuvo que el Escenario 2 presentaba una condiciones
mucho ms ventajosas respecto al otro candidato para la adopcin del mismo como
solucin al escenario a elegir, sin embargo, a pesar de que este escenario ser el
que se adopte como solucin final, el escenario 1 se usar durante la fase tanto de
pruebas de configuracin como en el periodo donde coexistan la centralita Ericsson
con Asterisk.
150
>apt-get update
Ahora actualizamos la versin de los paquetes que ya tenemos instalados con:
>apt-get upgrade
En el caso de que la actualizacin haya instalado un nuevo kernel tendremos que
reiniciar el sistema con shutdown r
now. Despus de reiniciar el sistema,
entramos como usuario root. Para satisfacer las dependencias de Asterisk hay que
instalar algunos paquetes adicionales. En concreto:
Build-essential
Libncurses5-dev
Libcurl3-dev
Libvorbis-dev
Libspeex-dev
Unixodbc
Unixodbc
Libiksemel-dev
Linux-header-<version_del _kernel>
Para hacerlas efectivas ejecutamos el comando apt-get. Para instalar la versin
correcta del paquete linux-header necesitamos conocer el kernel de nuestro
sistema. Esto se puede averiguar con uname r. Ya estamos en disposicin de
comenzar la instalacin de Asterisk.
151
Instalacin de Asterisk
En primer lugar nos cambiamos al directorio /usr/src para guardar el cdigo fuente
de Asterisk. Para obtener Asterisk, podemos dirigimos a su pgina oficial
www.asterisk.org. Debemos asegurarnos de utilizar una versin estable y no una
de desarrollo. Cuando se escribi este documento, la ltima versin estable era la
1.6.1. Otra forma de conseguir el cdigo fuente es
ejecutando desde de la
consola el siguiente comando:
>wget
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk1.6.1.9.tar.gz
Adems del cdigo de Asterisk necesitamos los drivers Dahdi. El paquete dahdilinux provee a nuestro servidor de drivers para las tarjetas de conexin a las lneas
de telefona tradicional ya sean las E1, T1. stos se usan para poder utilizar
hardware de Digium, como por ejemplo las tarjetas TDM400P, TE110P, etc.
Tambin usaremos la versin 1.4. Para obtenerlos:
>wget
http://downloads.asterisk.org/pub/telephony/dahdi-linuxcomplete/releases/dahdi-linux-complete-2.2.0.2+2.2.0.tar.
A continuacin descargamos las libreras libpri que sirve para gestionar los enlaces
RDSI. El empaquetado de libpri da a nuestra central telefnica la posibilidad de
realizar conexiones a lneas primarias como las que existen en las PSTN. Se pueden
descargar haciendo:
>
get
http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri1.4.10.2.tar.gz
El siguiente paso es conseguir unos mdulos adicionales llamados Asterisk-addons
que permiten usar bases de datos para almacenar detalles de las llamadas
(proveen drivers para conexin a servidores de MySQL) y permite utilizar
archivos MP3 para la msica en espera. Tambin aade el protocolo H.323 para
proveer a los usuarios servicio de teleconferencia con capacidades de voz, video y
datos. Para ello:
>
wget
http://downloads.asterisk.org/pub/telephony/asterisk/asteriskaddons-1.6.1-current.tar.gz
Por ltimo, obtenemos un conjunto de archivos con voces en castellano desde
http://dowloads.digium.com/pub/telephony/sounds. Una vez que tenemos el cdigo
fuente de Asterisk y del resto de los mdulos nos disponemos a compilarlo.
152
dahdi-linux-complete
libpri
Asterisk
Asterisk-addons
> cd /usr/src/zaptel-1.6.<x>
> make clean
>./configure
base de
> make && make install
> make config
Asterisk
Compilacin de libpri
Ahora agregaremos la librera de Libpri que como dijimos se utiliza para poder
manejar tarjetas para enlaces E1 con la sealizacin PRI.
> cd /usr/src/libpri-1.6.<x>
> make clean
> make && make install
Compilacin de Asterisk
Los pasos seguidos son los siguientes:
> cd /usr/src/asterisk-1.6.<x>
> make clean
> ./configure
>make && make install
> make samples
defecto
153
>make progdocs
>make config
A partir de este momento Asterisk est instalado. Se puede teclear man asterisk en
la lnea de comandos de Linux para obtener detalles de como arrancar y parar el
servidor.
Los ficheros de configuracin de Asterisk se encuentran en el directorio
/etc/asterisk.
Compilacin de Asterisk-addons
A continuacin describimos como se instala este mdulo.
> cd /usr/src/Asterisk-addons-1.6.<x>
actual
>make clean
>./configure
> make & make install
> cp rf /usr/src/asterisk-sounds/*
/var/lib/asterisk/sounds/
> cd /usr/src/asterisk-1.4.<x>
> echo ztdummy >> /etc/modules
el sistema
>/etc/init.d/asterisk {start|stop|restart}
154
172.0.0.1
172.16.16.55
172.16.16.56
localhost.localdomain
asterisk-A.us.es
asterisk-B.us.es
localhost
asterisk-A
asterisk-B
auth 1
1 crc
En el fichero ha.cf especificaremos las opciones de configuracin de hearbeat.
Primero indicamos donde queremos guardar los logs, en keepalive le indicamos que
los latidos se enviarn cada 2 segundos, en deadtime especificamos que si un nodo
no responde en 30 segundos est muerto, en warntime le decimos que si no
responde en 10 segundos se lanzar una alerta. En el inicio antes de considerar un
nodo muerto esperaremos 120 segundos para evitar problemas con el arranque del
servicio (initdead). Usaremos el puerto UDP 649 para la comunicacin entre las
mquinas, en ucast indicaremos nuestro dispositivo ethernet y configuramos que
los latidos se enven al otro equipo por unicast. Ponemos el parmetro failback en
on para indicar el comportamiento en caso de recuperacin ante un nodo cado.
Estando en on, ste recuperar todos los servicios al volver a estar activo, si lo
dejamos en off, los servicios residirn en el nodo espejo hasta que ste caiga.
Finalmente indicamos que nodos forman el servicio y un dispositivo ethernet para
broadcast. El fichero descrito se muestra a continuacin.
-------------------------------------------------------------------------------------------------------------#
File to write debug messages to
debugfile /var/log/ha-debug
#
File to write other messages to
logfile /var/log/ha-log
#
Facility to use for syslog()/logger
logfacility local0
#
A note on specifying "how long" times below...
#
The default time unit is seconds
#
10 means ten seconds
#
You can also specify them in milliseconds
#
1500ms means 1.5 seconds
#
keepalive: how long between heartbeats?
keepalive
2
#
deadtime: how long-to-declare-host-dead?
#
If you set this too low you will get the problematic
#
split-brain (or cluster partition) problem.
#
See the FAQ for how to use warntime to tune deadtime.
deadtime
30
#
warntime: how long before issuing "late heartbeat" warning?
#
See the FAQ for how to use warntime to tune deadtime.
warntime 10
155
#
Very first dead time (initdead)
#
On some machines/OSes, etc. the network takes a while to come up
#
and start working right after you've been rebooted. As a result
#
we have a separate dead time for when things first come up.
#
It should be at least twice the normal dead time.
initdead
120
#
What UDP port to use for bcast/ucast communication?
udpport 694
#
Set up a unicast / udp heartbeat medium
#
ucast [dev] [peer-ip-addr]
#
[dev]
device to send/rcv heartbeats on
#
[peer-ip-addr] IP address of peer to send packets to
ucast eth0 (ip_del_otro_servidor, es decir 172.16.16.55 172.16.16.56)
#
auto_failback on
#
Tell what machines are in the cluster
#
node nodename ... -- must match uname -n
node asterisk-A
node asterisk-B
bcast eth0
---------------------------------------------------------------------------------------------------------Estos ficheros deberan ser idnticos para los dos equipos con la excepcin de la
lnea ucast donde se debe poner la direccin del nodo espejo que ser diferente
para cada uno. En el fichero haresources especificaremos los servicios que debe
manejar hearbeat. Este fichero debe ser el mismo en los dos nodos.
asterisk-A
IPaddr2::172.16.16.57/eth0
asterisk
156
Todos estos conceptos sern la base para la creacin de un dialplan que ofrezca
una solucin ptima al escenario planteado para este trabajo.
En Asterisk, el dial plan se configura en el archivo extensions.conf. El fichero
extensions.conf se compone de secciones o contextos definidos entre corchetes [].
Hay dos contextos especiales que estn siempre presentes que son [general] y
[globals]
157
Contexto [general]
El contexto [general] configura unas pocas opciones generales como son:
En general estas opciones no son muy importantes y se suelen dejar tal y como
aparecen por defecto.
Contexto [globals]
En este contexto se definen las variables globales que se van a poder utilizar en el
resto de los contextos. En este caso se han definido como variables globales el
tamao mximo (9) y mnimo (4) que puede aceptar Asterisk como nmero
telefnico o de extensin. Tambin se les ha asignado variable global a los canales
DAHDI donde se comunica con los primarios para facilitar el trabajo con ellos.
Adems de los contextos genricos, en este dial plan se han creado tres tipos de
contextos:
158
[conferencia]
exten => 600,1,Answer()
exten => 600,n,MeetMeCount(600,CONFCOUNT)
exten => 600,n,Noop(${CONFCOUNT})
exten => 600,n,GotoIf($[${CONFCOUNT} <= 2]?conf:full) ;el primer
participante no lo cuenta, es la llamada a 3
exten => 600,n(conf),Authenticate(1234)
exten => 600,n,MeetMe(600,,cix)
exten => 600,n(full),Playback(conf-full)
exten => 600,n,HangUp()
de tres
159
[macro-voicemail]
exten => s,1,Set(CFIM=${DB(CF/${MACRO_EXTEN})})
exten => s,n,Noop(${CFIM})
exten => s,n,GotoIf($["${CFIM}"=""]?NoCF:CF)
exten => s,n(CF),Dial(SIP/${CFIM},10,tT)
exten => s,n,Set(vm=${CFIM})
exten => s,n,Goto(estado)
exten => s,n(NoCF),Dial(SIP/${MACRO_EXTEN},10,Tt)
exten => s,n,Set(vm=${MACRO_EXTEN})
;exten => s,n,Noop(${DIALSTATUS})
160
Aqu pueden ocurrir dos cosas dependiendo del motivo por el que se ha llegado a
esta prioridad. En la primera lnea del cdigo se analiza el motivo y se enva a
prioridades distintas donde las llamadas sern tratadas en funcin de ello.
Haciendo uso de la funcin GosubIf donde se evala la condicin (se comprueba el
valor de la variable DIALSTATUS, donde se almacena el estado de la llamada, es
decir, el motivo por el que no se ha completado) y se enva a prioridades distintas.
Podemos encontrar dos casos:
1. Etiqueta s-NOANSWER: El motivo por el que no se complet la llamada
es que el usuario no contest. Haciendo uso de la aplicacin voicemail
(que se encarga de la gestin del mensaje de voz).Esta aplicacin
permite enviar a buzn de voz distinto si no contesta, para ello se usa la
opcin u. El buzn al que enviar el mensaje si indica mediante la
sentencia (${vm}@default,u)), es decir, vm contiene el nmero de
extensin al que iba dirigida la llamada, independientemente de que
tenga o no establecido el desvo de llamadas.
2. Etiqueta s-BUSY: Si se ha llegado aqu, es porque hemos llamado a una
extensin y sta, estaba comunicando. Uno de los servicios bsicos que
se pueden ofrecer es la rellamada-automtica. Este servicio permite al
llamante la opcin de presionar una tecla (en este caso el 5) a travs de
161
Llamada a la macro
Por ltimo, se presenta a continuacin la llamada a la macro que hemos explicado
anteriormente.
Esta macro se ejecutar cuando Asterisk detecte un patrn 3XXX, correspondiente
a una extensin SIP. Los parmetros de la macro son:
1. Nombre de la macro
2. Nmero de extensin llamante (que se usar posteriormente para la
comprobacin de si est activa la llamada automtica)
exten => _3XXX,n,Macro(voicemail,${CALLERID(num)})
Desvo de llamadas
Este servicio se utiliza para permitir a un usuario que va a cambiar de ubicacin
temporalmente poder recibir las llamadas que van dirigidas a su extensin en la
nueva ubicacin.
La codificacin de esta funcin se basar en el uso de la base de datos propia de
Asterisk (AstDB) donde se almacenar el nmero al que se desvan las llamadas.
El cdigo es el siguiente:
[callforwarding]
exten =>_*21*X.,1,Noop(${LEN(${EXTEN})})
exten
=>_*21*X.,n,GotoIf($[${LEN(${EXTEN})}=$[${TAM_EXTERNO}+5]]?externo:3);
162
En este cdigo, se diferencia por un lado la activacin del servicio y por otro la
desactivacin.
Activacin desvo de llamadas
Cuando Asterisk detecta el patrn _*21*X., lo que interpreta es que va a iniciarse
un desvo de llamadas (*21*) y el nmero al que realizar dicho desvo.
Este nmero de telfono puede ser tanto una extensin o un nmero de telfono
externo.
En este caso, se har uso de dos variables globales, TAM_EXTERNO (que es igual a
9) y TAM_INTERNO (que tendr almacenado el valor de 4).
El primer paso a realizar es comprobar si el nmero al que se desva la llamada es
un nmero externo o no, comprobando la longitud del mismo, es decir, si
corresponde a un nmero externo estar formado por nueve dgitos a los que habr
que sumar los cuatro correspondientes al indicador de desvo de llamadas (*21*) y
un ltimo carcter (#), en total cinco dgitos ms. A pesar de que ste ltimo
carcter no tiene ninguna utilidad para Asterisk, se pretende mantener el servicio
que haba originalmente y en ste si se usaba. La centralita lo interpretaba como el
ltimo dgito que se iba a introducir.
Si corresponde a un nmero externo se salta a la prioridad etiquetada como
externo y se almacena en la base de datos. La sintaxis para almacenar un valor en
esta base de datos responde al patrn FAMILY/KEY. En este caso se usar
CF/${CALLERID(NUM)}, es decir, la familia ser CF( callforwarding) y la llave ser
el nmero que est realizando la llamada, es decir, el usuario que pone en marcha
el servicio.
El nmero que se almacena ser el nmero que se marque despus del *21*, es
decir, primero se eliminan los 4 primeros dgitos y de lo que quede y se seleccionan
los 9 primeros (hay que eliminar el # del final).
En esta versin de Asterisk, se har uso de la funcin Set para almacenar valores
en AstDB.
Si el nmero que inicia el servicio desva la llamada a una extensin ( se
comprueba al inicio mediante el tamao) se saltar a la prioridad con etiqueta
interno.En esta prioridad se repite el almacenamiento del nmero al que se
desviar la llamada.
El nico motivo de separar ambos casos es el hecho de que hay que eliminar el
ltimo carcter introducido y para ello se debe jugar con el tamao de los patrones.
Desactivacin desvo de llamadas
La desactivacin de este servicio, inicia cuando Asterisk encuentra el patrn #21#.
En ese momento, lo nico que deber hacer ser eliminar la entrada
correspondiente de la base de datos.
163
Rellamada
El servicio de rellamada se utiliza para llamar al ltimo nmero llamado.
Las lneas de cdigo usadas para implementar esta funcin son muy sencillas pero
se realizan en dos pasos.
En primer lugar cada vez que un usuario realiza una llamada se almacena ese
nmero en la AstDB como:
exten => _3XXX,1,Set(DB(${CALLERID(num)}/ultimo)=${EXTEN}
Es decir, nmero llamante/ultimo ser igual al nmero al que llama. Este valor se
ir refrescando con cada nueva llamada y es un paso previo a la posibilidad de
solicitar el servicio.
La funcin propiamente dicha es:
[rellamada]
exten => ***,1,Dial(SIP/${DB(${CALLERID(num)}/ultimo)})
Aqu simplemente se establece un canal SIP (haciendo uso de la aplicacin Dial)
con el ltimo nmero almacenando en la base de datos correspondiente a la
extensin llamante.
Rellamada automtica
Del uso de este servicio se ha hablado el la explicacin del servicio Voicemail. Aqu
se profundizar en la macro que se encarga de reestablecer la llamada.
Llamada a macro
Se recuerda la llamada a la macro.
exten => s-BUSY,n(re),macro(rellamada-automatica,${ID},${MACRO_EXTEN})
En esta llamada, se indica aparte del argumento obligatorio del nombre de la macro
que se quiere ejecutar, el contenido de la variable ID, donde se almacena la
extensin del nmero llamante (pasada como argumento uno a la macro voicemail
que es desde la que se llama)
y la extensin a la que se llam en la macro
original, almacenada en MACRO_EXTEN, es decir, el nmero llamante y el llamado.
Macro
Antes de pasar a explicar el cdigo de la macro utilizada, es necesario aclarar
algunos conceptos previos.
164
Call file
Para la implementacin de esta funcin, se va a aprovecha la capacidad de Asterisk
de procesar archivos de texto con unas caractersticas concretas y transformarlos
en llamadas salientes. Estos tipos de archivos se llaman call files.
Utilizando este mtodo, se debe dar a Asterisk la siguiente informacin:
Descripcin
La macro que se ejecuta bajo el nombre rellamada-automtica es la siguiente:
[macro-rellamada-automatica]
exten => s,1,System(echo Channel:SIP/${ARG2}>>/tmp/callback${ARG2})
exten => s,n,System(echo WaitTime:5>>/tmp/callback${ARG2})
exten => s,n,System(echo Maxretries:2>>/tmp/callback${ARG2})
165
Application:Dial>>/tmp/callback${ARG2}
Data:SIP/${ARG1}>>/tmp/callback${ARG2}
166
IVR General
Como se ha explicado en el apartado correspondiente, el IVR no es ms que una
operadora digital que permite seleccionar mltiples opciones antes de ser atendida
por una persona.
Esta seccin se va a dividir en dos partes, la primera hace referencia al diagrama
de flujo explicativo del cdigo. La segunda es la explicacin del cdigo.
LLAMADA A NMERO
= 954998350
SI
ES DE DIA
NO
LOCUCIN
NOCHE
LOCUCIN DIA
MARCA
EXTENSIO
N?
NO
NO
Es de
Da?
BUZN DE VOZ
N EXTERNO , DDI's
SI
SI
OPERADORA
NO
LIBRE?
SI
es de
Dia?
SI
ESTA
LIBRE?
NO
BUZN DE
VOZ
CONSTESTA
Locucin Cola y
Msica
SI
NO
MENSAJE Y
TRANFERENCIA A LA
OPERADORA
CONTESTA?
SI
FIN
[ivr]
167
Inicialmente, cuando un usuario externo realiza una llamada (en este cdigo se ha
supuesto que desde la red mvil) lo primero que se comprueba si es o no horario
de oficina, puesto que el camino a seguir ser distinto, saltando a las prioridades
etiquetadas como noche o da dependiendo de ello.
Si es de da (apartado a), en primer lugar sonar una locucin que agradece al
usuario la llamada y le indica que si conoce la extensin a la que desea llamar la
marque. Esta locucin est en castellano, lo cual se indica con la opcin es de
Playback .
Asterisk esperar que se introduzca la extensin durante 10 segundos
aproximadamente. Si durante este tiempo se introduce, se ejecutar directamente
el patrn al que llame, en caso de que sea un 3XXX ejecutar un Dial
(SIP/${EXTEN}), como se ve en el apartado c. Si el nmero llamado no contesta,
pueden ocurrir dos cosas dependiendo de la hora a la que se produzca la llamada
(de ello se encarga la funcin GotoIfTime):
1. Es de da (apartado d), se pasar a la operadora que la atender
directamente, se pone en cola de operadora. El hecho de que vuelva a la
operadora es para preguntar al usuario qu desea hacer entonces. Es una
forma de garantizar un trato ms personal.
2. Es de noche (apartado f), te permite dejarle un mensaje en el buzn de voz
individual de la extensin llamada.
Una de las aplicaciones que hay que tener en cuenta en este cdigo es Queue().Es
la aplicacin que permite crear y gestionar colas de espera en Asterisk.
168
[general]
persistentagents=yes
[agents]
agent => 3001,1234,Operadora
Esta es la nica parte del cdigo que resultar de inters.
Se definen dos contextos principales: uno general y otro agents.
1. Contexto general, donde se especifica nicamente le parmetro
persistentagents=yes. Este campo define si el callbacklogin tiene que ser
almacenado en la base de datos interna de Asterisk. Si tiene asignado el
169
Una vez definidos todos estos archivos, se puede trabajar con colas.
IVR presidente
El IVR del presidente, no es ms que una particularizacin simplificada del IVR
general, sin embargo, se refleja aqu para solventar posibles dudas respecto al
170
Una vez se llama al telfono directo del presidente (nmero 954598391) la funcin
GotoIfTime decidir en funcin de la hora a la que se realice la llamada a que
prioridad se debe saltar.
La nica diferencia entre las prioridades etiquetadas como noche y comn es que
si es de noche se escuchar una locucin que indica que se est realizando una
llamada fuera del horario de oficina. La nica finalidad de esto es indicarle al
llamante que es posible (de hecho lo ms probable) que nadie conteste a su
llamada. De todas formas, se comunica con la extensin correspondiente.
Aqu reside la nica complejidad de estas lneas de cdigo. El nmero directo al
que se llam se transforma en un nmero que responda al patrn de una extensin
SIP. Para ello se eliminan los seis primero dgitos 954598391 (marcados en negrita
171
172
Configuracin de la Tarjeta
Para la configuracin de la tarjeta se hace uso de otro de los ficheros de Asterisk. El
fichero chan_dahdi.conf. Este fichero se encuentra en /etc/asterisk y en l se
24
PCI consiste en un bus de ordenador estndar para conectar dispositivos perifricos directamente a
su placa base. PCI Express es un nuevo desarrollo del bus PCI que usa los conceptos de programacin y
los estndares de comunicacin existentes, pero se basa en un sistema de comunicacin serie mucho
ms rpido. Este bus est estructurado como enlaces punto a punto full-duplex.
173
Switchtype: tipo de switch en la lnea PRI que se usa, los ms comunes son
euroisdn, national y qsig. En nuestro caso se selecciona Euroisdn.
174
coding: indica como comunicarse con el otro extremo. Para T1 puede ser
ami o b8zs y para E1 puede ser ami (Alternate Mark Inversion) o hdb3 (High
Density Bipolar of order 3 code) a veces se puede necesitar crc4.
bchan: indica los canales que van a ser usados para datos.
dchan: indica los canales que van a ser usados para control.
Dahdi usa mdulos cancelador de eco que deben ser configurados para cada canal.
Estos canceladores son compilados e instalados como parte del paquete dahdi. Se
puede especificar el cancelar de eco usado para cada canal. Por defecto no hay
cancelador de eco en ningn canal, pero es muy importante definirlo, sobre todo si
no se dispone de un cancelador de eco hardware.
La definicin de este parmetro sera:
Echocaneller= <echocanceller name>, <channel>
Un ejemplo sencillo de la configuracin del fichero system.conf sera:
loadzone=es
defaultzone=es
# Tarjeta Digium TE200
#puerto 1: Asterisk <-> E1 fijo
span = 1,1,0,ccs,hdb3,crc4
bchan= 1-15,17-31
dchan= 16
echocanceller= mg2,1-15,17-31
datasheet_cancelador de eco.zip
Comprobaciones finales.
Una vez se han configurado los ficheros anteriores teniendo en cuenta las
caractersticas especficas del escenario de trabajo, se debe comprobar que la
sincronizacin se ha realizado correctamente con los enlaces primarios. Para ello,
se puede usar el cdigo de colores de los led de la tarjeta.
Verde: La tarjeta est perfectamente sincronizada con el extremo remoto.
Amarillo: La tarjeta est sincronizndose o est recibiendo una alarma roja
de extremo lejano.
Rojo: La tarjeta no encuentra el extremo remoto, el circuito no est arriba o
el cable est estropeado.
Tras la configuracin ambos led deben quedar en verde.
175
Extensions.conf
En este fichero se describe el funcionamiento del plan de marcado. Asterisk puede
recibir llamadas desde tres orgenes distintos: la red pblica mvil, la centralita y la
red IP. Para diferencia el manejo de esas llamadas en funcin de su origen se han
creado tres contextos distintos: from-pstn, from-pbx y from-sip.
a) Contexto [from-pstn]
Este contexto recoge el tratamiento de las llamadas entrantes desde la red pblica
(la mvil en este caso).
[from-pstn]
exten => _717XXXX,1,Background(welcome&privacy-please-dial&digits/1)
exten => _717XXXX,n,WaitExten(3)
exten => _717XXXX,n,Dial(DAHDI/g2/${EXTEN})
; MARCA LA EXTENSION SIP
exten => 1,1,Background(ent-target-attendant)
exten => 1,n,WaitExten(3)
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
176
que persan tiene contratados un rango de nmeros directos (DDI), esos cuatro
ltimos dgitos no son fijos sino que se correspondern con los 4 ltimos dgitos del
nmero directo llamado. Por ejemplo, si alguien llama al 954998350, el nmero
enviado por la central de conmutacin ser 7178350. En cambio, si se llama al
954998448 (DDI), la central entregar el 7178448. Por este motivo, en el plan de
marcado se busca la coincidencia con el patrn _717XXXX. Esta llamada ser
tratada en primer lugar por Asterisk.
El llamante escuchar una locucin que le pregunta si el nmero al que desea
marcar es una extensin correspondiente a un telfono IP, en ese caso, se le indica
que marque el dgito 1. El llamante tiene aproximadamente unos 4 segundos para
marcar (se aade un tiempo de margen de 3 segundos mediante la orden
WaitExten), si en ese tiempo no pulsa 1, Asterisk asume que se desea establecer
una conexin con un nmero correspondiente a una extensin analgica y lo enva
por el enlace correspondiente (g2) para que sea tratada por la centralita Ericsson,
donde se activar el IVR y le solicitar de nuevo que marque la extensin si la
conoce o lo pondr en contacto con la operadora para que lo atienda
personalmente.
En caso de haber marcado el dgito 1 tras escuchar la primera locucin, es decir, si
se desea establecer una comunicacin con un telfono IP (con patrn 3-4XXX, se
solicita introduzca la extensin correspondiente y Asterisk simplemente la enva por
el canal SIP correspondiente a la extensin marcada.
b) Contexto [from-pbx]
Este contexto recoge el tratamiento de las llamadas realizadas por usuarios de
telfonos analgicos tanto a extensiones SIP como a nmeros mviles externos.
[from-pbx]
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
exten => _[34]XXX,n,Hangup()
177
[from-sip]
; llamadas a mviles
exten =>_06XXXXXXXX,1,Dial(DAHDI/g1/999${EXTEN:1})
exten =>_06XXXXXXXX,n,Congestion()
exten =>_06XXXXXXXX,n,Hangup()
; llamadas internas de SIP a SIP y SIP-analgicas
exten => _[78]XXX,1,Dial(DAHDI/g2/954998438)
exten => _[78]XXX,n,Hangup()
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
exten => _[34]XXX,n,Hangup()
Las posibilidades contempladas a la hora de realizar una llamada desde un telfono SIP
son:
1. Llamada a un mvil externo: Esta llamada ser tratada directamente por la
centralita Asterisk. Una vez detecte un patrn que se ajuste a dicha llamada
_06XXXXXXXX (se recuerda que es necesario marcar el 0 para realizar una
llamada externa), Asterisk se encargar de dar al nmero el formato correcto
para que pueda ser enviado a la red. Para ello, elimina el 0 y aade el prefijo
999, por lo que el nmero definitivo que saldr hacia la red mvil (por el enlace
g1) coincidir con el patrn 9996XXXXXXXX.
2. Llamadas internas entre terminales SIP: El tratamiento es el mismo que en el
escenario anterior, Asterisk establecer un canal SIP entre llamante y llamado.
3. Llamadas internas entre terminales SIP y analgicos: Cuando un usuario SIP
realice una llamada que coincida con el patrn _7-8XXX, sta se encamina por el
canal g2 hacia la centralita. El enlace primario que une la centralita con Asterisk
es el que conectaba, en el escenario original de Persan (Figura 35), la centralita
con la red fija Por lo tanto, el formato de nmero esperado por parte de la
centralita es del tipo 95499XXXX. En su configuracin se establece que a estos
nmeros se les quiten las 5 primeras cifras (95499) y se queda con las cuatro
ltimas (XXXX). En este proceso, la centralita comprueba si esas cuatro cifras
coinciden con un nmero directo (DDI). Si es as, la llamada se encamina
directamente hacia la extensin correspondiente. En caso contrario, se encamina
hacia la extensin de la operadora (8350). Por lo tanto, las nicas extensiones
analgicas que pueden comunicarse directamente con extensiones SIP (sin pasar
por la operadora) son las que tienen un nmero directo asociado. Aunque el
funcionamiento general es el expuesto, en las pruebas slo se utiliz un nmero
directo (954998438) para evitar molestias a los trabajadores.
Chan_dahdi.conf
178
En el enlace que une Asterisk con la red pblica (fija en este caso), ste desempea
el papel de usuario en la sealizacin. En cambio, en la conexin con la centralita
Ericsson juega el papel de red.
System.conf
179
a) Contexto [from-pstn]
Este contexto recoge el tratamiento de las llamadas entrantes desde la red fija (en
este caso).
[from-pstn]
180
[from-pbx]
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
exten => _[34]XXX,n,Hangup()
Las llamadas realizadas por extensiones analgicas que pasan Asterisk pueden ser:
1. Llamadas a extensin SIP: si la llamada recibida por Asterisk coincide con el
patrn correspondiente a extensiones SIP (3-4XXX), se establece un canal
SIP entre Asterisk y el llamado.
2. Llamadas a nmeros fijos externos: cualquier destino que no coincida con el
patrn 3-4XXX se encamina por el de salida hacia la red fija (enlace g1).
c) Contexto [from-sip]
Este contexto recoge el tratamiento de las llamadas realizadas por telfonos IP
tanto a extensiones analgicas como a nmero fijos externos.
[from-sip]
; llamadas a cualquier destino externo
exten =>_0X.,1,Dial(DAHDI/g1/${EXTEN:1})
exten =>_0X.,n,Congestion()
exten =>_0X.,n,Hangup()
; llamadas internas de SIP a SIP y SIP-analgicas
exten => _[78]XXX,1,Dial(DAHDI/g2/954998438)
exten => _[78]XXX,n,Hangup()
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
exten => _[34]XXX,n,Hangup()
Con respecto a pruebas anteriores, la nica modificacin significativa es la
generalizacin del patrn de llamadas externas. Se debe tener en cuenta, que en el
plan de marcado definitivo, este contexto ser modificado para restringir las
llamadas salientes a fijos de acuerdo con unos permisos previamente establecidos.
Chan_dahdi.conf
Para esta prueba, no se realiza ninguna modificacin del fichero respecto a la
prueba anterior.
System.conf
Para esta prueba, no se realiza ninguna modificacin del fichero respecto a la
prueba anterior.
181
[from-pstn]
; DDI
exten => _954998448,1,Dial(SIP/3${EXTEN:6}
; MARCA LA EXTENSION SIP
exten => _X.,1,Background(ent-target-attendant)
exten => _X.,n,WaitExten(3)
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
En el cdigo de este contexto se hace una diferenciacin entre los tipos de llamadas
entrantes ante las que se podra encontrar Asterisk:
1. DDIs o nmero directos: Si asterisk identifica una llamada dirigida a un
nmero directo la encamina hacia a la extensin SIP correspondiente (sin
lanzar ningn tipo de men o aviso). Una extensin SIP comparte los tres
ltimos dgitos con su DDI asociado. As, un usuario que, por ejemplo, tenga
un DDI igual a 954998448 tendr una extensin SIP terminada en 448.
Teniendo en cuenta que en el plan de marcado diseado, las extensiones
SIP comienzan por 3, la extensin completa ser 3448. Una vez obtenida la
extensin SIP, Asterisk solo tiene que establecer el canal SIP
correspondiente.
2. Otro: comprende cualquier nmero externo dirigido al nmero de atencin
de la empresa (954998350). En este caso, la poltica consiste en atender al
llamante a travs de un IVR. En concreto, se solicita marcar la extensin
deseada, si se conoce, y en caso contrario, se enva al usuario a la extensin
de la operadora.
b) Contexto [from-sip]
Recoge el tratamiento de las llamadas realizadas desde telfonos SIP
[from-sip]
; llamadas a cualquier destino externo
exten =>_06.,1,Dial(DAHDI/g2/999${EXTEN:1})
exten =>_06.,n,Congestion()
exten =>_06.,n,Hangup()
182
exten =>_0.,1,Dial(DAHDI/g1/${EXTEN:1})
exten =>_0.,n,Congestion()
exten =>_0.,n,Hangup()
; llamadas internas de SIP a SIP y SIP-analgicas
exten => _[34]XXX,1,Dial(SIP/${EXTEN})
exten => _[34]XXX,n,Hangup()
Chan_dahdi.conf
En esta configuracin slo se usa un contexto para manejar las llamadas
procedentes de la red pblica (from-pstn). El plan de marcado (extensions.conf) es
el encargado de diferenciar entre los dos posibles orgenes de stas (red fija y
mvil).
; ------------------------------------------------; Fichero de configuracion /etc/chan_dahdi.conf
; ------------------------------------------------[channels]
language=es
switchtype=euroisdn
signalling=pri_cpe
.
.
.
; Conexion Asterisk<->pstn
context=from-pstn
group=1
channel=>1-15,17-31
group=2
channel=>32-46,48-62
System.conf
La nica diferencia del fichero system.conf de esta prueba con respecto a las dos
anteriores, es que Asterisk se comporta como esclavo de sincronismo en los dos
puertos (marcado con un crculo rojo) y no slo en uno.
183
184