Académique Documents
Professionnel Documents
Culture Documents
Laboratorios
Certificación Elastix
Elastix Certified Engineer
labs
representación de software presentado en este documento, sin el permiso expreso y por
escrito de PaloSanto Solutions está estrictamente prohibido. PaloSanto Solutions, Elastix y
el logo de Elastix son propiedad de Megatelcon S.A. Otras marcas, servicios y nombres de
negocios pertenecen a sus respectivas compañías.
CAP - 1
Instalación de Elastix
Laboratorio 1.1
Descripción: En este laboratorio prepararemos una máquina virtual en el software VM VirtualBox para la
instalación de Elastix.
Instrucciones
Ejecutar VM VirtualBox.
labs
CAP - 1
Veremos la pantalla de bienvenida de VirtualBox para configurar una nueva máquina virtual.
Hacemos clic en “Next / Siguiente”.
labs
CAP - 1
En memoria seleccionaremos como memoria RAM asignada 512 MB. Este valor será utilizado para efectos
de este curso, el usuario puede dependiendo el caso poner mayor memoria si es necesario. Como estamos
utilizando una máquina virtual debemos recordar que la memoria que tendrá este servicio disminuirá la
memoria de nuestro equipo limitando el funcionamiento de otros programas o servicios. Hacemos clic en
“Next / Siguiente” para continuar.
En el espacio de disco VM VirtualBox sugiere por defecto asignar 8 GB, Seleccionamos “Create a
new hard disk / Crear un disco nuevo” y continuaremos haciendo clic en “Next / Siguiente”.
labs
CAP - 1
Se abrirá un wizard de creación de disco, hacemos clic en “Next / Siguiente” para continuar.
En esta pantalla nos indica el tamaño que tendrá el disco, para efectos de este curso dejaremos el
valor por defecto 8.00 GB. Hacemos clic en “Next / Siguiente” para continuar.
labs
CAP - 1
Antes de crear el disco observaremos un sumario con la información de la ruta de nuestra máquina y
el tamaño de disco. Si todo está correcto debemos hacer clic en “Finish / Finalizar” e iniciará el
proceso de creación de la unidad de almacenamiento de nuestra máquina virtual.
labs
Hacemos clic en “Finish / Finalizar” y habremos finalizado el proceso y podremos continuar con la
siguiente práctica.
CAP - 1
Instalación de Elastix
Laboratorio 1.2
Descripción En este laboratorio instalaremos Elastix en la máquina virtual que creamos en el laboratorio
anterior.
Nota: En una instalación real para producción el proceso de instalación formateará todo el disco duro. Por
este motivo utilizamos una máquina virtual o una máquina dedicada para este curso.
Instrucciones:
Antes de Iniciar la instalación de Elastix debemos configurar el adaptador de red de nuestra máquina virtual,
Hacemos clic en “Settings / Configuración” y seleccionaremos “Network”. Una vez en network
seleccionaremos “Bridged Adapter” en la opción “Attached to” y el dispositivo de hardware con el cual
realizaremos el enlace de red en el aula.
labs
CAP - 1
Ejecutamos VM VirtualBox y observaremos que se creó la máquina virtual que preparamos en el
laboratorio anterior. Esta máquina aun no tiene instalado Elastix, para ello hacemos clic en “Start”. Es
importante tener en nuestra máquina la ISO que utilizaremos para la instalación antes de iniciar este
proceso. Consulte acerca de una distribución estable de Elastix al coordinador de este curso.
Una vez que arrancamos la máquina virtual un wizard se activará para ayudarnos en la selección de
la ISO que debemos agregar. Hacemos clic en “Next / Siguiente”.
labs
CAP - 1
En la siguiente pantalla debemos hacer clic en la carpeta con para adicionar la ISO que utilizaremos.
Una vez que hayamos seleccionado la ISO debemos hacer clic en “Next / Siguiente”.
labs
CAP - 1
Inmediatamente aparecerá la pantalla de inicio de Elastix, para iniciar la instalación presionaremos
Enter en nuestro teclado para dar inicio a este proceso.
El primer paso en el proceso es la selección del idioma, escogemos “Spanish” y presionamos la barra
espaciadora para avanzar en el proceso.
Nota: Durante este proceso no podremos utilizar el ratón, por lo cual debemos usarlas teclas Tab, Barra
Espaciadora y ↑↓→←.
labs
CAP - 1
En el siguiente paso debemos seleccionar el idioma del teclado, una vez seleccionado presionamos
barra espaciadora para colocarnos sobre la opción “Aceptar” y volvemos a presionar la barra para
continuar al siguiente paso.
Nota: para teclado en inglés que requiera ser utilizado en español, es útil seleccionar la opción “us-
acentos”, como se muestra en la imagen.
En el siguiente paso seleccionar la partición donde se instalará Elastix, como es la primera vez que
realizamos este proceso seleccionaremos “Si”.
labs
CAP - 1
En el siguiente paso seleccionaremos la partición en la cual instalaremos Elastix. Debido a que solo
existe una partición en este proceso la seleccionaremos, sin embargo en caso de existir más
particiones, estas saldrán listadas y podremos seleccionar cualquiera de las requeridas.
Elastix formatea la partición en la cual es instalado durante este proceso, en el siguiente mensaje
confirmaremos esta acción y presionaremos la barra espaciadora sobre “Si”.
labs
CAP - 1
En el siguiente paso nos el proceso nos consultará si deseamos modificar la capa de particiones,
seleccionaremos “No” y presionaremos la barra espaciadora.
labs
CAP - 1
En el siguiente paso seleccionaremos “Activar al inicio” y el soporte para IPv4. Seleccionaremos
soporte a IPv6, en caso de que fuera requerido. Para efectos de este curso no será requerido.
Aceptamos y continuamos.
Inmediatamente obtendremos el paso para configurar nuestro enlace de red. Para efectos de este
ejemplo seleccionaremos “Configuración de IP dinámica (DHCP)” o pueden consultar al coordinador
de este curso acerca de IPs estáticas disponibles. Es siempre recomendable colocar una IP estática,
si es necesario hacer cambios estos pueden ser realizados en la interfaz de administración de Elastix
o vía consola.
labs
CAP - 1
En el siguiente paso seleccionaremos el nombre del host de nuestro equipo. Para efectos de este
ejercicio seleccionaremos la opción “manualmente” y colocaremos el siguiente host:
nombre.ex.elastix.org,en donde “nombre” será nuestro apellido. Una vez hecho esto seleccionaremos
“Aceptar” y presionaremos la barra espaciadora.
En el siguiente paso seleccionaremos el huso horario en que nos encontramos. Una vez que
encontremos el adecuado lo seleccionaremos e iremos a “Aceptar” donde presionaremos la barra
espaciadora.
labs
CAP - 1
En el siguiente paso seleccionaremos la contraseña del usuario “root”. Para efectos de este ejemplo
colocaremos como clave “palosanto”, Una vez colocada la contraseña y su confirmación,
seleccionaremos “Aceptar y presionaremos barra espaciadora.
Nota: En versiones anteriores a Elastix 2.0, la contraseña por defecto era “palosanto”, a partir de esta
versión el usuario es obligado a escoger la contraseña de tal manera que descarte un riesgo de seguridad
por esta razón. Más adelante revisaremos como realizar un cambio en caso de ser requerido.
Una vez que seleccionamos la contraseña y aceptamos inicia el proceso de instalación, mas adelante
el proceso nos consultará las contraseñas para la base de datos MySQL y para el usuario “admin” de
la interfaz Web.
labs
CAP - 1
Al finalizar el proceso seremos consultados sobre la contraseña para el usuario “root” de la base de
datos MySQL. Para este efecto colocaremos “palosanto” y seleccionaremos “Aceptar”. En el siguiente
paso debemos confirmar la contraseña, pondremos nuevamente “palosanto” y continuaremos. Nota:
En versiones anteriores a Elastix 2.0, la contraseña por defecto era “palosanto”, a partir de esta
versión el usuario es obligado a escoger la contraseña de tal manera que descarte un riesgo de
seguridad por esta razón. Más adelante revisaremos como realizar un cambio en caso de ser
requerido.
En el siguiente paso debemos ingresar la contraseña del usuario “admin” para los siguientes
servicios: Interfaz Web de Elastix, FreePBX, Vtiger y A2Billing. Para este efecto colocaremos
“palosanto” y seleccionaremos “Aceptar”. En el siguiente paso debemos confirmar la contraseña,
pondremos nuevamente “palosanto” y continuaremos. Nota: La selección de la contraseña
“palosanto” en este ejemplo, para todos los usuarios administrativos se realiza con el objeto de
facilitar al estudiante el acceso a todos los servicios hasta que domine cada uno de ellos. En el
capítulo de seguridad indicaremos la manera apropiada de realizar los cambios de cada contraseña.
labs
CAP - 1
Una vez concluida la instalación se iniciará Elastix y obtendremos la ventana de ingreso, debemos hacer
login con el usuario root, para lo cual colocaremos “root” y presionaremos enter. La contraseña que
debemos ingresar es la que ya definimos anteriormente, “palosanto”.
La ventana nos indica la dirección IP a la que podemos acceder para ingresar a la interfaz Web (en
este ejemplo http://192.168.1.102). Para efectos de confirmación, abriremos un browser y
colocaremos la IP asignada. Es muy probable que su navegador web le de un mensaje de error de
seguridad. Se debe aceptar el certificado digital para la conexión segura.
labs
CAP - 1
Una vez aceptado el certificado digital estaremos listos para ingresar a la interfaz web de Elastix con
el usuario “admin” y la contraseña palosanto.
Dashboard de Elastix
labs
CAP - 2
Linux para Administradores Elastix
Laboratorio 2.1
Instrucciones:
ls
ls -l
ls -l /etc
pwd
mkdir /tmp/pruebas
cd /tmp
cd ..
man ls
Nota: para salir de la ayuda del comando man debemos presionar la letra “q”
labs
Cree los usuarios tux1 y tux2
adduser tux1
passwd tux1
adduser tux2
passwd tux2
mkdir /home/tux1/privado
CAP - 2
chmod 700 privado
Trate de ingresar a /home/tux1/privado como usuario tux2. (no debería poder entrar)
cd /home/tux1/privado
Descargamos un paquete del Internet con el comando “wget”, con este comando podemos
descargar cualquier archivo al directorio en que nos encontramos actualmente.
cd /usr/src
wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.7/os/i386/CentOS/nano-1.3.12-1.1.i386.rpm
Ahora verificamos todos los paquetes instalados en el sistema que contengan la palabra
nano para darnos cuenta de si se ha instalado.
rpm -q nano
Una vez instalado el paquete nano procedemos a copiar un archivo hacia otra localidad
mediante un túnel SSH. Para esto vamos a necesitar la dirección IP de nuestro compañero
de curso más próximo. Adicional a esto también vamos a necesitar su contraseña de root
para poder copiar el archivo.
labs
yum install screen
CAP - 4
Configuración básica de Elastix
Laboratorio 4.1
Descripción: En este laboratorio haremos la configuración básica de nuestra central, se configurará la red
con una IP estática, se creará una extensión SIP y se probará la misma
Instrucciones:
Elastix por defecto se configura con IP dinámico a través de DHCP, lo más probable es que tengamos
que asignar una IP estática a nuestra central. Para esto ingresamos a la central y nos vamos al menú
System -> Network. Una vez ahí seleccionamos la interfaz de red que queremos configurar (ej. Ethernet
0). Obtendremos la siguiente pantalla:
Es muy probable que debamos cambiar la configuración de HOST, DNS y GATEWAY. Para hacer esto
nos vamos al menú de Elastix SYSTEM -> NETWORK -> EDIT NETWORK PARAMETERS. Una vez
modificado los parámetros necesarios guardamos los cambios.
Lo siguiente que haremos es crear una extensión para poder probar nuestra configuración. Para esto nos
vamos al menú de Elastix PBX y creamos una extensión SIP.
labs
CAP - 4
Ahora configuramos una extensión con la configuración básica. Para este ejemplo hemos creado la
extensión 200 con el nombre “Usuario de Pruebas” y la contraseña “secreto123”.
Para este ejercicio utilizaremos ZOIPER que es un softphone libre disponible para Windows y Linux. Algo
similar debería hacer usted para configurar un teléfono IP u otro softphone. Para más información visite
(http://www.zoiper.com/).
La primera vez que ejecutemos ZOIPER nos aparecerá una pantalla similar a la siguiente.
labs
CAP - 4
Para seguir con la configuración pulsamos el botón de opciones.
El siguiente paso es crear la extensión, para esto pulsamos Add New SIP Account y le ponemos un
nombre a la extensión que se va a crear.
labs
CAP - 4
Luego agregamos la dirección IP del servidor Elastix que se está usando, el número de la extensión, una
clave y un identificador.
labs
CAP - 4
Ahora probamos marcando al número *43 y hacer una prueba de eco con nuestra central como se puede
ver en la imagen.
labs
CAP - 4
Configuración básica de Elastix
Laboratorio 4.2
Descripción: En este laboratorio se harán configuraciones adicionales a Elastix como son salas de
conferencias y colas. Es importante para este laboratorio tener 3 o más extensiones configuradas en
nuestro equipo de prueba.
Instrucciones:
Crearemos una cola de atención que timbrará a las extensiones 200, 201 y 202 cuando se marque la
extensión 203. Para esto ingresamos al menú de Elastix PBX -> QUEUE.
labs
CAP - 4
Crearemos una sala de conferencia con el número 300 donde al llamar a este número 3 o más personas
podrán hablar a la vez. Para esto nos vamos al menú de Elastix PBX -> CONFERENCE.
Ahora intente llamar a esta conferencia desde varios teléfonos y podrán hablar varias personas
simultáneamente.
labs
CAP - 6
Asterisk
Laboratorio 6.1
Instrucciones:
Grabar y Salir.
Crear el archivo extensions_custom_XXXXX.conf
Grabar y Salir.
Cambiarle los permisos y propietario al archivo extensions_custom_XXXXX.conf
Recargar asterisk:
labs
CAP - 6
Asterisk
Laboratorio 6.2
Descripción: Crear un plan de marcado para llamar a las extensiones 502, 503 y hacer una marcación hacia
una red PSTN.
Objetivo: Entender el funcionamiento de una plan de marcado, familiarizarse con los archivos de
configuración y practicar la sintaxis de la gramática de un plan de marcado.
Instrucciones:
[custom-lab6-2]
exten=> 502,1,Dial(SIP/502)
exten=> 503,1,Dial(SIP/503)
exten=> 9,1,Dial(ZAP/g0,20,r)
Grabar y Salir.
Incluir el contexto [custom-lab6-2] dentro del contexto [from-internal-custom] ubicado en el archivo
/etc/asterisk/extensions_custom.conf
Recargar asterisk:
labs
CAP - 6
Asterisk
Laboratorio 6.3
Descripción: Crear un contexto que implemente la grabación de un audio usando como extensión el número
5678 y las funciones Record y Playback.
Instrucciones:
[custom-lab6-3]
exten => 5678,1,Wait(2)
exten => 5678,2,Record(custom/bienvenidocurso:gsm,0)
exten => 5678,3,Wait(2)
exten => 5678,4,Playback(custom/bienvenidocurso)
exten => 5678,5,Wait(2)
exten => 5678,6,Hangup
Grabar y Salir.
Incluir el contexto creado dentro del contexto [from-internal-custom] ubicado en el archivo
/etc/asterisk/extensions_custom.conf
Recargar asterisk:
labs
CAP - 6
Asterisk
Laboratorio 6.4
Capítulo: Asterisk
Descripción: Crear un contexto que implemente un mini IVR de 2 opciones en donde cada opción dirija la
llamada a una extensión. Para implementar esto usaremos la aplicación Background().
Objetivo: Familiarizarse con la creación de contextos y las aplicaciones Background(), WaitExten() y Dial().
Instrucciones:
[custom-lab6-4]
exten => 3998,1,Background(custom/bienvenidocurso)
exten => 3998,n,WaitExten(10)
exten => 1,1,Dial(SIP/501)
exten => 2,1,Dial(SIP/502)
Grabar y Salir.
Incluir el contexto creado dentro del contexto [from-internal-custom] ubicado en el archivo
/etc/asterisk/extensions_custom.conf
Recargar asterisk:
labs
CAP - 6
Asterisk
Laboratorio 6.5
Descripción: Crear un contexto que implemente un IVR de 3 opciones en donde la primera opción sea
marcar a una extensión, la segunda opción reproducir un audio y la tercera opción marcar a dos
extensiones simultáneamente.
Instrucciones:
[custom-lab6-5]
exten => 3999,1n,Answer
exten => 3999,n,Wait(1)
exten => 3999,n,Set(TIMEOUT(digit)=3)
exten => 3999,n,Set(TIMEOUT(response)=10)
exten => 3999,n,Background(custom/bienvenidocurso)
exten => 3999,n,WaitExten()
exten => hang,1,Playback(vm-goodbye)
exten => hang,n,Hangup
exten => 1,1,Dial(SIP/503)
exten => 1,n,Hangup()
exten => 2,1,Playback(custom/hoyeslaborable)
exten => 2,n,Hangup()
exten => 3,1,Dial(SIP/501&SIP/503)
exten => 3,n,Hangup()
exten => i,1,Playback(invalid)
exten => i,n,Hangup()
exten => t,1,Hangup()
labs
CAP - 6
Asterisk
Laboratorio 6.6
Descripción: Crear el contexto del laboratorio anterior pero usando las aplicación Goto().
Instrucciones:
[custom-lab8-6]
exten => 4000,1,Answer
exten => 4000,n,Wait(1)
exten => 4000,n,Set(TIMEOUT(digit)=3)
exten => 4000,n,Set(TIMEOUT(response)=10)
exten => 4000,n,Background(custom/bienvenidocurso)
exten => 4000,n,WaitExten(,)
exten => hang,1,Playback(vm-goodbye)
exten => hang,n,Hangup
exten => 1,1,Goto(ext-503,s,1)
exten => 2,1,Goto(toca-audio,s,1)
exten => 3,1,Goto(ext-doble,s,1)
exten => i,1,Playback(invalid)
exten => i,n,Hangup()
exten => t,1,Hangup()
[ext-503]
exten => s,1,Dial(SIP/503)
exten => s,n,Hangup()
[toca-audio]
exten => s,1,Playback(custom/hoyeslaborable)
exten => s,n,Hangup()
[ext-doble]
exten => s,1,Dial(SIP/501&SIP/503)
exten => s,n,Hangup()
labs
[root@elastix opt]# asterisk -rx “reload”
CAP - 6
Asterisk
Laboratorio 6.7
Descripción: Crear un contexto que solicite una autenticación antes de marcar una extensión usando la
aplicación Authenticate().
Instrucciones:
[custom-lab6-7]
exten => 4001,1,Answer
exten => 4001,n,Wait(1)
exten => 4001,n,Authenticate(1234)
exten => 4001,n,Dial(SIP/503)
exten => 4001,n,Hangup()
labs
CAP - 6
Asterisk
Laboratorio 6.8
Descripción: Crear un contexto que requiera autenticación antes de dar tono de marcado por medio de la
aplicación DISA.
Instrucciones:
[custom-lab6-8]
exten => 4002,1,Answer
exten => 4002,n,Wait(1)
exten => 4002,n,Authenticate(1234)
exten => 4002,n,DISA(no-password,from-internal)
exten => 4002,n,Hangup()
labs
CAP - 6
Asterisk
Laboratorio 6.9
Descripción: Crear un contexto que solicite una extensión y luego reproduzca la extensión ingresada usando
la aplicación SayDigits().
Instrucciones:
[custom-lab6-9]
exten => 4003,1,Answer
exten => 4003,n,Set(CHANNEL(language)=es)
exten => 4003,n,Background(custom/ingrese4digitos)
exten => 4003,n,WaitExten(10)
exten => _X.,1,SayDigits(${EXTEN})
exten => _X.,n,Hangup()
labs
CAP - 6
Asterisk
Laboratorio 6.10
Descripción: Crear un contexto que solicite un número y luego reproduzca el número ingresado usando la
aplicación SayNumber().
Instrucciones:
[custom-lab6-10]
exten => 4004,1,Answer
exten => 4004,n,Set(CHANNEL(language)=es)
exten => 4004,n,Background(custom/ingresenumero)
exten => 4004,n,WaitExten(10)
exten => _X.,1,SayNumber(${EXTEN})
exten => _X.,n,Hangup()
labs
CAP - 6
Asterisk
Laboratorio 6.11
Descripción: Crear un contexto que solicite una extensión y luego deletree su nombre usando la aplicación
SayAlpha().
Instrucciones:
[custom-lab6-11]
exten => 4005,1,Answer
exten => 4005,n,Set(CHANNEL(language)=es)
exten => 4005,n,SayAlpha(Alfredo)
exten => 4005,n,Hangup()
labs
CAP - 6
Asterisk
Laboratorio 6.12
Descripción: Crear un contexto que solicite una extensión a espiar y luego intervenga una conversación
actual usando la aplicación ChanSpy().
Instrucciones:
[custom-lab6-12]
exten => 4006,1,Read(puerto,conf-getchannel,4)
exten => 4006,n,ChanSpy(SIP/${puerto})
exten => 4006,n,Hangup
labs
CAP - 6
Asterisk
Laboratorio 6.13
Descripción: Realizar una llamada desde la consola de Asterisk usando el módulo chan_oss.so y el
comando dial.
Objetivo: Familiarizarse con la consola de Asterisk y usar el módulo chan_oss.so como herramienta de
testeo.
Instrucciones:
labs
CAP - 7
Configuración de Hardware
Laboratorio 7.1
Descripción: Se configurará una tarjeta análoga y una digital a través de la interfaz web de Elastix.
Instrucciones
• Ahora desmontar la tarjeta de la ranura PCI y coloca una tarjeta E1/T1 y seguir los pasos anteriores,
pero seleccionando la opción: “Detección de hardware ISDN”.
labs
CAP - 8
Tarifación y Reportación en Elastix
Laboratorio 8.1
Descripción:
Crear una tarifa de $0.15 para el uso de la troncal DAHDI/Zap/g0 con un valor de conexión de $0.01. Hacer
una llamada por la troncal y verificar los datos registrados en el reporte de tarifación.
Objetivo:
Familiarizarse con el uso del módulo de Tarifación de Elastix.
Instrucciones:
labs
Realizar una llamada por la troncal DAHDI/Zap/g0
CAP - 8
Verificar en el Reporte de Facturación el valor facturado.
labs
CAP - 10
Interconexión con Elastix Remotos
Laboratorio 10.1
Descripción: Interconectar dos centrales Elastix en la que se podrán comunicar extensiones de la central A
con las extensiones de la central B
Instrucciones:
Esquema
Logonearse en la interface Elastix, ir al menú de Elastix PBX -> TRUNK para crear una troncal tipo SIP.
Definimos el nombre de la troncal el cual en nuestro caso servirá de username para el proceso de
registro. A la troncal de la central A le llamaremos elastixA y la troncal de la central B le llamaremos
elastixB y definimos los detalles del peer como :
host=dynamic
secret=welcome
trunk=yes
type=friend
Configuración que se repite en ambos Elastix. Como se ve hemos definido como “secret” la palabra
“welcome”.
labs
Definimos el register string con sigue:
elastixB:welcome@192.168.1.240
elastixA:welcome@192.168.1.239
CAP - 10
Verificamos en el Asterisk si se encuentran registradas las troncales mediante el comando: sip show
registry y deberíamos ver algo como esto:
El siguiente paso es definir los detalles del user, es decir en donde se quiere terminar la llamada. En este
caso queremos que sea accesible a la extensiones local, bastará con colocar el contexto primario.
context=from-internal
host=192.168.1.240
insecure=very
type=friend
2|XXX.
Luego escogemos porque troncal debe irse la llamada en este caso escogemos por la troncal
sip/elastixA. Lo mismo aplica para la central B.
labs
CAP - 10
Interconexión con Elastix Remotos
Laboratorio 10.2
Descripción: Interconectar la central Elastix con el proveedor de llamadas internacionales Net2Phone y
realizar llamadas hacia otros países.
Instrucciones:
Esquema
labs
Si la pantalla de su módulo VoIP Provider no es igual a la mostrada, es necesario que realice una actualización a su sistema
Elastix.Como usuario root dentro del shell de Linux ejecute: yum update –y elastix-pbx
CAP - 10
Ingresando los siguientes datos:
Creamos la ruta saliente con nombre INTERNACIONAL y definimos el patrón de marcado, en este caso
usaremos el siguiente patrón de marcado:
00.
En tercer lugar escogemos por cual troncal debe irse la llamada en este caso escogemos por la troncal
SIP/VP-N2P
labs
CAP - 11
Calidad de Voz
Laboratorio 11.1
Descripción:
Calcular el parámetro R del modelo E usando la fórmula simplificado y la tabla de pérdida de paquete para
la red del laboratorio y obtener el respectivo valor de la escala MOS. Usar el codec g.711.
Objetivo:
Entender y dominar el uso de las fórmulas que nos permiten determinar la calidad de voz de una manera
objetiva.
Instrucciones:
Determinar el retardo de un punto de un punto específico de la red usando el comando PING como se
muestra en el gráfico.
Calcular el valor de Ie de acuerdo a la tabla con un valor de porcentaje paquetes perdidos igual al 0%. En
este caso el valor es 0.
labs
Ie = 0
Packet Loss % G.711 G.723.1 G.729A
0 0 11 15
1 3 15 18
2 5 18 20
4 7 20 25
8 9 22 28
16 20 24 30
CAP - 11
Calcular el valor de Id con la fórmula respectiva reemplazando el valor de retardo, en este caso 2.70 ms.
R = 94.2 – 0.0648 - 0
R = 94.1352
labs
CAP - 12
Protocolos SIP / IAX / RTP
Laboratorio 12.1
Descripción:
Usar la herramienta Wireshark para capturar la conversación entre su extensión y la de otro compañero del
curso y obtener el gráfico de intercambio de eventos y métodos de dicha conversación.
Objetivo:
Ver de manera gráfico el intercambio de métodos de una conversación e identificar los eventos de
contestación, colgado de una llamada, etc.
Instrucciones:
“tcpdump -i any -s 1500 -w capturaXX.pcap”. debe ser con extensión pcap ya que la reconoce
Wireshark
· Al momento de ejecutar el comando anterior el equipo captura paquetes de todas las interfaces.
labs
CAP - 12
Ingresamos la menú “Statistics” y hacemos click en la opción “Graph Flow” y veremos lo siguiente:
Identifiquemos los métodos y eventos que se intercambian entre los dispositivos y la central Elastix. En la
parte superior del gráfico se indica el flujo de dicho intercambio.
Para revisar estadísticas ir la menú “Statistics” y hacer click en la opción “SIP”. Veremos algo como
sigue:
labs
CAP - 12
labs
CAP - 12
Protocolos SIP / IAX / RTP
Laboratorio 12.2
Descripción:
Usar la herramienta wireshark para capturar la conversación entre su extensión y la de otro compañero del
curso y analizar los paquetes RTP, generar un archivo (.au) y reproducir el payload de los paquetes que
forman esa conversación.
Objetivo:
Adiestrar al estudiante al uso de sniffers para analizar tráfico RTP y generar y reproducir el payload de una
captura de paquetes.
Instrucciones:
Con la captura realizada de la práctica anterior, seleccionar el primer paquete RTP de dicha captura.
En el menú “Statistics” escoger la opción “RTP” y luego seleccionar la opción “Stream Analysis”. Veremos
lo siguiente:
labs
CAP - 12
Luego hacer click en el botón Payload y escoger el formato (.au) y en la opción Channels escoger (both).
Colocar como nombre de archivo payload1.au
labs
CAP - 13
Diagnóstico Básico
Laboratorio 13.1
Descripción: Ingresar a la consola de Asterisk y ejecutar los comandos “?”, “help”.
Objetivo: Familiarizarse con el uso de la consola de Asterisk CLI, utilización de ciertos comandos básicos.
Instrucciones:
labs
ael set debug {read|tokens|mac Enable AEL debugging flags
agent logoff Sets an agent offline
agent show Show status of agents
agent show online Show all online agents
agi dump html Dumps a list of AGI commands in HTML format
agi exec Add AGI command to a channel in Async AGI
agi set debug [on|off] Enable/Disable AGI debugging
agi show commands [topic] List AGI commands or specific help
.
.
.
CAP - 13
Diagnóstico Básico
Laboratorio 13.2
Descripción: Ingresar a la consola de Asterisk y ejecutar los comandos “queue show”, “features show”,
“uptime show”, “core show version”, “show codecs”.
Objetivo: Familiarizarse con el uso de la consola de Asterisk CLI y con los comandos arriba mencionados.
Además entender la salida de dichos comandos y su utilidad.
Instrucciones:
Feature Groups:
---------------
(none)
labs
Parking context : parkedcalls
Parked call extensions: 701-750
CAP - 13
• Digitar el comando “core show version”
labs
CAP - 14
Asterisk AGI
Laboratorio 14.1
Descripción: Crear un agi que consulte una la tabla cedula y que mediante el ingreso de un código, este
retorne y reproduzca el número de cédula asociado, dígito a dígito. Es necesario grabar los audios que
solicitan el ingreso del código y un mensaje de despedida que “gracias por su consulta”.
Objetivo: Practicar la creación de AGI, familiarizarse con las funciones STREAM FILE, GET DATA, SAY
DIGITS e implementar una consulta básica a una base de datos.
Instrucciones:
[from-internal-custom]
include => custom-agi
[custom-agi]
exten => 123,1,Answer()
exten => 123,2,AGI(agi-test.agi)
exten => 123,3,Hangup()
Recargar asterisk
labs
[Sigue en la siguiente página]
CAP - 14
Construir el AGI en PHP usando su editor preferido (vi) y ubicarlo en la carpeta /var/lib/asterisk/agi-bin.
#!/usr/bin/php -q
<?php
dl('sqlite3.so');
require_once 'DB.php';
set_time_limit(60);
ob_implicit_flush(false);
error_reporting(0);
$stdin = fopen( 'php://stdin', 'r' );
$stdout = fopen( 'php://stdout', 'w' );
while (!feof($stdin)) {
$temp=fgets($stdin);
$temp=str_replace("\n", "", $temp);
$s=explode(":",$temp);
$agivar[$s[0]]=trim($s[1]);
if (($temp=="")||($temp=="\n")) {
break;
}
}
do{
$data=execute_agi("GET DATA custom/ingrese_codigo 5000");
$codigo=isset($data['result'])?$data['result']:"0";
}while($codigo=="");
$ok = NULL;
$dbConn =& DB::connect("sqlite3:////var/www/db/cedula.db");
if (DB::isError($dbConn)) {
//error de conexion
echo "error:".$dbConn->getMessage();
}
$recordset =& $dbConn->query("SELECT cedula FROM cedula where id=".$codigo);
if (DB::isError($recordset)) {
echo "error:".$recordset->getMessage();
}else{
while ($tupla = $recordset->fetchRow(DB_FETCHMODE_OBJECT)) {
$numero = trim($tupla->cedula);
execute_agi("SAY DIGITS $numero X");
execute_agi("STREAM FILE custom/gracias \"\"");
}
}function execute_agi($command) {
GLOBAL $stdin, $stdout;
fputs( $stdout, $command . "\n" );
fflush( $stdout );
$resp = fgets( $stdin, 4096 );
if (preg_match("/^([0-9]{1,3}) (.*)/", $resp, $matches)) {
if (preg_match('/result=([-0-9a-zA-Z]*)(.*)/', $matches[2], $match)) {
$arr['code'] = $matches[1];
$arr['result'] = $match[1];
if (isset($match[3]) && $match[3])
$arr['data'] = $match[3];
return $arr;
} else {
$arr['code'] = $matches[1];
$arr['result'] = 0;
return $arr;
}
} else {
$arr['code'] = -1;
$arr['result'] = -1;
return $arr;
}
}
labs
?>
CAP - 14
Verificar los permisos del agi que debe ser:
labs
CAP - 14
Asterisk AGI
Laboratorio 14.2
Descripción: Realizar el debugging del AGI creado en la práctica anterior y verificar las variables enviadas
desde y hacia un AGI.
Objetivo: Usar los comandos de debug de un AGI y entender la salida mostrada en la consola de asterisk.
Instrucciones:
Veremos la salida donde se muestran las variables del agi-test.agi y la comunicación desde y hacia
ese AGI.
-- Executing [123@from-internal:2] AGI("SIP/503-00000005", "agi-test2.agi") in new
stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/agi-test2.agi
labs
-- <SIP/503-00000005> Playing 'digits/8.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/4.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/9.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/0.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/4.gsm' (language 'en')
<SIP/503-00000005>AGI Tx >> 200 result=0
<SIP/503-00000005>AGI Rx << STREAM FILE custom/gracias ""
-- Playing 'custom/gracias' (escape_digits=) (sample_offset 0)
<SIP/503-00000005>AGI Tx >> 200 result=0 endpos=21520
-- <SIP/503-00000005>AGI Script agi-test2.agi completed, returning 0
CAP - 14
Para deshabilitar el debugging de un AGI, usar el comando “agi debug off”.
labs
CAP - 14
Asterisk AGI
Laboratorio 14.3
Descripción: Conectarse vía TELNET con AMI, enviar el comando LOGIN y enviar el comando LOGOFF
Objetivo: Familiarizarse con la conexión con AMI y ejecutar comandos básicos y ver la respuesta obtenida.
Instrucciones:
Trying 127.0.0.1...
Action: Login
Username: admin
Secret: elastix456
Response: Success
labs
[root@localhost asterisk]# telnet 127.0.0.1 5038
Trying 127.0.0.1...
Action: Logoff
Response: Goodbye
Message: Thanks for all the fish.
CAP - 14
labs
CAP - 14
Asterisk AGI
Laboratorio 14.4
Descripción: Conectarse vía TELNET con AMI, y ejecutar la acción “Originate” para realizar una llamada a
otra extensión.
Objetivo: Familiarizarse con la conexión con AMI y ejecutar comandos básicos y ver la respuesta obtenida.
Instrucciones:
Trying 127.0.0.1...
•
• Ejecutar el comando Login.
Action: Login
Username: admin
Secret: elastix456
Pulse dos veces enter para validar
Response: Success
labs
Copie la siguiente línea en su sesión telnet para abandonar la sesión.
Action: Logoff
CAP - 14
Action: Login
Username: admin
Secret: elastix456
Pulse dos veces enter para validar
Response: Success
Action: Originate
Channel: SIP/503
Context: from-internal
Exten: 500
Priority: 1
Pulse dos veces enter para validar
labs
Action: Logoff
CAP - 14
labs
CAP - 14
Asterisk AGI
Laboratorio 14.5
Descripción: Construir un AGI que permita conectar una llamada hacia la extensión XXXX, utilizando la
librería “php-asmanager.php” y la función Originate.
Objetivo: Utilizar la librería “php-asmanager” y la función Originate y estimular el ingenio para la creación de
funcionalidades usando AGI y AMI.
Instrucciones:
#!/usr/bin/php -q
<?php
require_once "/var/lib/asterisk/agi-bin/phpagi-asmanager.php";
$astman->disconnect();
?>
labs
Ejecutar el siguiente comando desde el shell.
CAP - 15
Plan de Marcado Avanzado
Laboratorio 15.1
Descripción: Crear un contexto que verifique la fecha y hora del día y reproduzca un audio si matchea y
reproduzca otro audio si no matchea.
Instrucciones:
Crear la base de datos cedula.db como sigue:
[custom-lab17-1]
exten => 4007,1,GotoIfTime(*,*,4,jul?open,s,1)
exten => 4007,n,GotoIfTime(09:00-17:59|mon-fri|*|*?open,s,1)
exten => 4007,n,GotoIfTime(09:00-11:59|sat|*|*?open,s,1)
exten => 4007,n,Goto(closed,s,1)
[open]
exten => s,1,Wait(1)
exten => s,n,Playback(custom/hoyeslaborable)
exten => s,n,Hangup()
[closed]
exten => s,1,Wait(1)
exten => s,n,Playback(custom/hoynoeslaborable)
exten => s,n,Hangup()
• Recargar Asterisk.
labs
CAP - 15
Plan de Marcado Avanzado
Laboratorio 15.2
Descripción: Crear un contexto que implemente una calculadora matemática básica.
Instrucciones:
[custom-lab17-2]
exten => 4008,1,Answer()
exten => 4008,n,Set(CHANNEL(language)=es)
exten => 4008,n,Read(OPERA1,custom/ingrese1opera,3)
exten => 4008,n,Read(OPERA2,custom/ingrese2opera,3)
exten => 4008,n,background(custom/ingreseopera)
exten => 4008,n,WaitExten(,)
exten => 1,1,Playback(custom/resultadoes)
exten => 1,n,SayNumber($[${OPERA1}+${OPERA2}])
exten => 1,n,Hangup()
exten => 2,1,Playback(custom/resultadoes)
exten => 2,n,SayNumber($[${OPERA1}-${OPERA2}])
exten => 2,n,Hangup()
exten => 3,1,Playback(custom/resultadoes)
exten => 3,n,SayNumber($[${OPERA1}*${OPERA2}])
exten => 3,n,Hangup()
exten => 4,1,Playback(custom/resultadoes)
exten => 4,n,SayNumber($[${OPERA1}/${OPERA2}])
exten => 4,n,Hangup()
• Recargar Asterisk.
labs
CAP - 15
Plan de Marcado Avanzado
Laboratorio 15.3
Descripción: Crear un contexto que implemente un verificador de número de cédula (algoritmo dígito
verificador).
Objetivo: Familiarizarse con los operadores matemáticos de una teléfono IP, la aplicación GotoIf y la
aplicación condicional While - EndWhile.
Instrucciones:
[custom-lab17-3]
exten => 4009,1,Answer()
exten => 4009,n,Set(CHANNEL(language)=es)
exten => 4009,n,Set(TOT=0)
exten => 4009,n,Read(CEDULA,custom/ingresecedula,10)
exten => 4009,n,Noop(${CEDULA})
exten => 4009,n,Set(VAR=0)
exten => 4009,n,While($[${VAR} < 9])
exten => 4009,n,SET(DIG=${CEDULA:${VAR}:1})
exten => 4009,n,Set(RV=${MATH(${VAR} % 2,int)})
exten => 4009,n,NoOp(${RV})
exten => 4009,n,Gotoif($[${RV} = 0]?:impar)
exten => 4009,n,SET(MULT=2)
exten => 4009,n,Goto(salto1)
exten => 4009,n(impar),SET(MULT=1)
exten => 4009,n(salto1),Set(ACUM=${MATH(${DIG}*${MULT},int)})
exten => 4009,n,Gotoif($[${ACUM}<10]?:madiez)
exten => 4009,n,SET(ACUM=${ACUM})
exten => 4009,n,Goto(salto2)
exten => 4009,n(madiez),SET(ACUM=$[${ACUM}-9])
exten => 4009,n(salto2),SET(TOT=$[${TOT} + ${ACUM}])
exten => 4009,n,SET(VAR=$[${VAR} + 1])
exten => 4009,n,EndWhile
exten => 4009,n,Set(RES=${MATH(${TOT} % 10,int)})
exten => 4009,n,GotoIf($[${RES}=0]?:restar)
exten => 4009,n,SET(VER=0)
exten => 4009,n,Goto(salto3)
exten => 4009,n(restar),SET(VER=$[10-${RES}])
exten => 4009,n(salto3),Gotoif($[${CEDULA:9:1}=${VER}]?:error)
exten => 4009,n,Playback(custom/correcto)
exten => 4009,n,Goto(salto4)
exten => 4009,n(error),Playback(custom/incorrecto)
exten => 4009,n(salto4),SayNumber(${VER})
exten => 4009,n,Hangup()
labs
• Incluir el contexto [custom-lab53] dentro del contexto [from-internal-custom].
• Recargar Asterisk.
CAP - 15
Plan de Marcado Avanzado
Laboratorio 15.4
Descripción: Crear un archivo .call que realice una llamada a una extensión y en el momento de contestar
reproduzca un audio.
Instrucciones:
Channel: local/503@from-internal
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 500
Priority: 1
labs
CAP - 15
Plan de Marcado Avanzado
Laboratorio 15.5
Descripción: Crear un archivo .call que realice una llamada a una extensión, conecte la llamada a un
contexto y reproduzca un audio.
Instrucciones:
• Crear un audio.
[custom-tocaudio]
exten => s,1,Answer()
exten => s,n,Playback(custom/bienvenidocurso)
exten => s,n,Hangup()
Channel: local/500@from-internal
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: custom-tocaudio
Extension: s
Priority: 1
labs
CAP - 16
Elastix Email System
Laboratorio 16.1
Descripción: Cada estudiante crear un dominio denominado pruebaX.com en donde X es un número
secuencial y crear una cuenta de correo para ese dominio usando el módulo de Email.
Instrucciones:
• Procedemos a crear el dominio que usaremos para el envío y recepción de correos electrónicos,
podemos crear tantos dominios como necesitemos
• Ahora debemos crear las cuentas de correo de los usuarios, para la cual seleccionamos el dominio
dentro del cual deseamos crear nuestra cuenta de correo.
labs
CAP - 16
• Llenamos los campos necesarios para crear nuestro usuario.
• Ahora debemos configurar el RELAY para nuestro servicio de correo en la central Elastix.
• Elastix nos da la facilidad de revisar las cuentas de correo mediante clientes webmail en este caso
el RoundCube.
labs
CAP - 17
Sistema de Fax en Elastix
Laboratorio 17.1
Descripción: Crear la extensión IAX 300X y asociarla a un fax virtual. Desde el Fax físico del laboratorio,
enviar una fax a cada fax virtual y verificar en el visor de fax la recepción del mismo.
Instrucciones:
• Una vez creado el fax podremos modificarlo o eliminarlo según nuestra necesidad
• La opción Fax Clients nos permitirá especificar las direcciones IP de los equipos que
podrán enviar fax por medio de la elastix
labs
CAP - 17
La opción Template Email nos permite configurar los parámetros del email que será enviado con el fax.
El visor de Fax nos permitirá visualizar todos los fax que hayamos recibido en nuestra central elastix
labs
CAP - 17
Sistema de Fax en Elastix
Laboratorio 17.2
Descripción: Enviar un fax utilizando el comando sendfax hacia uno de los faxes virtuales creados en el
laboratorio anterior.
Instrucciones:
Primero hay que crear un archivo en este caso llamado pruebattsX.txt con un texto.
labs
CAP - 18
Mensajería Instantánea en Elastix
Laboratorio 18.1
Descripción:
Instalación de Openfire con una base de datos Mysql.
Objetivo:
Instalar Openfire con una base de datos Mysql, crear la base de datos y el usuario de dicha base de datos.
Instrucciones:
Datos:
La clave de root de mysql es: palosanto
labs
7 rows in set (0.14 sec)
mysql> quit
Bye
CAP - 18
• Crear la estructura de la base de datos con el siguiente comando:
• Crear el usuario Openfire con todos los privilegios para ejecutar las sentencias SQL en la base de
datos Openfire.
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use openfire;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> GRANT ALL PRIVILEGES ON openfire.* TO 'openfire'@'localhost'
IDENTIFIED BY 'openfire';
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
• Ir a la interface de Elastix y hacer click en la pestaña “IM” y seguir los pasos de instalación vistos en
clase escogiendo conectarse a una base de datos externa de tipo MySql.
labs
CAP - 18
Mensajería Instantánea en Elastix
Laboratorio 18.2
Descripción:
Integración de Openfire con Elastix.
Objetivo:
Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de la
mensajería Instantánea con Elastix.
Instrucciones:
labs
[Sigue en la siguiente página]
CAP - 18
labs
• Se ingresan los valores correspondientes al servidor Asterisk.
labs
• Es necesario tener creado los usuarios.
CAP - 18
labs
CAP - 19
Sintetización y Reconocimiento de Voz
Laboratorio 19.1
Descripción:
Usar el comando text2wave para implementar la sintetización de un texto almacenado en un archivo y
reproducirlo por medio de un contexto.
Objetivo:
Practicar el uso del comando text2wave.
Instrucciones:
• Primero hay que crear un archivo en este caso llamado pruebattsX.txt con un texto.
[from-internal-custom]
include => prueba-tts
[prueba-tts]
exten => 4466,1,Answer
exten => 4466,2,Wait(1)
exten => 4466,3,Playback(custom/pruebatts1)
exten => 4466,4,Hangup
labs
• Recargar Asterisk.
• Probar marcando 4466 desde su teléfono. Deberá escuchar la reproducción del texto contenido en el
archivo pruebatts1.txt.
CAP - 19
Sintetización y Reconocimiento de Voz
Laboratorio 19.2
Descripción:
Usar la función Festival para implementar la sintetización de un texto desde un contexto.
Objetivo:
Practicar el uso de la función Festival
Instrucciones:
[from-internal-custom]
include => prueba-festival
[prueba-festival]
exten => 4467,1,Answer
exten => 4467,2,Wait(1)
exten => 4467,3,Festival('Hola mundo','any')
exten => 4467,4,Hangup
• Recargar Asterisk.
• Probar marcando 4467 desde su teléfono. Deberá escuchar la reproducción del texto contenido en el
archivo pruebatts1.txt.
labs
CAP - 20
Desempeño
Laboratorio 20.1
Descripción:
Utilizar el programa Sipp para generar tráfico llamadas.
Objetivo:
Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de Sipp,
simulando el desempeño de nuestro Elastix en un ambiente de producción.
Instrucciones:
[sipp]
type=friend
context=sipp_context
host=dynamic
port=6000
user=sipp
canreinvite=no
disallow=all
allow=ulaw
[sipp_context]
exten => 4010,1,Answer()
exten => 4010,n,Playback(custom/bienvenidocurso)
exten => 4010,n,SetMusicOnHold(default)
exten => 4010,n,WaitMusicOnHold(20)
exten => 4010,n,Hangup()
• Recargar Asterisk.
labs
[root@elastix opt]# asterisk -rx “reload”
CAP - 20
• Veremos la siguiente salida:
labs
Call Length | 00:00:00:001 | 00:00:00:000
------------------------------ Test Terminated --------------------------------
CAP - 20
• Si ejecutamos el comando “top” veremos el uso del CPU, como sigue:
• Si ejecutamos el comando “top” veremos el incremento en uso del CPU, como sigue:
labs
CAP - 21
Seguridad
Laboratorio 21.1
Descripción: En este laboratorio aprenderemos a cambiar las claves de las principales aplicaciones de
Elastix.
Instrucciones:
1. Para cambiar la configuración de Elastix debemos ingresar a la interfaz web de Elastix como
Administradores.
2. Luego vamos a System -> Users Management
3. Seleccionamos el usuario admin
4. Se selecciona la opción editar y podemos cambiar la contraseña del usuario
labs
CAP - 21
Seguridad
Laboratorio 21.2
Descripción: Asegurar Elastix utilizando el Firewall en el mismo servidor. Se asume para esta práctica que
solo se tiene 1 interfaz de red y que esta se llama eth0.
Objetivo: Aprender a cerrar todos los puertos menos los estrictamente necesarios para el funcionamiento de
nuestra Central
Instrucciones:
Grabar la Configuración
iptables-save > /etc/sysconfig/iptables
labs
CAP - 22
Debugging Avanzado
Laboratorio 22.1
Descripción:
Utilizar el comando strace en un programa básico y ver la salida cuando se produce un error en la ejecución
Objetivo:
Familiarizarse con el comando strace y aplicarlo para hacer debugging.
Instrucciones:
• Utilizar el código fuente divide.c ubicado en /opt y compilarlo con la opción -g para debugging:
• Ejecutar el comando strace con la opción -o para enviar la salida al archivo salida.divideXXX.txt:
• Se ejecutará el programa y pedirá dos números para dividir. En el segundo número ingresar 0:
NOTA: SIGFPE es una señal enviada a un proceso ó programa cuando se realiza una operación erronea de
punto flotante.
labs
CAP - 22
Debugging Avanzado
Laboratorio 22.2
Descripción:
Utilizar el comando gdb en un programa básico y ejecutar los comandos RUN, STEP, PRINT, BREAK,
QUIT.
Objetivo:
Familiarizarse con el comando gdb y aplicarlo para hacer debugging.
Instrucciones:
labs
(1/1): gdb-6.5-37.el5_2.2 100% |=========================| 3.1 MB
09:39
Is this ok [y/N]: y
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: gdb
######################### [1/1]
Installed: gdb.i386 0:6.5-37.el5_2.2
Complete!
CAP - 22
• Utilizar el código fuente imprime.c ubicado en /opt y compilarlo con la opción -g para debugging:
• Ejecutar el comando gdb con la opción -q para el programa imprime, como sigue:
• En el prompt de gdb, crear los “breaks” para el programa imprime, como sigue:
(gdb) run
Starting program: /opt/imprime
Breakpoint 1, main () at imprime.c:5
5
main(){
• Vamos avanzando línea por línea con el comando step, como sigue:
labs
(gdb) step
Breakpoint 6, main () at imprime.c:7
7
printf("Ingrese primer valor: ");
(gdb) step
8
scanf ("%d",&a);
(gdb) step
Ingrese primer valor:
CAP - 22
• Ingresamos un valor y ejecutamos el comando “print a” , para imprimir el valor de la variable “a”:
(gdb) step
10
scanf ("%d",&b);
(gdb) step
Ingrese segundo
valor: 8
12
c=a+b;
(gdb) print c
$2 = 0
(gdb) step
14
printf("\n\tLa suma de %d y %d es %d \n",a,b,c);
(gdb) print c
$3 = 15
(gdb) step
(gdb) quit
labs
CAP - 23
DUNDi
Laboratorio 23.1
Descripción:
Implementar DUNDi entre dos centrales de tal forma que se tenga un plan de marcado único en donde en la
central A estén registradas las extensiones 1000, 1001, 1002 y en la central B estén registradas las
extensiones 2000, 2001, 2002. Una vez realizado esto, registrar la extensión 1002 con la central B y la
extensión 2002 con la central A y verificar si es posible la comunicación entre ambas extensiones de
manera dinámica.
Objetivo:
Aplicar las configuraciones vistas en clase en un ejemplo real y demostrar el funcionamiento de Dundi.
Instrucciones:
ELASTIX1:
IP: 192.168.1.251
MAC: 00:19:D1:82:2E:C8
ELASTIX2:
IP:192.168.1.83
MAC:00:0C:29:19:04:EF
labs
Generating RSA private key, 1024 bit long modulus
...........++++++
....................................++++++
e is 65537 (0x10001)
writing RSA key
Key creation successful.
Public key: SERVERX.pub
Private key: SERVERX.key
[root@elastix keys]#
CAP - 23
• Compartir los certificados, copiándolos en la carpeta /var/lib/asterisk/keys del otro servidor Elastix.
• Editar el archivo /etc/asterisk/dundi.conf en cada servidor para crear la identificación del servidor
(donde X es un identificativo para cada servidor).
[general]
department=ELASTIXX
organization=Certificacion
locality=CiudadX
stateprov=ProvinciaX
country=PaisX
email=estudianteX@palosanto.com
phone=59342290244
bindaddr=0.0.0.0
port=4520
entityid=
08:00:27:0F:56:5E
ttl=12
• En la sección mappings definimos las respuestas a las consultas para números locales, esto se lo
realiza dentro del archivo dundi.conf en cada servidor con su propia IP.
[mappings]
priv => dundi-priv-canonical,0,IAX2,dundi:${SECRET}@192.168.5.221/$
{NUMBER},nopartial
priv => dundi-priv-customers,100,IAX2,dundi:${SECRET}@192.168.5.221/$
{NUMBER},nopartial
priv => dundi-priv-via-pstn,400,IAX2,dundi:${SECRET}@192.168.5.221/$
{NUMBER},nopartial
• Definimos los peers que podrán hacer consultas y que serán a su vez consultados, creando una
sección cuyo nombre es la dirección MAC y la IP del otro servidor Elastix, esto se lo realiza dentro del
archivo dundi.conf como sigue:
[08:00:27:56:B2:D6]
labs
model= symmetric
host=192.168.5.163
inkey=SERVER01
outkey=SERVER02
include=priv
permit=priv
qualify=yes
order=primary
CAP - 23
• Definimos la troncal IAX que recibirá las llamadas autenticadas de la red dundi. Para esto editamos el
archivo /etc/asterisk/iax_custom.conf en cada servidor y agregamos lo siguiente:
[dundi]
type=user
dbsecret=dundi/secret
context=ext-local
• Definimos los contextos para la búsqueda de extensiones locales y extensiones en otros equipos.
Para esto editamos el archivo /etc/asterisk/extensions_custom.conf en cada servidor y agregamos las
siguientes líneas:
[dundi-priv-canonical]
include => ext-local
[dundi-priv-via-pstn]
include => outbound-allroutes
[dundi-priv-lookup]
exten => _X.,1,Macro(user-callerid)
exten => _X.,2,Macro(dundi-priv,${EXTEN})
exten => _X.,3,Goto(bad-number,${EXTEN},1)
[macro-dundi-priv]
exten => s,1,Goto(${ARG1},1)•
switch => DUNDi/priv
[from-internal]
include => from-internal-xfer
;include => bad-number
include => dundi-priv-lookup
labs
• Probar si está correctamente establecida la red dundi ejecutando el siguiente comando con la
dirección MAC del otro servidor.
CAP - 23
• Probar marcando a las extensiones del compañero con el implementó la mini-red DUNDI.
labs
CAP - 24
Call Center
Laboratorio 24.1
Descripción:
Crear una campaña entrante con 3 agentes que tenga de duración 30 minutos, logonearse en una consola
de agente y recibir llamadas usando un script de saludos.
Objetivo:
Aprender y comprender el funcionamiento del call-center tanto como administrador así como agente.
Además familiarizarse con los reportes y consola de agente.
Instrucciones:
• Escoger en el menú del servidor Elastix la opción Addons y descargar el módulo de Call Center.
• Finalizada la descarga el módulo de Call Center aparecerá dentro del menú de Elastix.
NOTA: Ya debe existir una cola con los agentes que van a participar de esta campaña. A continuación se muestra la
pantalla de creación de la cola para nuestro Laboratorio.
labs
CAP - 24
• Logonearse con el número de un Agente valido en una extensión previamente creada en nuestro PBX
y esperar recibir llamadas, simulando una llamada entrante.
labs
CAP - 24
Call Center
Laboratorio 24.2
Descripción:
Crear una campaña saliente con 3 agentes y cargar un archivo de números que contengan 10 números de
destino reales y crear un formulario con una encuesta de 4 preguntas.
Objetivo:
Aprender y comprender el funcionamiento del call-center tanto como administrador así como agente.
Además familiarizarse con los reportes y consola de agente.
Instrucciones:
• Vamos a utilizar las agentes antes creados, así como la cola de los agentes. Y debe existir una
troncal creada a por medio de la cual se realizaran las llamadas.
• Debemos tener un archivo en formato CSV, para realizar nuestras llamadas en nuestro caso
usaremos el siguiente formato
labs
• Crear la campaña saliente con los siguientes datos:
CAP - 24
labs
CAP - 25
Extendiendo Elastix
Laboratorio 25.1
Descripción: Se creará un pequeño módulo que permitirá cambiar el idioma de todos los servicios que usan
la tecnología SIP desde la interfaz web. Para esto desde la interfaz web llamaremos a un script del shell que
modificará el archivo de de configuración de sonidos sip.
Objetivo: Familiarizarse con el módulo Developer de Elastix para aprender a desarrollar nuevos módulos y
extender Elastix
Instrucciones:
• En las pestañas principales de la interfase web de Elastix ahora tendremos una que dice Developer.
• Antes de crear nuestro módulo, crearemos un pequeño script de shell que modificará el archivo de
configuración /etc/asterisk/sip_general_custom.conf
vim /usr/local/sbin/cambiar_idioma
• Utilizamos el directorio /usr/local/sbin porque este directorio es un estándar en Linux para ejecutar
programas propios, que no pertenecen a la distribución, y tienen privelegio solo de administrador. Es
importante notar que este directorio esta en el path del shell por lo que se podrá ejecutar el comando
labs
cambiar_idioma desde cualquier lugar.
CAP - 25
• Añadir la siguiente información al archivo.
#!/bin/bash
#idioma en $1
archivo=/etc/asterisk/sip_general_custom.conf
path=/etc/asterisk
#busco si existe
grep -e "language[[:space:]]*=[[:space:]]*" -i $archivo
exists=$?
#cambio o añado
if [ $exists = 0 ]; then #existe
sed -ie "s/language[[:space:]]*=[[:space:]]*/language=$1/" $archivo
else
echo "language=$1" >> $archivo
fi
• Le damos permisos de ejecución al script que hemos creado, sino no lo podremos llamar
directamente desde la interfase web.
• Podemos probar si el script funciona desde la línea de comandos. Por ejemplo cambiando el idioma a
español.
• Ahora utilizamos este script para escribir el /etc/asterisk/archivo sip_general_custom.conf con el valor
language=es.
• Una vez creado el script se debe dar privilegios de sudo para que pueda ser ejecutado por el usuario
asterisk que es con el que trabaja la interfase web de Elastix
• El comando sudo se utiliza para que un usuario del sistema pueda ejecutar aplicaciones con privilegio
de administrador
labs
visudo
CAP - 25
• En la sección “General Information” Ingresamos la siguiente información:
• En la sección “Location” debemos definir en qué lugar de la interfaz donde aparecerá el menú de
nuestro módulo.
• En esta sección definimos el tipo de módulo. Este podría ser grid para crear reportes o form para
crear formularios. En nuestro caso crearemos un formulario simple que solo aceptará un parámetro
en una caja de texto llamada idioma.
• Enlazar la lógica del módulo con su interfase. Para esto modificamos el archivo principal de nuestro
módulo que podría ser algo como: /var/www/html/modules/cambiar_sonido/index.php
• Abrimos el archivo con nuestro editor de texto preferido y cambiamos las siguientes líneas:
/* case "save":
$content = saveCambiar_Idioma($smarty, $module_name, $local_templates_dir,
$pDB, $arrConf, $arrLang);
break;
*/
por:
case "save":
exec('sudo /usr/local/sbin/cambiar_idioma '. getParameter('idioma') );
break;
labs
CAP - 27
Compilando Asterisk
Laboratorio 27.1
Descripción:
Compilar Asterisk sobre una máquina con Centos 5 usando el paquete asterisk-1.4.23-1.tar.gz.
Objetivo:
Practicar el proceso de compilación de asterisk e identificar las dependencias.
Tiempo Máximo: 30 minutos
Instrucciones:
• Descomprimir el paquete:
labs
[root@srv4 asterisk-1.4.23-1]# ./configure
CAP - 27
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
labs
[Sigue en la siguiente página]
CAP - 27
labs