Vous êtes sur la page 1sur 110

  

Laboratorios

Certificación Elastix
Elastix Certified Engineer

© 2011, PALOSANTO SOLUTIONS todos los derechos reservados. Esta documentación y


su propiedad intelectual pertenece a PaloSanto Solutions. Cualquier uso no autorizado,
reproducción, preparación de otros trabajos en base a este documento, difusión o

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.

Objetivo: Instalación de VM VirtualBox

Tiempo Máximo: 15 minutos.

Instrucciones

Nota: Este laboratorio se realizó con la versión 4.0.12 de VM VirtualBox.

 Ejecutar VM VirtualBox.

 Hacemos clic en “New / Nueva” para crear una máquina virtual.

labs
 
CAP - 1
  
 
 Veremos la pantalla de bienvenida de VirtualBox para configurar una nueva máquina virtual.
Hacemos clic en “Next / Siguiente”.

 Colocaremos como nombre a la máquina virtual ELASTIX-ECTE. En “Operating System / Sistema


Operativo”, seleccionaremos Linux y en “Version / Versión” seleccionaremos “Red Hat”y haremos 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.

 Una vez que ha concluido el proceso obtendremos la siguiente pantalla:

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.

Objetivo: Aprender a instalar Elastix

Tiempo Máximo: 45 minutos.

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.

 El siguiente paso nos consulta sobre la configuración de la interfaz de red en el sistema,


seleccionaremos “Si” 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

Descripción: En este laboratorio aprenderemos a conocer algunos comandos básicos de Linux y


familiarizarnos con la forma de trabajar con este sistema operativo.

Objetivo: Familiarizarse con la línea de comandos de Linux

Tiempo Máximo: 15 minutos.

Instrucciones:

 Liste el contenido del directorio en el que se encuentra

ls

 Liste el contenido del directorio con información adicional

ls -l

 Liste el contenido del directorio /etc con información adicionales

ls -l /etc

 Utilice el comando pwd para saber en qué directorio se encuentra

pwd

 Cree el directorio /tmp/pruebas

mkdir /tmp/pruebas

 Ingrese al directorio /tmp/pruebas

cd /tmp

 Desde el directorio /tmp/pruebas suba al dir /tmp de forma absoluta y relativa

cd ..

 Leer ayuda de varios comandos

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

 Cree el directorio /home/tux1/privado y que solo lo pueda leer tux1

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

En el link anterior descargamos “nano” el cual es un editor de texto avanzado.

 Luego procedemos a instalar el paquete con el comando rpm.

rpm -ivh 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 -qa|grep "nano"

 Desinstalar un paquete rpm

rpm -ev nano

 Verificamos si aun está instalado en el sistema.

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.

scp nano-1.3.12-1.1.i386.rpm root@192.168.1.251:/opt

 Instalar y desinstalar el paquete screen

labs
yum install screen

 Ahora con el comando yum vamos a desinstalar el paquete

yum remove 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

Objetivo: Familiarizarse con la configuración básica de Elastix

Tiempo Máximo: 20 minutos.

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.

 Para finalizar la creación de la extensión, la registramos.

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.

Objetivo: Familiarizarse con la configuración básica de Elastix

Tiempo Máximo: 20 minutos.

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

Descripción: Crear su propio archivo de plan de marcado.

Objetivo: Entender el funcionamiento de un plan de marcado, familiarizarse con los archivos de


configuración y practicar la sintaxis de la gramática de un plan de marcado.

Tiempo Máximo: 5 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom.conf.


 Incluir al final del archivo la siguiente linea:

#include extensions_custom_XXXXX.conf, donde XXXXX es su primer nombre.

 Grabar y Salir.
 Crear el archivo extensions_custom_XXXXX.conf

[root@elastix asterisk]# vi extensions_custom_XXXXX.conf

 Grabar y Salir.
 Cambiarle los permisos y propietario al archivo extensions_custom_XXXXX.conf

[root@elastix asterisk]# chmod 644 extensions_custom_XXXXX.conf


[root@elastix asterisk]# chown asterisk:asterisk

 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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.

Tiempo Máximo: 15 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf.


 Agregar las siguientes lineas al archivo extensions_custom_XXXXX.conf

[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:

[root@elastix opt]# asterisk -rx “reload”

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.

Objetivo: Familiarizarse con la creación de contextos y las funciones Record y Playback.

Tiempo Máximo: 15 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf.


 Agregar las siguientes lineas al archivo extensions_custom_XXXXX.conf

[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:

[root@elastix opt]# asterisk -rx “reload”

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().

Tiempo Máximo: 15 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf.


 Agregar las siguientes lineas al archivo extensions_custom_XXXXX.conf

[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:

[root@elastix opt]# asterisk -rx “reload”

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.

Objetivo: Familiarizarse con la creación de contextos y las funciones Background, WaitExten.

Tiempo Máximo: 20 minutos.

Instrucciones:

 Crear el audio “hoyeslaborable”.


 Editar el archivo /etc/asterisk/ extensions_custom_XXXXX.conf
 Escribir el siguiente contexto al final del archivo

[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()

 Incluir el contexto [custom-lab6-5] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

labs
 
CAP - 6
  
 
Asterisk

Laboratorio 6.6

Descripción: Crear el contexto del laboratorio anterior pero usando las aplicación Goto().

Objetivo: Familiarizarse con la creación de contextos y la aplicación Goto().

Tiempo Máximo: 20 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del


archivo.
 Agregar el siguiente contexto al final del archivo.

[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()

 Incluir el contexto [custom-lab6-6] dentro del contexto [from-internal-custom]


 Recargar asterisk:

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().

Objetivo: Familiarizarse con la creación de contextos y la aplicación Authenticate().

Tiempo Máximo: 15 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del


archivo.
 Agregar el siguiente contexto al final del archivo.

[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()

 Incluir el contexto [custom-lab6-7] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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.

Objetivo: Familiarizarse con la creación de contextos y la aplicación Disa().

Tiempo Máximo: 15 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del


archivo.
 Agregar el siguiente contexto al final del archivo.

[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()

 Incluir el contexto [custom-lab6-8] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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().

Objetivo: Familiarizarse con la creación de contextos y la aplicación SayDigits().

Tiempo Máximo: 15 minutos.

Instrucciones:

 Utilizar la aplicación record() para grabar el audio “ingrese4digitos”.


 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del
archivo.
 Agregar el siguiente contexto al final del archivo.

[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()

 Incluir el contexto [custom-lab6-9] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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().

Objetivo: Familiarizarse con la creación de contextos y la aplicación SayNumber().

Tiempo Máximo: 15 minutos.

Instrucciones:

 Utilizar la aplicación record() para grabar el audio “ingresenumero”.


 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del
archivo.
 Agregar el siguiente contexto al final del archivo.

[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()

 Incluir el contexto [custom-lab6-10] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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().

Objetivo: Familiarizarse con la creación de contextos y la aplicación SayAlpha().

Tiempo Máximo: 10 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del


archivo.
 Agregar el siguiente contexto al final del archivo.

[custom-lab6-11]
exten => 4005,1,Answer
exten => 4005,n,Set(CHANNEL(language)=es)
exten => 4005,n,SayAlpha(Alfredo)
exten => 4005,n,Hangup()

 Incluir el contexto [custom-lab6-11] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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().

Objetivo: Familiarizarse con la creación de contextos y la aplicación ChanSpy().

Tiempo Máximo: 10 minutos.

Instrucciones:

 Editar el archivo /etc/asterisk/extensions_custom_XXXXX.conf y agregar el siguiente contexto al final del


archivo.
 Agregar el siguiente contexto al final del archivo.

[custom-lab6-12]
exten => 4006,1,Read(puerto,conf-getchannel,4)
exten => 4006,n,ChanSpy(SIP/${puerto})
exten => 4006,n,Hangup

 Incluir el contexto [custom-lab6-12] dentro del contexto [from-internal-custom]


 Recargar asterisk:

[root@elastix opt]# asterisk -rx “reload”

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.

Tiempo Máximo: 10 minutos.

Instrucciones:

 Ingresar al Asterisk CLI

[root@elastix opt]# asterisk -r

 Cargar el módulo chan_oss.so con el siguiente comando:

elastix*CLI> module load chan_oss.so


== Parsing '/etc/asterisk/oss.conf': Found
== Registered channel type 'Console' (OSS Console Channel Driver)
Loaded chan_oss.so => (OSS Console Channel Driver)

 Marcar a una extensión desde la consola:

elastix*CLI> console dial 500

 Transferir la llamada a otra extensión:

elastix*CLI> console transfer 503@from-internal

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.

Objetivo: Configurar Hardware con Elastix

Tiempo Máximo: 10 minutos

Instrucciones

• Ingresar a la interfaz web de Elastix y seleccionar el menú de Detección de Hardware dentro de la


categoría Sistema.
• Seleccionar detectar Hardware.

• 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.

Tiempo Máximo: 10 minutos.

Instrucciones:

 Configurar la tarifación con los siguientes valores:

 Crear la Tarifa con los siguientes valores:

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

Objetivo: Practicar la creación de troncal SIP.

Tiempo Máximo: 30 minutos.

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:

Para la central A debería ser:

elastixB:welcome@192.168.1.240

y para la central B debería ser:

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:

elastix*CLI> sip show registry


Host Username Refresh State Reg.Time
192.168.1.240:5060 elastixB 105 Registered Fri,11 Apr 2008 10:29:43

 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

 Determinamos la ruta saliente. En este caso le pondremos: HaciaOtraElastix y definimos el patrón de


marcado, en este caso usaremos el siguiente patrón de marcado:

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.

Objetivo: Practicar la implementación de conexiones SIP con VSP.

Tiempo Máximo: 30 minutos.

Instrucciones:

 Esquema

 Creamos la troncal a través del módulo VoIP Provider

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:

 VoIP Provider: Net2Phone


 Account name: Nombre para identificar a la cuenta (y a la troncal que se crea automáticamente). Puede
ser VP-N2P por ejemplo
 Username: Su número de Cuenta
 Secret: Su PIN
 Outbound Caller ID: Su número de teléfono

 Verificamos que la troncal se encuentre registrada por medio de la consola de asterisk:

elastix*CLI> sip show registry

Host dnsmgr Username Refresh State Reg.Time


ippbx.net2phone.com:5060 N 4526563418 75 Registered Wed, 06 Jul
2011 15:59:44

 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.

Tiempos Máximo: 15 minutos.

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.

Id = 0.024 · 2.70 + 0.11 · (2.70 – 177.3) · H(2.70 – 177.3)


Id = 0.0648

 Calcular el valor de R reemplazando los valores obtenidos en la fórmula correspondiente.

R = 94.2 – 0.0648 - 0
R = 94.1352

 Traducir a la escala MOS reemplazando el valor obtenido de R en la fórmula correspondiente.

MOS = 1 + 0.035 · 94.1352 + 7 · 94.1352 · (94.1352 – 60) · (100 – 94.1352) · 10-6


MOS = 1 + 3.2947 + 0.1319
MOS = 4.4266

 Este resultado indica que la calidad está muy cerca a la excelencia.

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.

Tiempo Máximo: 10 minutos.

Instrucciones:

En la consola de comandos de nuestra central ejecutamos lo siguiente:

“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.

· Realizar las llamadas del caso.

· Presionar “CTRL + C” para finalizar la captura.

· Utilizar WINSCP para recuperar el archivo “capturaXX.pcap”.

· Abrir “capturaXX.pcap” con WireShark.

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.

Tiempo Máximo: 10 minutos.

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

 Abrir un reproductor, seleccionar el archivo payload1.au y escuchar la conversación.

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.

Tiempo Máximo: 10 minutos.

Instrucciones:

• Ingresar a la consola de Asterisk.


[root@localhost ~]# asterisk -r

• Obteniendo el Prompt de la consola.


Asterisk 1.6.2.13, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.6.2.13 currently running on localhost (pid = 2445)
Verbosity is at least 3
-- Remote UNIX connection disconnected
-- Remote UNIX connection

• Listando los comandos con “?”


! ael agent agi cb cdr
channel cli config core dahdi database
devstate dialplan dnsmgr dundi features file
group hangup help http iax2 indication
keys local logger manager meetme mfcr2
mgcp minivm mixmonitor module moh no
originate parkedcalls phoneprov pri queue realtime
reload rtcp rtp say sip sla
stun timing transcoder udptl ulimit unistim
voicemail woomera

• Usando el comando “help”

! Execute a shell command


ael reload Reload AEL configuration

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.

Tiempo Máximo: 15 minutos.

Instrucciones:

• Digitar el comando “queue show”


localhost*CLI> queue show
default has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s
talktime), W:0, C:0, A:0, SL:0.0% within 0s
No Members
No Callers

• Digitar el comando “features show”

localhost*CLI> features show

Builtin Feature Default Current


--------------- ------- -------
Pickup *8 *8
Blind Transfer # ##
Attended Transfer *2
One Touch Monitor *1
Disconnect Call * **
Park Call
One Touch MixMonitor

Dynamic Feature Default Current


--------------- ------- -------
(none)

Feature Groups:
---------------
(none)

Call parking (Parking lot: default)


------------
Parking extension : 700

labs
Parking context : parkedcalls
Parked call extensions: 701-750

• Digitar el comando “uptime show”

localhost*CLI> core show uptime


show codecs

 
CAP - 13
  
 
• Digitar el comando “core show version”

localhost*CLI> core show version


Asterisk 1.6.2.13 built by root @ rpmbuild32-2.elastix.palosanto.com on a
i686 running Linux on 2010-10-03 20:56:35 UTC

• Comando “show codecs”

localhost*CLI> core show codecs


Disclaimer: this command is for informational purposes only.
It does not indicate anything about your configuration.
INT BINARY HEX TYPE NAME DESC
----------------------------------------------------------------------------
1 (1 << 0) (0x1) audio g723 (G.723.1)
2 (1 << 1) (0x2) audio gsm (GSM)
4 (1 << 2) (0x4) audio ulaw (G.711 u-law)
8 (1 << 3) (0x8) audio alaw (G.711 A-law)
16 (1 << 4) (0x10) audio g726aal2 (G.726 AAL2)
32 (1 << 5) (0x20) audio adpcm (ADPCM)
64 (1 << 6) (0x40) audio slin (16 bit Signed Linear PCM)
128 (1 << 7) (0x80) audio lpc10 (LPC10)
256 (1 << 8) (0x100) audio g729 (G.729A)
512 (1 << 9) (0x200) audio speex (SpeeX)
1024 (1 << 10) (0x400) audio ilbc (iLBC)
2048 (1 << 11) (0x800) audio g726 (G.726 RFC3551)
4096 (1 << 12) (0x1000) audio g722 (G722)
65536 (1 << 16) (0x10000) image jpeg (JPEG image)
131072 (1 << 17) (0x20000) image png (PNG image)
262144 (1 << 18) (0x40000) video h261 (H.261 Video)
524288 (1 << 19) (0x80000) video h263 (H.263 Video)
1048576 (1 << 20) (0x100000) video h263p (H.263+ Video)
2097152 (1 << 21) (0x200000) video h264 (H.264 Video)

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.

Tiempo Máximo: 45 minutos.

Instrucciones:

 Crear la Base de datos cedula.db como sigue:

[root@elastix opt]# sqlite3 /var/www/db/cedula.db


sqlite> CREATE TABLE cedula (cedula varchar(255), id INTEGER PRIMARY KEY);
sqlite> INSERT INTO cedula Values('0909625741',1);
sqlite> .quit

 Construir un contexto que llame al agi, ubicarlo en el archivo /etc/asterisk/extensions_custom_XXXX.conf

[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

[root@elastix opt]# asterisk -rx “reload”

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:

-rwxrwxr-x 1 asterisk asterisk 1742 Nov 10 00:27 agi-test.agi

 Probar el agi marcado “123”

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.

Tiempo Máximo: 15 minutos.

Instrucciones:

 Habilitar el debugging de un AGI con el comando “agi set debug on”.

[root@elastix asterisk]# agi set debug on


AGI Debugging Enabled

 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

<SIP/503-00000005>AGI Tx >> agi_request: agi-test2.agi


<SIP/503-00000005>AGI Tx >> agi_channel: SIP/503-00000005
<SIP/503-00000005>AGI Tx >> agi_language: en
<SIP/503-00000005>AGI Tx >> agi_type: SIP
<SIP/503-00000005>AGI Tx >> agi_uniqueid: 1305329979.5
<SIP/503-00000005>AGI Tx >> agi_version: 1.6.2.13
<SIP/503-00000005>AGI Tx >> agi_callerid: 503
<SIP/503-00000005>AGI Tx >> agi_calleridname: device
<SIP/503-00000005>AGI Tx >> agi_callingpres: 0
<SIP/503-00000005>AGI Tx >> agi_callingani2: 0
<SIP/503-00000005>AGI Tx >> agi_callington: 0
<SIP/503-00000005>AGI Tx >> agi_callingtns: 0
<SIP/503-00000005>AGI Tx >> agi_dnid: 123
<SIP/503-00000005>AGI Tx >> agi_rdnis: unknown
<SIP/503-00000005>AGI Tx >> agi_context: from-internal
<SIP/503-00000005>AGI Tx >> agi_extension: 123
<SIP/503-00000005>AGI Tx >> agi_priority: 2
<SIP/503-00000005>AGI Tx >> agi_enhanced: 0.0
<SIP/503-00000005>AGI Tx >> agi_accountcode:
<SIP/503-00000005>AGI Tx >> agi_threadid: -1217959024
<SIP/503-00000005>AGI Tx >>
<SIP/503-00000005>AGI Rx << GET DATA custom/ingrese_codigo 5000
-- <SIP/503-00000005> Playing 'custom/ingrese_codigo.slin' (language 'en')
<SIP/503-00000005>AGI Tx >> 200 result=1 (timeout)
<SIP/503-00000005>AGI Rx << SAY DIGITS 0925684904 X
-- <SIP/503-00000005> Playing 'digits/0.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/9.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/2.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/5.gsm' (language 'en')
-- <SIP/503-00000005> Playing 'digits/6.gsm' (language 'en')

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”.

[root@elastix asterisk]# agi set debug on


AGI Debugging Enabled

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.

Tiempo Máximo: 10 minutos.

Instrucciones:

• Conectarse vía telnet al asterisk manager interface como sigue:

[root@localhost asterisk]# telnet 127.0.0.1 5038


Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

• Ejecutar el comando Login.

[root@localhost asterisk]# telnet 127.0.0.1 5038

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

Asterisk Call Manager/1.1

Action: Login

Username: admin

Secret: elastix456

Response: Success

Message: Authentication accepted

• Ejecutar el comando Logoff.

labs
[root@localhost asterisk]# telnet 127.0.0.1 5038

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

Asterisk Call Manager/1.1

Action: Logoff
 

Response: Goodbye
Message: Thanks for all the fish.
CAP - 14
  
 

Nota: No olvidar dar “Enter” al final de cada evento

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.

Tiempo Máximo: 10 minutos.

Instrucciones:

• Conectarse vía telnet al asterisk manager interface como sigue:

[root@localhost asterisk]# telnet 127.0.0.1 5038

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).


Escape character is '^]'.

Asterisk Call Manager/1.1


• Ejecutar el comando Login.

Action: Login

Username: admin

Secret: elastix456
Pulse dos veces enter para validar

Response: Success

Message: Authentication accepted

labs
Copie la siguiente línea en su sesión telnet para abandonar la sesión.

Action: Logoff

Pulse dos veces enter para validar


Response: Goodbye

Message: Thanks for all the fish.

 
CAP - 14
  
 

[Sigue en la siguiente página]


Conectarse vía TELNET con AMI, y ejecutar la acción “Originate” para realizar una llamada a otra
extensión.

[root@localhost asterisk]# telnet 127.0.0.1 5038


Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Action: Login

Username: admin

Secret: elastix456
Pulse dos veces enter para validar

Response: Success

Message: Authentication accepted

Copie las siguientes líneas en su sesión telnet

Action: Originate

Channel: SIP/503

Context: from-internal
Exten: 500

Priority: 1
Pulse dos veces enter para validar

Ejecutar el comando Logoff

labs
Action: Logoff

Pulse dos veces enter para validar


Response: Goodbye

Message: Thanks for all the fish.

 
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.

Tiempo Máximo: 30 minutos.

Instrucciones:

 Construir un agi que utilice la función Originate como sigue:

[root@elastix agi-bin]# vim miarchivo1.agi

 Cambiar los permisos y propietario al archivo miarchivo.agi.

[root@elastix agi-bin]# chmod 777 miarchivo1.agi

[root@elastix agi-bin]# chown asterisk:asterisk miarchivo1.agi

 Adicionar al archivo miarchivo.agi las siguientes líneas:

#!/usr/bin/php -q

<?php
require_once "/var/lib/asterisk/agi-bin/phpagi-asmanager.php";

$astman = new AGI_AsteriskManager();

$resultado= $astman->connect("127.0.0.1", "admin", "elastix456");


$salida = $astman->Originate("SIP/500","503","from-internal","1");

$astman->disconnect();

?>

labs
 Ejecutar el siguiente comando desde el shell.

[root@elastix agi-bin]# php miarchivo1.agi

 
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.

Objetivo: Familiarizarse con el condicional GotoIfTime().

Tiempo Máximo: 15 minutos.

Instrucciones:
Crear la base de datos cedula.db como sigue:

• Editar el archivo /etc/asterisk/extensions_custom.conf y agregar el siguiente contexto al final del archivo.

• Agregar el siguiente contexto al final del archivo.

[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()

• Incluir el contexto [custom-lab17-1] dentro del contexto [from-internal-custom]

• Recargar Asterisk.

[root@elastix opt]# asterisk -rx “reload”

• Usar el comando date para cambiar la fecha del sistema.

[root@elastix opt]# date -s '05/13/2011 18:53:25'

labs
 
CAP - 15
  
 
Plan de Marcado Avanzado
Laboratorio 15.2
Descripción: Crear un contexto que implemente una calculadora matemática básica.

Objetivo: Familiarizarse con los operadores matemáticos de una teléfono IP.

Tiempo Máximo: 15 minutos.

Instrucciones:

• Editar el archivo /etc/asterisk/extensions_custom.conf y agregar el siguiente contexto al final del archivo.

• Agregar el siguiente contexto al final del archivo.

[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()

• Incluir el contexto [custom-lab52] dentro del contexto [from-internal-custom].

• Recargar Asterisk.

[root@elastix opt]# asterisk -rx “reload”

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.

Tiempo Máximo: 25 minutos.

Instrucciones:

• Editar el archivo /etc/asterisk/extensions_custom.conf y agregar el siguiente contexto al final del archivo.

• Agregar el siguiente contexto al final del archivo:

[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.

[root@elastix opt]# asterisk -rx “reload”

 
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.

Objetivo: Familiarizarse con el funcionamiento de los archivos .call.

Tiempo Máximo: 15 minutos.

Instrucciones:

• Cree el archivo millamda.call con el siguiente contenido:

Channel: local/503@from-internal
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 500
Priority: 1

• Cambiar los permisos y propietario del archivo millamada.call.

[root@elastix opt]# chmod 777 millamada.call


[root@elastix opt]# chown asterisk:asterisk millamada.call

• Mover el archivo millamada.call al directorio /var/spool/asterisk/outgoing.

[root@elastix opt]# mv millamada.call /var/spool/asterisk/outgoing

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.

Objetivo: Familiarizarse con el funcionamiento de los archivos .call.

Tiempo Máximo: 15 minutos.

Instrucciones:

• Crear un audio.

• Crear un contexto que reproduzca un audio en su archivo extensions_custom_XXXXX.conf.

[custom-tocaudio]
exten => s,1,Answer()
exten => s,n,Playback(custom/bienvenidocurso)
exten => s,n,Hangup()

• Cree el archivo millamda.call con el siguiente contenido:

Channel: local/500@from-internal
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: custom-tocaudio
Extension: s
Priority: 1

• Cambiar los permisos y propietario del archivo millamada.call.

[root@elastix opt]# chmod 777 millamada.call


[root@elastix opt]# chown asterisk:asterisk millamada.call

• Mover el archivo millamada.call al directorio /var/spool/asterisk/outgoing.

[root@elastix opt]# mv millamada.call /var/spool/asterisk/outgoing

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.

Objetivo: Familiarizarse con el módulo Email de Elastix.

Tiempo Máximo: 15 minutos.

Instrucciones:

• Ingresamos en la opción Mail de nuestra central.

• 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.

Objetivo: Familiarizarse con el módulo Fax de Elastix.

Tiempo Máximo: 15 minutos.

Instrucciones:

• Ingresamos a la opción de Fax de la central elastix y seleccionamos nuevo fax virtual.

• 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.

Objetivo: Familiarizarse con el comando sendfax

Tiempo Máximo: 15 minutos.

Instrucciones:

 Primero hay que crear un archivo en este caso llamado pruebattsX.txt con un texto.

[root@elastix opt]# vi pruebatts1.txt

 Luego ejecutar el comando sendfax desde el shell como sigue:

[root@elastix opt]# sendfax -h ttyIAX1@127.0.0.1 -n -d 701 pruebatts1.txt

 Revisar en el visor de fax el fax recibido.

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.

Tiempo Máximo: 20 minutos.

Instrucciones:

Datos:
La clave de root de mysql es: palosanto

• Ubicarse en el directorio /opt/openfire/resources/database.

[root@elastix opt]# cd /opt/openfire/resources/database


[root@elastix database]#

• Ejecutar el siguiente comando para crear la base de datos Openfire.

[root@elastix database]# mysqladmin create openfire -p


Enter password:

• Revisar si la base de datos fue creada correctamente.

[root@elastix database]# mysql -u root -p


Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3472 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| asterisk |
| asteriskcdrdb |
| mya2billing |
| mysql |
| openfire |
| roundcubedb |
+--------------------+

labs
7 rows in set (0.14 sec)
mysql> quit
Bye

[Sigue en la siguiente página]

 
CAP - 18
  
 
• Crear la estructura de la base de datos con el siguiente comando:

[root@elastix database]# cat openfire_mysql.sql |mysql openfire -p


Enter password:
[root@elastix database]#

• Crear el usuario Openfire con todos los privilegios para ejecutar las sentencias SQL en la base de
datos Openfire.

[root@elastix database]# mysql -u root -p


Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3474 to server version: 5.0.22

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.

Tiempo Máximo: 20 minutos.

Instrucciones:

• Se debe instalar el plugin “Asterisk-IM”.

• Si el plugin “Asterisk-IM”.se instaló correctamente, veremos una pestaña llamada “Asterisk-IM”.

labs
[Sigue en la siguiente página]
 
CAP - 18
  
 

• Se ingresan los valores del Phone Manager.

labs
• Se ingresan los valores correspondientes al servidor Asterisk.

[Sigue en la siguiente página]


 
CAP - 18
  
 

• Se ingresan los valores correspondiente al servidor Asterisk

Server Name: elastix.yourdomain.local


Server Address: 127.0.0.1
Port: 5038
Username: admin
Password: elastix456

• Si vemos listado nuestros servidores la configuración fue exitosa.

labs
• Es necesario tener creado los usuarios.

 
CAP - 18
  
 

• Cómo último paso hacer el “mapping” entre usuario y dispositivo.

• Veremos listado los “mappings” ingresados correctamente.

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.

Tiempo Máximo: 10 minutos.

Instrucciones:

• Primero hay que crear un archivo en este caso llamado pruebattsX.txt con un texto.

[root@elastix opt]# vi pruebatts1.txt

• Luego ejecutar el comando text2vave desde el shell como sigue:

[root@elastix opt]# text2wave pruebatts1.txt -o pruebatts1.ulaw -otype ulaw

• Copiar el archivo pruebatts1.ulaw a la carpeta /var/lib/asterisk/sounds/custom.

[root@elastix opt]# cp -p pruebatts1.ulaw /var/lib/asterisk/sounds/custom

• Cambiar el propietario y permisos del archivo pruebatts1.ulaw a Asterisk y 664.

[root@elastix opt]# chown asterisk:asterisk pruebatts1.ulaw


[root@elastix opt]# chmod 664 pruebatts1.ulawc

• Editar el archivo /etc/asterisk/extensions_custom.conf y agregar el siguiente contexto al plan de


marcado:

[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.

[root@elastix opt]# asterisk -rx “reload”

• 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

Tiempo Máximo: 10 minutos.

Instrucciones:

• Editar el archivo /etc/asterisk/extensions_custom.conf y agregar el siguiente contexto al plan de


marcado:

[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.

[root@elastix opt]# asterisk -rx “reload”

• 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.

Tiempo Máximo: 45 minutos.

Instrucciones:

• Instalar el rpm del Programa Sipp. Utilizar el paquete sipp-3.1-2.el5.i386.rpm.

[root@localhost sipp_packages]# rpm -Uvh sipp-standard-3.2-linux-2.6-intel.rpm


Preparando... ########################################### [100%]
1:sipp-standard ########################################### [100%]
[root@localhost sipp_packages]#

• Definir un peer sip adicionando en el archivo /etc/asterisk/ sip_custom.conf siguiente:

[sipp]
type=friend
context=sipp_context
host=dynamic
port=6000
user=sipp
canreinvite=no
disallow=all
allow=ulaw

• Creamos una extensión adicionando un contexto en el archivo /etc/asterisk/extensions_custom.conf


como sigue:

[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”

• Ejecutamos el siguiente comando en donde el último parámetro indica el número de llamadas a


generar:

[root@elastix1 /]# sipp -sn uac -d 200000 -s 4010 -i 127.0.0.1 -p 6000


ip.de.su.elastix -l 10

 
CAP - 20
  
 
• Veremos la siguiente salida:

Resolving remote host '192.168.5.245'... Done.


------------------------------ Scenario Screen -------- [1-9]: Change Screen --
Call-rate(length) Port Total-time Total-calls Remote-host
10.0(200000 ms)/1.000s 6000 158.68 s 1586 192.168.5.245:5060(UDP)

4 new calls during 0.382 s period 0 ms scheduler resolution


0 calls (limit 10) Peak was 1 calls, after 0 s
0 Running, 333 Paused, 9 Woken up
0 dead call msg (discarded) 0 out-of-call msg (discarded)
3 open sockets
Messages Retrans Timeout Unexpected-Msg

INVITE ----------> 1586 0 0


100 <---------- 0 0 0 1586
180 <---------- 0 0 0 0
183 <---------- 0 0 0 0
200 <---------- E-RTD1 0 0 0 0
ACK ----------> 0 0
Pause [ 3:20] 0 0
BYE ----------> 0 0 0
200 <---------- 0 0 0 0

• Una vez concluido el test veremos un reporte como sigue:

------------------------------ Test Terminated --------------------------------


----------------------------- Statistics Screen ------- [1-9]: Change Screen --
Start Time | 2011-05-16 14:58:19:754 1305575899.754772
Last Reset Time | 2011-05-16 15:00:58:056 1305576058.056742
Current Time | 2011-05-16 15:00:58:438 1305576058.438894
-------------------------+---------------------------+--------------------------
Counter Name | Periodic value | Cumulative value
-------------------------+---------------------------+--------------------------
Elapsed Time | 00:00:00:382 | 00:02:38:684
Call Rate | 10.471 cps | 9.995 cps
-------------------------+---------------------------+--------------------------
Incoming call created | 0 | 0
OutGoing call created | 4 | 1586
Total Call created | | 1586
Current Call | 0 |
-------------------------+---------------------------+--------------------------
Successful call | 0 | 0
Failed call | 4 | 1586
-------------------------+---------------------------+--------------------------
Response Time 1 | 00:00:00:000 | 00:00:00:000

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:

• Ahora ejecutamos el comando sipp pero con 100 llamadas:


[root@elastix1 /]# sipp -sn uac -d 200000 -s 4010 -i 127.0.0.1 -p 6000
ip.de.su.elastix -l 10

• 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.

Objetivo: Cambiar las contraseñas de Elastix para asegurar nuestro servidor

Tiempo Máximo: 15 minutos.

Instrucciones:

Cambiar Clave de Elastix

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

Cambiar la contraseña de freePBX

1. Acceder a la versión no embebida del freePBX https://ip-de-mi-elastix/admin/config.php


2. Seleccionar la opción Administrators
3. Seleccionar el usuario admin
4. Cambiar la Contraseña

Cambiar contraseña de mysql

1. Desde la línea de comando de Linux escribimos:


mysqladmin -u root -p password nuevo_password

2. Ingresamos la clave por defecto eLaStIx.2oo7

Cambiar la contraseña del Flash Operator Panel

1. Abrir el archivo /etc/amportal.conf


2. Buscar la línea FOPPASSWORD=eLaStIx.2oo7
3. Cambiar la clave remplazando la línea anterior por: FOPPASSWORD=nuevaclave

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

Tiempo Máximo: 20 minutos.

Instrucciones:

Aceptar el tráfico para el protocolo SIP


iptables -A INPUT -p udp -m udp -i eth0 --dport 5060 -j ACCEPT

Aceptar el tráfico para el protocolo RTP


iptables -A INPUT -p udp -m udp -i eth0 --dport 10000:20000 -j ACCEPT

Aceptar el tráfico para el protocolo IAX


iptables -A INPUT -p udp -m udp -i eth0 --dport 4569 -j ACCEPT

Aceptar el tráfico de HTTPS


iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT

Aceptar el tráfico de SMTP


iptables -A INPUT -p tcp -i eth0 --dport 25 -j ACCEPT

Aceptar el tráfico de ṔOP3


iptables -A INPUT -p tcp -i eth0 --dport 110 -j ACCEPT

Aceptar el tráfico de IMAP


iptables -A INPUT -p tcp -i eth0 --dport 143 -j ACCEPT

Aceptar el tráfico de mensajería Instantánea


iptables -A INPUT -p tcp -i eth0 --dport 9090 -j ACCEPT

Denegar todo el otro tráfico restante


iptables -A INPUT -p all -i eth0 -j DROP

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.

Tiempo Máximo: 10 minutos

Instrucciones:

• Utilizar el código fuente divide.c ubicado en /opt y compilarlo con la opción -g para debugging:

[root@elastix opt]# gcc -g divide.c -o divide

• Ejecutar el comando strace con la opción -o para enviar la salida al archivo salida.divideXXX.txt:

[root@elastix opt]# strace -o salida-divide.txt ./divide

• Se ejecutará el programa y pedirá dos números para dividir. En el segundo número ingresar 0:

[root@elastix opt]# strace -o salida-divideXXX.txt ./divide


Introduce el primer número
4
Introduce el segundo número
0

• Revisar el archivo salida-divideXXX.txt como sigue:

[root@elastix opt]# vim salida-divide.txt

• Al revisar el archivo veremos una linea como sigue:

--- SIGFPE (Floating point exception) @ 0 (0) ---


+++ killed by SIGFPE +++

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.

Tiempo Máximo: 15 minutos

Instrucciones:

• Instalar el paquete gdb.i386 0:6.5-37.el5_2.2 utilizando el comando yum:


[root@elastix opt]# yum install gdb
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for gdb to pack into transaction set.
gdb-6.5-37.el5_2.2.i386.r 100% |=========================| 59 kB
00:07
---> Package gdb.i386 0:6.5-37.el5_2.2 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package
Arch
Version
Repository
Size
=============================================================================
Installing:
gdb
i386
6.5-37.el5_2.2
updates
3.1 M
Transaction Summary
=============================================================================
Install
1 Package(s)
Update
0 Package(s)
Remove
0 Package(s)
Total download size: 3.1 M
Is this ok [y/N]: y
Downloading Packages:

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:

[root@elastix opt]# gcc -g imprime.c -o imprime

• Ejecutar el comando gdb con la opción -q para el programa imprime, como sigue:

[root@elastix opt]# gdb -q imprime


Using host libthread_db library "/lib/libthread_db.so.1".
(gdb)

• En el prompt de gdb, crear los “breaks” para el programa imprime, como sigue:

(gdb) break imprime.c:1


Breakpoint 1 at 0x80483b4: file imprime.c, line 1.
(gdb) break imprime.c:2
Note: breakpoint 1 also set at pc 0x80483b4.
Breakpoint 2 at 0x80483b4: file imprime.c, line 2.
(gdb) break imprime.c:3
Note: breakpoints 1 and 2 also set at pc 0x80483b4.
Breakpoint 3 at 0x80483b4: file imprime.c, line 3.
(gdb) break imprime.c:4
Note: breakpoints 1, 2 and 3 also set at pc 0x80483b4.
Breakpoint 4 at 0x80483b4: file imprime.c, line 4.
(gdb) break imprime.c:5
Note: breakpoints 1, 2, 3 and 4 also set at pc 0x80483b4.
Breakpoint 5 at 0x80483b4: file imprime.c, line 5.
(gdb) break imprime.c:6
Breakpoint 6 at 0x80483c5: file imprime.c, line 6.
(gdb) break imprime.c:7
Note: breakpoint 6 also set at pc 0x80483c5.
Breakpoint 7 at 0x80483c5: file imprime.c, line 7.

• Ejecutamos el comando RUN, 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”:

Ingrese primer valor: 7


9
printf("Ingrese segundo valor: ");
(gdb) print a
$1 = 7
(gdb)

• Seguimos la ejecución del programa con el comando “step” hasta terminarlo:

(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

• Para salir ejecutamos el comando “quit”, como sigue:

(gdb) quit

The program is running.

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.

Tiempo Máximo: 45 minutos.

Instrucciones:

• Agruparse en pareja para implementar DUNDI con su compañero.

• Identificar las direcciones IP y la dirección MAC de cada servidor Elastix.

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

• Ubicarse en la ruta /var/lib/asterisk/keys y generar un certificado en una determinada central para


luego compartirlo hacia la otra central (donde X es el nombre del certificado).
[root@elastix keys]# astgenkey -n SERVERX

This script generates an RSA private and public key pair


in PEM format for use by Asterisk. You will be asked to
enter a passcode for your key multiple times. Please
enter the same code each time. The resulting files will
need to be moved to /var/lib/asterisk/keys if you want
to use them, and any private keys (.key files) will
need to be initialized at runtime either by running
Asterisk with the '-i' option, or with the 'init keys'

command once Asterisk is running.

Press ENTER to continue or ^C to cancel.

Generating SSL key 'SERVERB':

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.

[root@elastix keys]# scp SERVERX.* 192.168.5.163:/var/lib/asterisk/keys


root@192.168.5.163's password:
SERVERX.key
100% 887 0.9KB/s 00:00
SERVERX.pub
100% 272 0.3KB/s 00:00
[root@elastix keys]#

• 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

• Modificamos el archivo /etc/asterisk/extensions.conf para incluir el contexto dundi-priv-lookup en el


contexto from-internal, esto se realiza en cada servidor como sigue:

[from-internal]
include => from-internal-xfer
;include => bad-number
include => dundi-priv-lookup

• Reiniciar asterisk en cada servidor.

[root@elastix opt]# asterisk -rx "core restart now"

• Ejecutar el comando dundi flush.

elastix*CLI> dundi flush


DUNDi Cache Flushed
elastix*CLI>

labs
• Probar si está correctamente establecida la red dundi ejecutando el siguiente comando con la
dirección MAC del otro servidor.

[Sigue en la siguiente página]

 
CAP - 23
  
 

elastix*CLI> dundi query 08:00:27:56:B2:D6@priv


DUNDi Query EID succeeded:
Department: ELASTIXA
Organization: Certificacion
City/Locality: CiudadA
State/Province: ProvinciaA
Country: PaisA
E-mail: estudianteA@palosanto.com
Phone: 59342290244
IP Address: 192.168.5.163
-- Remote UNIX connection
-- Remote UNIX connection disconnected
elastix*CLI>

• Probar marcando a las extensiones del compañero con el implementó la mini-red DUNDI.

elastix*CLI> dundi lookup 2000@priv


1. 0 IAX2/dundi:U+ouJDQoUGcWulc5MTDlcg==@192.168.5.163/$
(EXISTS|CANMATCH)
from 08:00:27:56:b2:d6, expires in 3238 s
DUNDi lookup completed in 0 ms
elastix*CLI>

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.

Tiempo Máximo: 15 minutos

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.

• Crear 3 agentes que se utilizaran en la campaña entrante y saliente: Agente1-1001, Agente2-1002,


Agente3-1003.

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.

• Crear un campaña entrante con los siguientes datos

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.

Tiempo Máximo: 15 minutos

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.

• Creamos un formulario con los siguientes Datos

• 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
  
 

• Hacer login y esperar que se conecte una llamada.

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

Tiempo Máximo: 45 minutos.

Instrucciones:

Descargar la versión más reciente del módulo Developer de Elastix.

• Ir al menú de Elastix -> Addons y descargar el developer.

• 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

• Crear el archivo /usr/local/sbin/cambiar_idioma

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

• Dar permisos de ejecución al archivo

chmod 755 /usr/local/sbin/cambiar_idioma

• 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.

• Cambiar_idioma es /etc/asterisk/archivo sip_general_custom.conf

• Para ver si el script funciona podemos revisar el contenido del archivo


/etc/asterisk/sip_general_custom.conf y verificar si dice “language=es”. También podríamos ver si
funcionó utilizando una extensión SIP y llamar al buzón de voz por ejemplo. Deberíamos escuchar el
audio en español. Pruebe cambiando el idioma a varios idiomas.

• 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

• Editamos la configuración de sudo

labs
visudo

• Añadimos la siguiente línea, guardamos y salimos asterisk ALL = NOPASSWD:


/usr/local/sbin/cambia_idioma

• Creamos el módulo utilizando el módulo developer e ingresar a la interfase en la sección módulo.

 
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.

• Verificar la creación del módulo.

• 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:

• Instalar las dependencias de asterisk ejecutando el comando “yum” como sigue:

[root@srv4 ~]# yum install gcc-c++ m4 openssl-devel newt-devel libtermcap-


devel ncurses-devel postgresql-devel zlib-devel libtiff-devel libogg-devel
libvorbis-devel unixODBC-devel libtool sqlite-devel opal-devel alsa-lib-devel
net-snmp-devel wget curl-devel libxml2-devel libpri-devel spandsp-devel gsm-
devel speex-devel

• Crear el grupo y usuario asterisk como sigue:

[root@srv4 ~]# /usr/sbin/useradd -r -c "Asterisk PBX" -s /sbin/nologin -d


/var/lib/asterisk asterisk

• Descargar el paquete asterisk-1.4.23-1.tar.gz

[root@srv4 ~]# cd /usr/src


[root@srv4 src]# wget
http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.23.1.tar.gz

• Descomprimir el paquete:

[root@srv4 src]# tar xvzf asterisk-1.4.23.1.tar.gz

• Ubicar en la carpeta asterisk -1.4.23.1.tar.gz

[root@srv4 src]# cd asterisk-1.4.23.1

• Ejecutar el comando “./configure”:

labs
[root@srv4 asterisk-1.4.23-1]# ./configure

• Si la ejecución fue exitosa verá un logo como el que sigue:

 
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$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.

• Ejecutar el comando “make”:

[root@srv4 asterisk-1.4.23-1]# make

• Si la ejecución fue exitosa veremos lo siguiente al finalizar:

+--------- Asterisk Build Complete ---------+


+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+-------------------------------------------+
[root@srv4 asterisk-1.4.23-1]#

• Ejecutar el comando “make install”:

[root@srv4 asterisk-1.4.23-1]# make install

• Si la ejecución fue exitosa veremos lo siguiente al finalizar:

labs
[Sigue en la siguiente página]

 
CAP - 27
  
 

+---- Asterisk Installation Complete -------+


+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ make samples +
+ +
+----------------- or ---------------------+
+ +
+ You can go ahead and install the asterisk +
+ program documentation now or later run: +
+ +
+ make progdocs +
+ +
+ **Note** This requires that you have +
+ doxygen installed on your local system +
+-------------------------------------------+
[root@srv4 asterisk-1.4.23-1]#

• Ejecutamos el comando “make samples”:

[root@srv4 asterisk-1.4.23-1]# make samples

• Al final ya estaremos en capacidad de ejecutar “asterisk -r” para ingresar al cli

[root@srv4 asterisk-1.4.23-1]# asterisk -r


Asterisk 1.4.23-1, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for
details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it
under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.4.23-1 currently running on srv4 (pid = 10996)
srv4*CLI>

labs
 

Vous aimerez peut-être aussi