Sei sulla pagina 1di 30

Asterisk - Centos

Asterisk es una aplicacin en la cual tu computadora se convierte en un PBX, asterisk tiene 176
aplicaciones con las cuales puedes montar una plataforma muy confiable, estable y econmica,
la cual ayude a distribuir su sistema de telefona empresarial.
Sistema Operativo: CentOS 6.4
Algunos expertos, incluso el libro de Asterisk insisten en la necesidad de actualizar todo el
sistema operativo para realizar la instalacin de Asterisk, sin embargo eso no es necesario;
simplemente basta con tener los paquetes y las dependencias necesarias.
1. Actualizar los paquetes (Aunque realmente necesitamos son unos cuantos, en el futuro puede
ser de mucha ayuda)
#yum upgrade
2. Descargue e instale los siguientes paquetes en su servidor:
#yum install gcc gcc-c++ make wget kernel-devel libxml2-devel
ncurses-devel openssl-devel subversion sqlite-devel libuuiddevel
3. Una vez instaladas las dependencias verifique que el kernel de su mquina coincida con la
versin del kernel-devel instalada. Si no es igual, entonces descargue el paquete de nuevo
(#yum install kernel-devel)
#Uname -an
>>Para ver kernel de la maquina
#rpm -q kernel-devel >>Para ver el kernel instalado

4. Pocisionese en el directorio /usr/src:


#cd /usr/src
5. Proceda a descargar los paquetes necesarios para la instalacin de Asterisk:
La url es http://downloads.asterisk.org
Descarga de Asterisk:
#wget
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk1.8-current.tar.gz
Descarga de DAHDI
#wget http://downloads.asterisk.org/pub/telephony/dahdi-linuxcomplete/dahdi-linux-complete-current.tar.gz
Descarga de LibPRI

#wget http://downloads.asterisk.org/pub/telephony/libpri/libpri1.4-current.tar.gz
Con los paquetes descargados procedemos a la instalacin de los mismos; la instalacin se
realiza en el siguiente orden:
A. DAHDI
B. Libpri
C. Asterisk
6. La instalacin se realiza de la siguiente manera
DAHDI
#tar -zxvf dahdi-linux.complete-current.tar.gz
#cd dahdi-linux-complete-2.7.0.1+2.7.0.1
#make clean && make all && make install && make config
&& service dahdi start

start

LibPri
#tar -zxvf libpri-1.4-current.tar.gz
#cd libpri-1.4.14
#make clean && make && make install
#cd ..

Asterisk
#tar -zxvf asterisk-1.8-current.tar.gz
#cd asterisk-1.8.23.0
#./configure
#make menuselect (si le presenta el error Terminal mus be at least 80*27, acceda viat
SSH al servidor y repita este punto). A continuacin seleccione las opciones CORE-SOUNDSES-GSM y EXTRA-SOUNDS-EN-GSM
#make && make install && make samples && make config
#cd ..

Reinicie el sistema con el comando:


#reboot
7.Compruebe que DAHDI est cargado
#lsmod | grep dahdi

Configuracin SIP
1. Compruebe que Selinux est en modo permisivo o solo si es necesario coloquelo en
DISABLE
#nano /etc/selinux/config (Primera linea de configuracin)

2. Desactive la proteccin de IPTables en su computador (Recuerde que en un entorno de


produccin el firewall no debe ser desactivado).
#service iptables stop

3. Vaya a la ruta /etc/asterisk ; una vez dentro de este directorio usted podr observar
que existen una cantidad importante de ficheros, tenga en cuenta que muchos de estos ficheros
son ejemplos de configuracin que usted puede observar para hacerse a una idea sobre la
multitud de opciones que ofrece Asterisk.
#mv sip.conf sip.conf.ejemplo
4.Cree su propio fichero SIP
#nano sip.conf
[general]
context=default >>contexto por defecto para las llamadas entrantes
realm=class.digium.com >> mbito para la autenticidad de texto y crear las
contraseas cifradas con el protocolo MD5
bindport=5060 >>Puerto UDP que ser aceptado
bindaddr=0.0.0.0 >> Direccin IP en la cual se escucharn las solicitudes
srvlookup=yes >>Llamadas de registro DNS-SRV para llamadas salientes SIP en dominio
disallow=all >>Dashabilitar todos los CODECs
allow=ulaw >>Habilitar CODEC audio
allow=gsm >>Habilitar CODEC audio (el primero que se intentar utilizar a lo largo de
una llamada)
language=es >>Habilitar lenguaje espaol

Otros parmetros:
allowguest=no >>No permitir llamadas de extensiones SIP remotas sin contrasea

tcpenable=yes >>Desde la versin 1.6 es posible configurar el servidor para que permita
tambin conexiones TCP
tcpbindaddr=0.0.0.0:5059 >>Direccin y puerto para las conexiones SIP con
protocolo TCP
callevents=yes >>Cuando hay eventos (llamadas, etc.) estos vienen notificados al
Asterisk Manager (til para programas externos tipo FOP)
domain=class.digium.com >>El dominio local para el servidor asterisk. En mi caso
son dos.
domain=192.168.10.1 >>Conectarnos a asterisk usando un segundo dominio (ejemplo
una red VPN)
subscribecontext=subscribe >>Contexto donde configurar las extensiones para
activar la funcin subscribe del protocolo SIP
allowsubscribe=yes >>Esto permite a las extensiones controlar el estado de las dems
notifyringing=yes >>Notifica si la extensin est timbrando a las dems extensiones
(ya veremos como funciona)
notifyhold=yes >>Notifica si la extensin est en espera
useragent=3CX >>La central se presentar con este nombre. A veces algunos
proveedores no permiten conectarse a ellos si reconoces que detrs de la conexin est un
servidor Asterisk. En este modo nos presentamos como si furamos el softphone 3CX
t38pt_udptl=yes >>Permite el uso del protocolo T38 (fax sobre IP) pero solo para
conexiones directas
videosupport=yes >>Para permitir videollamadas
type=friend >>Tipo de extensin. Puede ser friend, user o peer. Friend puede hacer
y recibir llamadas, User solo recibir y Peer solo puede hacer (como en el caso de proveedores
VoIP que usamos solo para hacer llamadas)
secret=contrasea >>La clave de la extensin
qualify=yes >>Para saber el tiempo de respuesta de una extensin y si est alcanzable o
no
mailbox=2000@default >>La casilla de voz de la extensin (segn la configuracin del
archivo voicemail.conf)
host=dynamic >>Si la extensin se conecta remotamente cambiando continuamente su
direccion IP se pone este parametro
dtmfmode=rfc2833 >>El protocolo para enviar los tonos DTMF
canreinvite=no >>yes; Si queremos que la extensin intente conectarse directamente
con la extensin llamada. No si queremos que Asterisk haga de puente entre las dos
extensiones.
nat=yes >>Si la extensin se conecta al servidor asterisk detrs de un cortafuego hay que
poner yes
callerid=Fulano <2000> >>El nombre y el numero de identificacin de la extensin
allow=alaw >>Habilita el codec audio alaw
allow=g729 >>Habilita el codec audio
allow=h263 >>Habilita el codec vdeo
allow=h263p >>Habilita el codec vdeo ( Mejora del H.263 )
allow=h264 >>Habilita el codec vdeo ( MPEG-4 "HD" )
Ahora un ejemplo para un proveedor de llamadas VoIP
[sip.voip.com] >>Nombre que le asignamos al proveedor

type=peer >>Lo vamos a utilizar solo para llamadas salientes (peer)


host=sip.voip.com >>El nombre del host del proveedor
fromdomain=sip.voip.com >>Dominio del proveedor
fromuser=fulano >>Los dato que nos pide el proveedor para conectarnos (usuario y
contrasea)
context=from-voip >>El contexto de utilizar en extensions.conf para las
llamadas entrantes
call-limit=2 >>Nmero de canales que brinda el proveedor.
5. Crear las extensiones de los usuarios.
Usted acaba de crear sus primeras cuentas SIP, para que una comunicacin sea viable entre
dichas cuentas usted debe crear las extensiones en el plan de marcado, para ello debe editar el
archivo extensions.conf de la carpeta /etc/asterisk:
#mv extensions.conf extensions.conf.ejemplo
#nano extensions.conf
Answer(): contesta una llamada
Hangup(): cuelga una llamada
Dial(): realiza una llamada saliente
Playback(): reproduce un archivo de sonido
Voicemail(): permite administrar la mensajera de voz y las contestadoras

6. Ingrese a la consola de asterisk mediante el comando: Entre mas (v) mas Verbosidad en al
informacin
#asterisk rvvvvv

Recargue SIP ( sip reload )


Recargue el diaplan ( dialplan reload )
Visualice las aplicaciones ( core show applications)
Visualice detalles de las aplicaciones ( core show application
Nombre_Aplicacin )

VideoLlamada
Para la configuracin es muy simple, ser agregar al fichero sip.conf unas lineas:
[general]
videosupport=yes
allow=g729
allow=h264
allow=h263
allow=h263p

Luego de aadir esto vamos a ingresar al asterisk ( #asterisk -rvvvvv ) y reiniciar los
servicios SIP ( sip reload ) y Dialplan ( dialpaln reload ).
Ahora solo ser abrir la parte de videollamada, realizar la llamada. ( El softphone derecho hace
parte de la maquina real y el de la izquierda hace parte de una maquina virtual ).

Colocar Asterisk en espaol


Gracias a voipnovatos, tenemos unos paquetes en espaol.
1. Desde la consola ingresamos al directorio de asterisk/sounds

2. Descargamos los paquetes


# wget -c http://www.voipnovatos.es/voces/voipnovatos-coresounds-es-alaw-1.4.tar.gz
# wget -c http://www.voipnovatos.es/voces/voipnovatos-coresounds-es-g729-1.4.tar.gz
# wget -c http://www.voipnovatos.es/voces/voipnovatos-coresounds-es-gsm-1.4.tar.gz
# wget -c http://www.voipnovatos.es/voces/voipnovatos-coresounds-es-ulaw-1.4.tar.gz
# wget -c http://www.voipnovatos.es/voces/voipnovatos-extrasounds-es-alaw-1.4.tar.gz
# wget -c http://www.voipnovatos.es/voces/voipnovatos-extrasounds-es-ulaw-1.4.tar.gz

# wget -c http://www.voipnovatos.es/voces/voipnovatos-extrasounds-es-g729-1.4.tar.gz
# wget -c http://www.voipnovatos.es/voces/voipnovatos-extrasounds-es-gsm-1.4.tar.gz
3. Creamos un directorio llamado "es/"
#mkdir es
4. Descomprimimos todos los paquetes en este directorio
#tar -zxvf

Nombre_del_Paquete es/

5. As quedar despus de haber descomprimido todo. (En mi caso solo descargue los bsicos)

6. En los archivos de configuracin como los son SIP.CONF y IAX.CONF, sea el caso,
aadimos esta linea
language=es

7. Por ultimo recargamos el servicio de asterisk


#service asterisk reload

Servicio de Buzn de Voz


Para crear la opcin de buzn de voz, vamos a editar 3 ficheros: voicemail.conf, sip.conf y
extensions.conf
1.Como voicemail.conf nos mostrar una serie de parmetros lo que vamos hacer es
cambiar su nombre por voicemail.conf.original y creamos otro desde el principio.
#mv voicemail.conf voicemail.conf.original
#nano voicemail.conf
Este fichero quedar as:

format >> Es el tipo de formato en que se guardarn y enviarn los mensajes


maxmsg >> Es la cantidad de mensajes que se podrn guardar
maxsec >> Es la cantidad de tiempo (segundos) que dura la grabacin del mensaje
skipms >> Es la cantidad de milisegundos que pasa entre mensajes de opciones
maxsilence >> Es la cantidad de tiempo (segundos) que pasa en silencio luego de decir el
men del buzn de voz.
[contexto]
Nmero de exten => ClaveUsuario, Usuario, EmailUsuario
2. Vamos a editar SIP.CONF, aadimos a los canales la linea mailbox
mailbox=exten_usuario@contexto_del_voicemail.conf

3. En extensions.conf vamos a crear las extensiones de los usuarios y la extensin del men
principal del buzn.
Se aadir la aplicacin del buzn para las extensiones

exten=> extensin,prioridad (n),


VoiceMail(extensin@contexto_del_voicemail.conf)

Incluiremos un contexto llamado aplicaciones


include => aplicaciones
[aplicaciones]
exten => #exten , 1 , aplicacin()
same => n , VoiceMailMain(@default)

4. En el fichero SIP.CONF, vamos a aadir en los canales la linea:


mailbox=#exten@default

5. Ingresamos a la consola de asterisk y reiniciamos los servicios:


sip reload
voicemail reload
dialplan reload
6. Cuando hacemos la llamada y se nos transfiere al buzn; En la consola Asterisk, podemos
ver los mensajes que salen en el audio, ya sea en ingles o espaol, estos se mostraran en la
consola.

Troncales IAX2 con cuentas SIP


Como este tema es un poco complicado, voy a configurar todos los ficheros (SIP.CONF ,
IAX.CONF , EXTENSIONS.CONF)
1. Configuracin de usuarios
///sip.conf///sedeA///
[general]
context=default
disallow=all
allow=ulaw
allow=gsm
allow=g729
language=es
///Si ya hemos instalado los paquetes
[1001]
context=tele
type=friend
host=dynamic
secret=1000
///sip.conf///sedeB///
[general]
context=default

disallow=all
allow=ulaw
allow=gsm
allow=g729
language=es

///Si ya hemos instalado los paquetes

[2001]
context=tele
type=friend
host=dynamic
secret=1000

2. Configuracin de registro
///iax.conf///
La imagen de la derecha es sedeA y la izquierda sedeB

Direcciones correspondientes:
sedeA = 192.168.1.14
sedeB = 192.168.1.12
Los contextos ( [sedeB] y [sedeA] ) son creados con el objetivo de que se identifiquen unos a
otros
3. Configuracin de marcado
///extensions.conf///sedeA///
[general]
static=yes
autofallthroigh=yes
[usuarios]
exten => 1001,1,Dial(SIP/1001,5) ///Si hay mas usuarios en el
sip.conf debern ser aadidos
[telefonos]
include => tel-locales

include => tel-remotos


[tel-locales]
exten => _10XX,1,Dial(SIP/${EXTEN},15)
include => usuarios
[tel-remotos]
exten => _20XX,1,Dial(IAX2/sedeB/${EXTEN},15) ///Por medio de este canal
sern ubicadas las extensiones
[troncalA]
include => tel-locales

///extensions.conf///sedeB///
[general]
static=yes
autofallthroigh=yes
[usuarios]
exten => 2001,1,Dial(SIP/1001,5) ///Si hay mas usuarios en
el sip.conf debern ser aadidos
[telefonos]
include => tel-locales
include => tel-remotos
[tel-locales]
exten => _20XX,1,Dial(SIP/${EXTEN},15)
include => usuarios
[tel-remotos]
exten => _10XX,1,Dial(IAX2/sedeA/${EXTEN},15) ///Por medio de este canal
sern ubicadas las extensiones
[troncalB]
include => tel-locales
4.Reiniciamos las aplicaciones
sip reload
iax2 reload
dialplan reload

Grabar audio para IVRs

Utilizando el mismo fichero del ejemplo anterior, vamos a aadir un contexto


llamado aplicaciones , de la siguiente manera:
.... texto anterior ....
[troncalA]
include => tel-locales
[aplicaciones]
;grabadora
exten => 99,1,Answer()
exten => 99,n,Wait(1)
exten => 99,n,Record(Nombre_audio.Extensin)
exten => 99,n,Wait(2)
exten => 99,n,Playback(Nombre_audio) ///Sin extensin
exten => 99,n,Hangup()
El audio ser guardado en /var/lib/asterisk/sounds/ ,con esta aplicacin podemos
re-grabar utilizando el mismo nombre de audio, o si cambiamos el nombre nos creara otro
archivo de audio

CONCEPTOS BSICOS
Extensiones
Definicin: Una extensin es una marcacin en el teclado de un telfono.

Por ejemplo, un usuario podra marcar 3001 en su telfono, y eso sera una
extensin. Tambin podra marcar un nmero de telfono nacional, como por ejemplo
915881000, y tambin sera una extensin.
Aunque lo normal es que las extensiones sean numricas, no debemos pensar slo
en nmeros, ya que en Asterisk tambin se pueden definir extensiones como texto.
Por ejemplo, pizza sera una extensin vlida.
Un plan de marcado empieza con una coleccin de extensiones a las que se puede
llamar. Esta definicin de extensiones puede ser literal, o puede ser una expresin.
Por ejemplo, si hemos definido las extensiones desde la 3001 hasta la 3009, podemos
definirlas en nuestro dialplan enumerndolas una detrs de otra, de forma literal:

3001
3002
3003
3004
3005
3006
3007
3008
3009

Sin embargo, si todas ellas van a tener la misma coleccin de acciones (en general,
pasar la llamada a la extensin marcada), sera mucho ms cmodo definirlas todas a
la vez con una expresin:

_300X

Las expresiones van precedidas de guin bajo _, que indica que lo que viene a
continuacin es una expresin que puede cuadrar con ms de una extensin. Para
definir expresiones en Asterisk disponemos del siguiente lenguaje:

SMBOLO

SIGNIFICADO

Cualquier cifra de 0 a 9

Cualquier cifra de 1 a 9

SMBOLO

SIGNIFICADO

Cualquier cifra de 2 a 9

[x-y]

Cualquier cifra de "x" a "y"

[xyz]

Las cifras "x", "y" o "z"

Una o ms repeticiones del smbolo anterior

Cero o ms repeticiones del smbolo anterior

En general necesitaremos hacer uso de expresiones para definir las extensiones de


nuestro sistema, ya que hay cosas que no se pueden hacer de forma literal. Por
ejemplo, no podemos definir uno a uno todos los nmeros de telfono posibles de
Espaa. Lo lgico es decir los telfonos mviles en Espaa empiezan por 6 y tienen
9 dgitos en total, y no empezar a enumerar las 1.000.000.000 (mil millones) de
posibilidades existentes. Veamos algunos ejemplos:

SIGNIFICADO

EXPRESIN

Todas las extensiones de 4 cifras

_XXXX

Todas las extensiones de 4 cifras que empiecen por 3

_3XXX

Mviles de Espaa que empiecen por 6

_6XXXXXXXX

Mviles de Espaa que empiecen por 7

_7[1-4]XXXXXXX

SIGNIFICADO

EXPRESIN

Fijos de Espaa que empiezan por 9

_9[1-8]XXXXXXX

Todos los fijos de Espaa

_[8-9][1-8]XXXXXXX

A continuacin veremos cmo se relacionan las extensiones con las acciones,


llamadas aplicaciones en Asterisk.

Aplicaciones (acciones)
Definicin: Las aplicaciones son el conjunto de acciones a ejecutar cuando un usuario
inicia una llamada.
Por ejemplo, supongamos que cuando alguien marque 3001, queremos que suene
el telfono de esa persona. Sera algo as:
Dial(SIP/3001)
Hangup

Dial(SIP/3001)

Hangup

Tambin podramos querer darle un mensaje a la persona que llama antes de pasar la
llamada a destino. Por ejemplo:
Answ er
Wait(1)
Festival('Has marcado la extens
Dial(SIP/3001)
Hangup

Answer

Wait(1)

Festival('Has marcado la extensin 3001')

Dial(SIP/3001)

Hangup

O pasar la llamada slo entre las 10h de la maana y las 20h de la tarde:
ExecIfTime(10:00-20:00,*,*,*?Dia
Hangup

ExecIfTime(10:00-20:00,*,*,*?Dial(SIP/3001))

Hangup

Las aplicaciones ms utilizadas son las siguientes:

APLICACIN

FICHA DESCRIPCIN

Answer

URL Descuelga la llamada entrante

Dial

URL Realiza una llamada saliente

Hangup

URL Termina la llamada en curso

Wait

URL Espera X segundos antes de continuar con la siguiente accin

Festival

URL Utiliza el sintetizador Festival para emitir mensajes de voz

Playback

URL Reproduce un archivo de sonido o vdeo

APLICACIN

FICHA DESCRIPCIN

SayUnixTime URL Dice la fecha y hora actual a la persona llamante

Background

URL Reproduce msica en espera

NoOp

URL

ExecIf

URL Ejecutar la aplicacin indicada si se cumple la condicin dada

ExecIfTime

URL

No realiza ninguna operacin, pero imprime el mensaje indicado


en la consola de Asterisk

Ejecutar la aplicacin indicada si se cumple el requisito de fecha


y hora indicados

En esta pgina web se puede ver un listado completo de aplicaciones de Asterisk


junto con la descripcin y sintaxis de cada una de ellas:
Asterisk Applications

Prioridades
En un lenguaje de scripting, las acciones se van ejecutando de arriba a abajo, en
orden. En cambio, en Asterisk, el orden en el que se ejecutan las acciones debe ser
explcitamente indicado mediante nmeros. As, primero se ejecutar la accin 1,
despus la accin 2, y as sucesivamente.
Es decir, en los ejemplos anteriores no basta con poner las aplicaciones (acciones)
una debajo de la otra. Hay que indicar numricamente el orden, de forma explcita.
Definicin: La prioridad representa el orden en el que se ejecutarn las acciones del
dialplan.
La sintaxis para indicar el orden la veremos a continuacin.

PONIENDO TODO JUNTO


Hemos visto cmo se definen las extensiones mediante expresiones, qu aplicaciones
(acciones) podemos utilizar, y tambin que es necesario especificar de forma explcita
el orden de stas. Cul es la sintaxis de Asterisk para poner todo esto junto?
exten => <extensin>,<prioridad

exten => <extensin>,<prioridad>,<aplicacin>

Por ejemplo, supongamos que cuando alguien marque la extensin 3001, se pase la
llamada slo entre las 10h de la maana y las 20h de la tarde:
exten => 3001,1,ExecIfTime(10:
exten => 3001,2,Hangup

exten => 3001,1,ExecIfTime(10:00-20:00,*,*,*?Dial(SIP/3001))

exten => 3001,2,Hangup

Generalizando el ejemplo anterior, supongamos que queremos el mismo


comportamiento cuando alguien marque cualquier extensin desde la 3001 hasta la
3009. Para esto, lo ms cmodo es utilizar expresiones:
exten => _300X,1,ExecIfTime(10
exten => _300X,2,Hangup

exten => _300X,1,ExecIfTime(10:00-20:00,*,*,*?Dial(SIP/${EXTEN}))

exten => _300X,2,Hangup

Fijaos que en este caso hemos utilizado la variable ${EXTEN} dentro de la llamada a
Dial() para que se lance la llamada a quien corresponda. La variable ${EXTEN} es una

de las variables bsicas que utilizaremos, y que contiene la extensin marcada por la
persona llamante.

PONIENDO TODO JUNTO: VARIANTES


En Poniendo todo junto hemos visto la sintaxis bsica del dialplan de Asterisk. Sin
embargo, a la larga es una sintaxis muy engorrosa de mantener. El problema es que
hay que repetir la expresin en cada lnea, y hay que indicar la prioridad de ejecucin
cuando lo normal es que las acciones se ejecuten de arriba a abajo.
Supongamos este dialplan de ejemplo, donde la expresin cuadra con todos los fijos
nacionales de Espaa en formato internacional:
exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX

exten => _0034[8-9][1-8]XXXXXXX,1,NoOp(Dialplan de ejemplo)

exten => _0034[8-9][1-8]XXXXXXX,2,Answer

exten => _0034[8-9][1-8]XXXXXXX,3,Wait(2)

exten => _0034[8-9][1-8]XXXXXXX,4,Dial(SIP/3001)

exten => _0034[8-9][1-8]XXXXXXX,5,Hangup

Si quisiramos introducir una nueva aplicacin entre Wait() y Dial(), nos obligara a
actualizar los nmeros de prioridad de todas las aplicaciones que vienen debajo. Si el
dialplan fuese mucho ms largo, digamos 50 acciones en lugar de 5, imaginaos el
engorro que puede suponer esto.
Una solucin mejor es indicar que las aplicaciones se ejecuten de forma consecutiva,
de arriba a abajo. Para esto, podemos utilizar la prioridad n, que indica next. De
esta forma, podemos introducir nuevas aplicaciones en mitad de un dialplan sin tener
que actualizar los nmeros de prioridad. Slo tenemos que indicar cul es la prioridad
1, y utilizar prioridad n para el resto:

exten => _0034[8-9][1-8]XXXXX


exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX
exten => _0034[8-9][1-8]XXXXX

exten => _0034[8-9][1-8]XXXXXXX,1,NoOp(Dialplan de ejemplo)

exten => _0034[8-9][1-8]XXXXXXX,n,Answer

exten => _0034[8-9][1-8]XXXXXXX,n,Wait(2)

exten => _0034[8-9][1-8]XXXXXXX,n,Dial(SIP/3001)

exten => _0034[8-9][1-8]XXXXXXX,n,Hangup

Por otro lado, cambiar la expresin de las extensiones a las que se hacen referencia
tambin resulta un engorro, ya que la expresin aparece en cada una de las lneas del
dialplan. Si quisieramos que el segundo dgito admitiera cero para poder llamar a
nmeros 902 XXX XXX, tendramos que modificar cada una de las lneas de este
dialplan. Sin embargo, hay otra sintaxis que permite definir la expresin slo una vez,
e indicar en las siguientes lneas que se trata de la misma extensin:
exten => _0034[8-9][0-8]XXXXX
same => n,Answ er
same => n,Wait(2)
same => n,Dial(SIP/3001)
same => n,Hangup

exten => _0034[8-9][0-8]XXXXXXX,1,NoOp(Dialplan de ejemplo)

same => n,Answer

same => n,Wait(2)

same => n,Dial(SIP/3001)

same => n,Hangup

Esta ltima sintaxis es la que utilizaremos en el presente curso a partir de ahora, ya


que es la ms cmoda y compacta de todas las posibles.

CONTEXTOS
Ya hemos visto cmo se definen las extensiones de marcacin y las acciones
asociadas a ellas. Segn lo estudiado hasta ahora, todos los usuarios tienen las
mismas libertades. Ya que no todos los usuarios son iguales, necesitamos algn

mecanismo que nos permita variar el comportamiento del sistema en funcin del
mismo. Eso son los contextos.
Cuando definimos un usuario en sip.conf le asignamos un contexto. Cuando ese
usuario inicia una llamada, se utiliza ese contexto del dialplan para ver qu
extensiones tiene accesibles y qu acciones debe realizar el sistema.
Definicin: Los contextos representan la unidad de organizacin ms bsica del
dialplan de Asterisk. Un contexto engloba extensiones y acciones. Se utiliza para
aumentar la seguridad del sistema, y para ofrecer servicios diferenciados en funcin
del usuario.
Un contexto se define de la siguiente manera:
[contexto1]
exten => <extensin>,<prioridad
[contexto2]
exten => <extensin>,<prioridad

[contexto1]

exten => <extensin>,<prioridad>,<aplicacin>

3
4

[contexto2]

exten => <extensin>,<prioridad>,<aplicacin>

EJEMPLO COMPLETO
Supongamos un hotel con una recepcin y tres habitaciones que cumple lo siguiente:

Para llamar a la recepcin hay que marcar 0


Para llamar a las habitaciones hay que marcar el nmero de habitacin: 101,
102 o 103
La recepcionista puede llamar a cualquier habitacin
Los huspedes slo pueden llamar a recepcin (no pueden llamar a otras
habitaciones)

/etc/asterisk/sip.conf

[general]
udpbindaddr=0.0.0.0:5060
context=default
srvlookup=yes
allow guest=no

[general]

udpbindaddr=0.0.0.0:5060

context=default

srvlookup=yes

allowguest=no

alwaysauthreject=yes

7
8

; Recepcin

[0]

10

type=peer

11

host=dynamic

12

username=recepcion

13

secret=passwordrecepcion

14

context=contexto-recepcion

15
16

; Habitacin 101

17

[101]

18

type=peer

19

host=dynamic

20

username=room101

21

secret=password101

22

context=contexto-habitaciones

23
24

; Habitacin 102

25

[102]

26

type=peer

27

host=dynamic

28

username=room102

29

secret=password102

30

context=contexto-habitaciones

31
32

; Habitacin 103

33

[103]

34

type=peer

35

host=dynamic

36

username=room103

37

secret=password103

38

context=contexto-habitaciones

/etc/asterisk/extensions.conf
[general]
; Recibe lo que no tiene un cont
; Rechaza todo por seguridad.
exten => _X.,1,Hangup(21)
exten => s,1,Hangup(21)

[general]

; Recibe lo que no tiene un contexto propio definido.

; Rechaza todo por seguridad.

exten => _X.,1,Hangup(21)

exten => s,1,Hangup(21)

6
7

[contexto-recepcion]

; Desde recepcin se puede llamar a las habitaciones "101", "102" y "103"

exten => _10[1-3],1,Dial(SIP/${EXTEN})

10

same => n,Hangup

11
12

[contexto-habitaciones]

13

; Desde las habitaciones slo se puede llamar a recepcin "0"

14

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

15

same => n,Hangup

Potrebbero piacerti anche