FUSOL “Festival de UPIICSA de software libre”

agosto 2nd, 2010 admin Posted in Nucleum | No Comments »

En Nucleum trabajamos para llevar el software libre a todo México, es por ello que daremos apoyo y estaremos presente en el FUSOL, como anteriormente lo hicimos en el FLISOL.

¿Pero, qué es el  FUSOL? dice el blog de UPIICSA Libre:El “Festival de UPIICSA de Software Libre” (FUSOL) esta basado en la idea del FLISOL (Festival Latinoamericano de Instalación de Software Libre). Está orientado al uso del software libre, opensource y openhardware.Este evento está basado en la idea de la colaboración, unión y libertad del uso de las innovaciones de las TIC’s para potencializar el crecimiento intelectual de la informática y la exploración en los nuevos campos de las tecnologías.

Se llevará a cabo los días 18, 19 y 20 de Agosto 2010 en las instalaciones de la UPIICSA.

El primer evento del software libre del IPN-UPIICSA. FUSOL 2010 se aplaza del 22 al 25 de Septiembre.

Así que si te interesa aprender del software libre o simplemente compartir conocimiento asiste y !nos vemos ahi!

FUSOL

AddThis Social Bookmark Button

Freeswitch lanza su propio softphone

enero 14th, 2010 admin Posted in Uncategorized | 3 Comments »

Leyendo la página de Freeswitch veo la noticia que esta empezando a planear el desarrollo de un softphone en código libre, llamado Freeswitch Communicator.

Uno de los objetivos del equipo de Freeswitch es contar con un softphone multiplataforma (Windows, Mac y Linux) que permita la comunicación con su PBX, así como con otros protocolos. La interfaz gráfica esta basada en librerías Qt, y promete ser un proyecto muy interesante.

Al estar basado en licenciamiento GPL, el equipo de Freeswitch invita a la comunidad a cooperar con el proyecto.

AddThis Social Bookmark Button

Integración Avaya y Asterisk mediante un enlace E1 R2 modificado

agosto 17th, 2009 admin Posted in asterisk | 1 Comment »

Para quien quiera enlazar un PBX Avaya y con una caja Asterisk mediante un enlace E1 MFC/R2 lo pueden hacer de una manera sencilla usando la última versión de la librería OpenR2. Hace unos días un cliente me pidió realizar las pruebas, y me sorprendió lo transparente que fue la integración, no hubo necesidad de modificar código fuente, o usar una variante especial de R2, simplemente instalé la última versión de OpenR2 (en este momento la openr2-1.2.0rc2), Asterisk 1.4.25.1 con su respectivo parche y listo!

Con el PBX de Avaya configurado para funcionar con un E1 de Telmex, y Asterisk para usar la variante de México, ya se podían lanzar llamadas hacia Avaya, y para recibir sólo hay que ajustar el parámetro de número máximo de dígitos ANI a esperar (max ani) a 4 (ya que Avaya sólo manda los 4 dígitos de la extensión que esta generando la llamada, no lo 10 que normalmente manda Telmex).

Espero que éste post les ayude.

AddThis Social Bookmark Button

Skype para Asterisk versión Beta

agosto 17th, 2009 admin Posted in asterisk | 7 Comments »

Digium lanzó hace poco la versión beta del módulo para el canal de Skype para Asterisk chan_skype. La invitación a descarga de la versión beta sólo fue enviada a un grupo de usuarios previamente registrados, invitación que se realizó en el Astricon 2008, y por algunos problemas que tuvieron en el proceso de lanzamiento hasta después de casi un año tenemos acceso a una versión de prueba. Dicha versión sólo funcionará hasta el próximo 30 de Agosto.

Como bien conocen Skype es un cliente VoIP muy popular, con gran aceptación en el mundo de los cibernautas, donde las características principales son la gran calidad de voz, soporte para diferentes sistemas operativos, hardware,  y lo más importante, lo fácil que es conectarse a la red Skype en esquemas donde otros clientes VoIP tienen problemas, como firewalls, proxys, etc. Con la aparición del chan_skype podemos contar con estas bondades dentro de nuestras instalaciones de Asterisk, lanzar llamadas y recibir llamadas de la red Skype, usar los clientes de Skype como clientes propios, ¡ya no más problemas para abrir puertos SIP para usuarios móviles!

La instalación del canal es muy básica, muy parecida a la compra e instalación del codec G.729a que vende Digium,  se copia el módul en la carpeta de módulos de Asterisk y se registra la licencia con la aplicación register. Cuenta con su propio archivo de configuración cha_skype.conf con la sintaxis típica de Asterisk, donde se configura con qué usuario o usuarios de Skype se autenticará en la red, el contexto al que lanzará cada llamada entrante, y un pequeño ACL para restringir las llamadas entrantes de usuarios que no estan en nuestra lista de amigos.

El único problema que encontré en la instalación es que Skype (como empresa) no permite que éste módulo utilice usuarios registrados como la mayoría de la gente conoce, es decir, hay que usar el panel de control empresarial de Skype para crear los usuarios, y éstos ya podrán integrarse con Asterisk, lo bueno es que es gratuito el dar de alta usuarios en dicho panel, supongo que es para que Skype tenga mejor control sobre el uso que se le da para éste propósito.

Como sabrán, la versión final de chan_skype no será gratuita, cada llamada simultánea tendrá un costo, aún no definen el costo final, pero es una gran solución para integraciones empresariales profesionales, y a los integradores nos quita un gran dolor de cabeza.

Actualmente (hasta el 30 de Agosto) pueden llamar a las oficinas de Nucleum en la ciudad de México desde cualquier parte del mundo contactando al usuario nucleumskype en su cliente Skype.

AddThis Social Bookmark Button

Mejora la escritura a disco duro de grabaciones de Asterisk usando un ramdisk

julio 26th, 2009 admin Posted in asterisk | 1 Comment »

Cuando tenemos alguna instalación de VoIP usando Asterisk donde demande grabar todas las conversaciones, y se cuenta con un gran número de llamadas simultáneas, como en un call center, o algo por el estilo, es muy importante usar algún método de escritura que no afecte TANTO el funcionamiento de disco duro.

Es muy común ver instalaciones, donde se utiliza la aplicación de Monitor() de Asterisk para grabar las llamadas de alguna oficina grande, y todo se realiza al mismo disco duro donde se encuentra instalado Linux, Asterisk y otras aplicaciones, esto compromete en gran el buen funcionamiento del disco duro. Imagínense que, además del uso cotidiano del disco duro, le demandemos que escriba 70 archivos de forma simultánea (70 agentes) durante 12 horas (horario común para call center) constantes cada día, definitivamente es una gran demanda física de escritura para el disco duro. A menos que se cuente con una solución “profesional” para realizar las grabaciones, donde en la mayoría de las instalaciones con Asterisk no es así, lo más recomendable es usar algún esquema alterno, como es el RAMDISK, donde la escritura directa de las grabaciones de Asterisk se haga en memoria RAM, ya que por su naturaleza, la velocidad de escritura es muy más rápido que hacerlo directo al disco duro, además que no se afectan partes móviles. Recuerden que la memoria RAM tiene esa ventaja, la escritura rápida.

A continuación les mostraré la forma de realizar la configuración de una RAMDISK en un servidor con CentOS/Redhat 5.x, así como la instalación de unos scripts que nos permitirán mover la información de la RAMDISK al dico duro:

  1. Establecer el tamaño de la RAMDISK a usar

La distribución de CentOS/Redhat ya tiene creadas por default 16 RAMDISK con tamaño fijo, esto lo podemos comprobar ejecutando el comando:

[root@pbx ~]# dmesg | grep RAMDISK
 
RAMDISK driver initialized: 16 RAM disks of 16384K size 4096 blocksize

La estrategia es tener el suficiente espacio en la RAMDISK para guardar aproximadamente 5 minutos de grabaciones, para después, con un script, mover cada 5 minutos las grabaciones al disco duro, de tal manera que le quitemos mucho trabajo al disco duro para la escritura. El tamaño de la RAMDISK depende mucho de la operación de cada solución Asterisk, por lo que deben hacer dichos cálculos. Para éste ejemplo usaremos una RAMDISK de 10 MB. La forma de establecer el tamaño es configurando el GRUB para que asigne el tamaño cada vez que inicie el servidor. Para realizar esto hay que abrir el archivo /etc/grub.conf y añadir al final de la línea del kernel que usamos por default el texto:

ramdisk_size=10000

El tamaño se establece en bloques de 1 KB, por lo que para decirle que necesitamos 10 MB debemos poner 10,000 KB. Recuerden reiniciar el servidor para ver el tamaño disponible.

  1. Formatear y montar la RAMDISK a nuestro sistema de archivos

Cada que se inicie el servidor debemos de formatear y montar nuestro RAMDISK a alguna carpeta de nuestro sistema de archivos. Para este ejemplo usamos la RAMDISK /dev/ram0 y la montamos en /var/spool/asterisk/grabaciones (por lo que debemos de apuntar nuestro plan de marcado en Asterisk para que escriba las grabaciones en dicha carpeta). Para poder realizar esto y facilitarles un poco el trabajo hemos creado un sencillo scirpt en bash para que se ejecute cada que el servidor inicia, por lo que sólo deben crear un archivo llamado ramdisk dentro de la carpeta /etc/init.d y ponerle el siguiente contenido:

#!/bin/bash
#
# $Id: ramdisk,v 1.00 Leon Ramos/Juan Carlos Huerta $
#
# Script para el control de RAMDISK
#
# chkconfig: 2345 89 61
# description: Script para el control de RAMDISKinitdir=/etc/init.d
 
initdir=/etc/init.d
 
test -e $DAEMON || exit 0
 
if [ -r $initdir/functions ]; then
        . $initdir/functions
fi
 
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
MONTAJE=/var/spool/asterisk/grabaciones
DEVICE=/dev/ram0
prog=ramdisk
 
function start() {
        echo "Starting ramdisk: "
        echo -n $"Formateando ramdisk $DEVICE"
        mkfs.ext2 $DEVICE &> /dev/null
        RETVAL=$?
 
        if [ $RETVAL -eq 0 ] ; then
                success "formateado"
                echo -n $"Montando ramdisk en $MONTAJE"
                mount $DEVICE $MONTAJE &> /dev/null
                RETVAL=$?
                if [ $RETVAL -eq 0 ] ; then
                        success "$prog montada"
                else
                        failure "$prog no montada"
                fi
        else
                failure "$prog no formateada"
        fi
 
        echo
        return $RETVAL
}
 
function stop() {
        echo -n $"Stopping ramdisk: "
        CUENTA=0
        RETVAL=1
        while [ $CUENTA -lt 15 ] ; do
                lsof $DEVICE &> /dev/null
                LIBRE=$?
                if [ $LIBRE -eq 0 ] ; then
                        echo "Intentando $CUENTA de 15..."
                        CUENTA=`expr $CUENTA + 1`
                        sleep 3
                else
                        CUENTA=15
                        RETVAL=0
                fi
        done
 
        if [ $RETVAL -ne 0 ] ; then
                failure "ramdisk shutdown"
                echo "El dispositivo se encuentra ocupado"
        else
                umount $MONTAJE &> /dev/null
                success "ramdisk shutdown"
        fi
        echo
        return $RETVAL
 
}
 
function restart() {
        stop
        start
}
 
function status2() {
        df -h | grep 'ram' &> /dev/null
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
                echo "Filesystem            Size  Used Avail Use% Mounted on"
                df -h | grep 'ram'
        else
                echo "Aparentemente no hay un Ramdisk funcionando"
        fi
        return $RETVAL
}
 
RETVAL=0
 
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                status2
                ;;
        restart)
                restart
                ;;
        *)
                echo $"Usage: $0 {start|stop|status|restart}"
                exit 1;
                ;;
esac
 
exit $?

Ahora tenemos que crear la carpeta donde recidirán al final las grabaciones en nuestro disco duro, para este ejemplo usamos una carpeta llamada almacenGrabaciones:

]# mkdir /var/spool/asterisk/grabaciones

Y finalmente hacemos que nuestro script sea ejecutable cada que arranquemos el servidor:

]# chkconfig ramdisk on
  1. Script de monitoreo de RAMDISK para mover archivos a disco duro

Para éste ejemplo pondremos nuestro script en la carpeta /opt y lo nombraremos ramdisk-watcher.sh:

#!/bin/sh
#
# RAMDISK Watcher
#
# Revisa el contenido del RAMDISK y lo pasa a disco duro
#
# Fecha de creacion: 2009-06-29
# Autores: Leon Ramos y Juan Carlos Huerta
 
## Variables
RMDIR="/var/spool/asterisk/grabaciones"
ALMACEN="/var/spool/asterisk/almacenGrabaciones"
 
for i in $(ls -1a $RMDIR | grep gsm | egrep -v '\-in\.gsm$' | egrep -v '\-out\.gsm$' ) ; do
        lsof $RMDIR/$i &> /dev/null
        valor=$?
        if [ $valor -ne 0 ] ; then
                mv $RMDIR/$i $ALMACEN
        fi
done

En éste caso estamos grabando en formato gsm, y lo que hace el script es mover cada uno de los archivos que ya se encuentren mezclados, con extensión gsm y que no estén abiertos por el sistema, de la carpeta donde tenemos montado nuestra RAMDISK a la carpeta final de nuestro disco duro.

Después hay que darle permiso de ejecución:

]# chmod o+x /opt/ramdisk-watcher.sh

Y posteriormente modificar nuestro crontab para que cada 5 minutos haga la revisión de nuestra RAMDISK:

]# vim /etc/crontab
*/5 * * * * root /opt/ramdisk-watcher.sh > /dev/null 2&>1

Y listo!, configurando nuestro plan de marcado para que deposite las grabaciones en nuestra RAMDISK le quitaremos mucho trabajo a nuestro disco duro y mejoraremos el performance. Es importante monitorear el espacio libre de nuestra RAMDISK al principio por si es necesario ajustar el tamaño.

AddThis Social Bookmark Button

Soporte oficial a MFC/R2 por parte de Asterisk!

marzo 16th, 2009 admin Posted in asterisk | No Comments »

Russell Bryant, Ing. de Software de Digium, acaba de anunciar la inlcusión oficial libopenr2 para Asterisk 1.6.2, lo que significa soporte oficial en los próximas liberaciones de Asterisk para la señalización MFC/R2, que es usado ampliamente en toda Latino América.

AddThis Social Bookmark Button