Contador estandar

04. Junio 2008

Manipulando la voz en Asterisk

En marzo de 2007, escribí un artículo sobre un parche que permitía a Asterisk capturar la voz y distorsionarla lo suficiente para parece que hablaba un “pitufo” o bien un “troll”.

Pues hoy leo que el proyecto ha seguido vivo y han sacado nuevas actualizaciones que permiten modificar el “pitch” (la velocidad de reproducción en tiempo real de la voz) con algunas mejoras interesantes, como la actualización a Asterisk 1.4 y una reducción considerable de la carga de CPU (algo desproporcionada cuando lo probé en aquel momento).

Para probarlo, tan solo hay que ejecutar esto en consola:

# You can also install it through your package manager
cd /usr/src
wget http://www.surina.net/soundtouch/soundtouch-1.3.1.tar.gz
tar xvzf soundtouch-1.3.1.tar.gz
cd soundtouch-1.3.1/
./configure –prefix=/usr
make && make install
# install libsoundtouch4c
cd /usr/src
wget http://www.lobstertech.com/code/libsoundtouch4c/releases/libsoundtouch4c-0.4.tar.gz
tar -xzvf libsoundtouch4c-0.4.tar.gz
cd libsoundtouch4c-0.4
./configure –prefix=/usr
make && make install
# install the voice changer
cd /usr/src
wget http://www.lobstertech.com/code/voicechanger/releases/voicechanger-0.6.tar.gz
tar -xzvf voicechanger-0.6.tar.gz
cd voicechanger-0.6
make && make install
# load it in to asterisk
make start

Y una vez compilado corréctamente, tan solo añadir una linea como esta que deberás modificar convenientemente para ajustarlo a tu dialplan:

exten=>_XXX,1,VoiceChangeDial(SIP/${EXTEN}|T(30)P(-5.0)D(8:9)H(*))

El resultado no tiene precio. :D

Más información: http://www.lobstertech.com/code/voicechanger/

27. Mayo 2008

Nuevas características estándar en Asterisk 1.6

Pese a que Asterisk 1.4 traía notables ventajas con respecto a la versión 1.2, en Asterisk 1.6 siguen apareciendo nuevas ventajas que harán las delicias de los usuarios, hoy me he enterado de dos muy interesantes:

- Realtime LDAP : Si bien Asterisk 1.4 tenía herramientras y parches para dotar a esta aplicación de soporte LDAP para gestionar los usuarios y contraseñas, parece ser que en Asterisk 1.6 vendrá de serie el soporte para Realtime en LDAP. Este es un sistema de directorios que nos permitirá mantener perfectamente clasificado y ordenado cualquier tipo de datos correspondientes a personas, recursos, empresas, etc, es un directorio especialmente creado para este tipo de información y son muchos los sistemas operativos y sus aplicaciones los que suelen utilizar este tipo de servicio de forma transparente para el usuario.

Actualmente están corrigiendo muchos bugs en el soporte LDAP en Asterisk relativos a este sistema para poder dotar a Asterisk 1.6 de un control integro de usuarios mediante LDAP.

- SIP bajo TCP: Este es otro de los añadidos que traerá Asterisk 1.6 tras 3 años de pruebas (el bug comenzó en 2005) y es sin duda una de las mejoras que, de funcionar corréctamente, podría convertirse en la ‘star features‘ de Asterisk 1.6.

- SIP bajo TLS: Otro de los grandes avances en cuanto a seguridad en el protocolo SIP.

Cierto es que llevamos varios años esperando que estos añadidos se conviertan de una vez por todas en funcionalidades estables, no obstante cabe recordar a todos que Asterisk es una aplicación donde pese a los esfuerzos de muchas empresas que dedican tiempo y recursos en desarrollar y corregir cada una de las partes que forman esta aplicación, y pese a que hay muchísimo dinero moviéndose en torno a Asterisk tanto a nivel de hardware, instalaciones, soluciones personalizadas, y un largo etcétera, también hay que entender que, hay un volumen altísimo de usuarios en comparación con el de desarrolladores por lo que se hace muy dificil coordinar todos estos esfuerzos para conseguir que todos los usuarios estén contentos.

19. Mayo 2008

Proyectos interesantes sobre Asterisk

Luigi Rizzo comenta en la lista Asterisk-Dev algunos proyectos que están llevando a cabo en la Universidad de Pisa (Italia), algunos muy interesantes:

- Hacer que Asterisk arranque como una extensión de Firefox.
El objetivo de de este proyecto no es que sirva como servidor en producción, si no facilitar la tarea de desarrollar interfaces web sin tener que hacer pruebas contra un Asterisk de verdad.

- Soportar multiples fuentes de vídeo y de audio, de manera que cambien durante una conversación.
Precisamente estuve probando este fin de semana la aplicación app_conference con vídeo y con unos resultados bastante satisfactorios en cuanto a que la fuente de vídeo cambia según quien hable. Muy interesante para videoconferencias con varias personas. Aunque no se vea la pantalla partida, es un paso. Pronto escribiré algo más sobre esto.

- Unir el módulo chan_oss (posiblemente con el chan_alsa) en uno único: chan_console.
La ventaja de esto consiste en unificar las ventajas de cada uno de estos módulos y no tener que preocuparnos sobre la plataforma de audio que vamos a utilizar cuando utilicemos la consola para hacer y recibir llamadas.

¿Conoces alguna universidad que ofrezca proyectos de este tipo y no solo instalar y configurar un Asterisk?

Enlace: http://lists.digium.com/pipermail/asterisk-dev/2008-May/032977.html

16. Mayo 2008

Cómo integrar Asterisk con eGroupWare

Una de las mejores alternativas al popular Microsoft Exchange, es sin duda eGroupWare entre otros motivos porque además de ser libre y gratuito (no hay que pagar licencias como el caso del software de Microsoft), se integra perfectamente con todo tipo de software utilizado normalmente en la empresa como el Outlook, Thunderbird, Evolution, Kontact, e incluso permite sincronización con BlackBerrys, PDAs y teléfonos móviles mediante SyncML.

Una de las ventajas de que sea libre (algo que mucha gente parece no entender o no interesar) es que cualquier persona puede desarrollar una aplicación que interactue con este software sin tener que dar explicaciones ni pagar licencias ocultas.

Pues bien, la empresa sevillana Ene Soluciones acaba de publicar un sencillo manual para integrar eGroupWare aplicación con nuestro Asterisk, permitiéndonos ver con nuestro softphone preferido el nombre de la persona que nos llama si previamente hemos introducido los datos de esta persona en la base de datos de eGroupWare con nuestro cliente de correo o desde el interfaz de la aplicación.

Esto, unido a uno de tantos click-to-dial para hacer llamadas desde nuestro cliente de email con nuestro Asterisk, nos permitirá tener al jefe contento y a los clientes aún más.

Enlace al manual para integrar Asterisk con eGroupWare.

14. Mayo 2008

Asterisk 1.6.0-beta9 Released!

Pese a que muchos blogs y páginas de noticias sobre VoIP y Asterisk anuncian a bombo y platillo cada versión, revisión y corrección de bugs de Asterisk, estoy seguro que más de uno no le importa lo más mínimo cual es la última versión que salió ayer u hoy, no obstante, es importante recordar qué cambios va haciendo Asterisk ya que como un proyecto vivo, aquellos que siguen Sinologic y leen las noticias de las versiones, seguro que conocen en menor o mayor medida qué añadidos son importantes e interesantes para futuras implementaciones.

En esta ocasión, la versión que ha salido hoy es la 1.6.0-beta9 (la beta más alta que recuerdo en Asterisk) y que tiene como último añadido, una feature escrita por nuestro colega Olle sobre envío de mensajes en modo texto mediante el chan_sip, algo que empieza a tomar forma. Lástima que el chan_sip siempre vaya tan lento pese a ser uno de los módulos más utilizados en Asterisk.

Sobre todo, lo que tiene esta versión son correcciones de bugs encontrados desde la última versión.

Podeis ver el ChanLog aquí:
http://downloads.digium.com/pub/telephony/asterisk/ChangeLog-1.6.0-beta9

y cómo no, descargarlo de aquí:
http://downloads.digium.com/pub/telephony/asterisk/

11. Mayo 2008

Cómo ver tu dialplan gráficamente

Leyendo Asterisk-Java me encuentro que el autor acaba de desarrollar una aplicación de código abierto (cómo no, escrita en Java) que lee nuestro archivo ‘extensions.conf‘ y nos genera un grafo con la estructura de nuestro dialplan.

Desconozco realmente la finalidad de esta aplicación, aunque imagino que puede estar bien para descubrir contextos que no están enlazados y por lo tanto, que “ensucian” y dificultan la lectura.

La aplicación que permite “dibujar” los grafos base se llama Egonet y en la página de Asterisk-Java teneis el código fuente.

30. Abril 2008

Entrevista a los desarrolladores de Ekiga

Ekiga es uno de los softphones más utilizados bajo Linux junto con Twinkle y la revista FreeSoftwareMagazine ha entrevistado a los principales desarrolladores de esta aplicación y en ella se descubren algunas curiosidades bastante interesantes.

Podeis ver la entrevista aquí:
http://www.freesoftwaremagazine.com/columns/interview_with_ekiga_developers

22. Abril 2008

Cómo ejecutar comandos de Asterisk desde la consola

A veces es necesario ejecutar comandos de Asterisk y sacar el resultado por la consola para luego poder procesarlo con un script y poder obtener información útil.

La manera sencilla es mediante la ejecución de Asterisk con la línea:

asterisk -rx 'comando'

Cuando ejecutamos esta línea, lo que realmente ocurre es que nos conectamos a Asterisk, ejecutamos el comando y nos salimos obteniendo por la consola de Linux el volcado de lo que queremos conocer.

Esta es, sin duda una de las mejores maneras cuando queremos obtener el resultado de un comando de forma puntual, pero para “monitorizar” un Asterisk, hay quien crea scripts que utilizan esta forma varias veces cada pocos segundos, lo que provoca que cuando alguien se conecta a la consola de forma natural, se encuentre con estos mensajes molestos:

-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected
-- Remote UNIX connection
-- Remote UNIX connection disconnected

En cada conexión podemos obtener los usuarios SIP registrados, el número de llamadas actuales, los canales ZAP utilizados, etc, pero claro, este método hace impracticable el hecho de utilizar la consola de Asterisk.

La manera interesante, es realizarlo mediante el AMI (manager), es decir, hacer una aplicación que se conecte al puerto del Manager (5038 por defecto), se autentifique correctamente y envíe los comandos necesarios para obtener los resultados necesarios de una manera transparente para el Asterisk y sin que los usuarios conectados vean el molesto mensaje.

Para evitar esto, Tzafrir Cohen de Xorcom acaba de publicar un parche para evitar estos mensajes y poder ejecutar comandos sin necesidad de que nadie llegue a molestarse.
Este parche está en la versión Trunk y lo podeis descargar de aquí:
http://svn.digium.com/view/asterisk/trunk/contrib/scripts/astcli

Yo por mi parte, tengo un programita en perl muy sencillo que se conecta al manager y con el que obtengo todos los datos necesarios sin tener que molestar a nadie y bastante rápido.

Pese a ser una tontería de script, aquí os lo pongo por si a alguien le interesa:
http://www.sinologic.net/proyectos/asterisk-cmd

17. Abril 2008

Empezar con Asterisk

Hoy en una conversación con unas personas que no conozco de nada, he escuchado una comparativa bastante curiosa sobre un software y una casa, y realmente después de pensar he hecho un simil sobre la forma que tienen muchas personas de instalar una aplicación y utilizarla, como si estuviesemos hablando de una aplicación tan sencilla como el Notepad de Windows.

Asterisk es una aplicación que corre bajo el sistema operativo GNU/Linux (que el amigo RMS no se me mosquee otra vez), por lo tanto, intentar ejecutarlo en otro sistema no compatible es como intentar construir una casa en el agua, o flotando a 5m., directamente no se puede o no es viable.

Asterisk también es una aplicación que maneja conceptos tan amplios (no voy a decir difíciles, simplemente amplios) como la telefonía, y las redes de datos, así, esto es algo que la persona que quiera instalar un Asterisk debe conocer al menos, una base, saber porqué y cómo. Debemos saber que una casa tiene puertas y ventanas, y debe estar asentada en un suelo plano y fijo. Si construimos nuestra casa sobre barro o sin puertas, de poco nos va a servir.

Además de estos conceptos, es necesario conocer otros como: qué es un protocolo, en qué consiste eso que llaman “VoIP”, puertos que se utilizan, de qué tipo, etc., de la misma manera que debemos saber que una casa debe tener un cuarto de baño, un dormitorio, una cocina,…

Para colmo, y como excepción a este tipo de aplicación, debemos saber cómo configurar esta aplicación para que haga lo que queremos: Qué muebles son necesarios poner y dónde, así nuestra casa puede ser medianamente habitable y podamos sentirnos agusto en ella.

Una vez que tengamos hecho todo esto, podremos empezar a aprender a utilizar Asterisk en condiciones.

Muchas personas empiezan la casa por el tejado, o bien comprando directamente una casa prefabricada que en cuanto hace un poco de viento se desploma y que, como no saben nada de configurar, terminan poniendo el WC como mesita de noche al lado de la cama y frente a la freidora.

Así que… un consejo para aquellos que esteis empezando…

Dedicadle tiempo a aprender los conceptos básicos, a familiarizaros con la configuración y a buscar y buscar información sobre cómo se hace, y no tanto preguntar para conseguir construir una casa rápidamente, o la terminareis haciendo con hojas y palillos y tarde o temprano se os caerá encima cuando esteis durmiendo en la cocina.

Si teneis que aprender de forma urgente, apuntaos a uno de tantos cursos sobre Asterisk que seguramente hay cerca de donde vivís.

Si pensais que utilizando una distribución prefabricada tipo TrixBox/Asterisk-GUI/Elastix vais a conseguir montar un Asterisk serio y rápido, estais equivocados, el Asterisk ya estará montado y medio configurado y no habreis aprendido nada y fallareis donde siempre fallan los que empiezan así, en la base.

Para comenzar, unos enlaces interesantes con documentación aún más interesante:

Feliz aprendizaje de Asterisk. :D

11. Abril 2008

Cómo crear IVR complicados con Asterisk (y con vídeo 3G)

En las empresas pequeñas no suele ser lo habitual tener un IVR, aunque en empresas medianas o grandes es recomendable e incluso muy necesario disponer de un sistema que permita al llamante seleccionar el departamento, la persona o incluso acceder a información personal a través de lo que se llama “IVR” aunque comúnmente también se denomina “menú”. IVR (Interactive Voice Response) en español (Respuesta de voz interactiva).

Asterisk, al disponer de una programación del dialplan totalmente personalizable gracias a la infinidad de métodos disponibles para gestionar una llamada, dispone de un potencial asombroso para crear menús tan sencillo o complicados como uno quiera.

A medida que la empresa va creciendo o dispone de más servicios de cara al cliente, va aumentando el tamaño del menú de entrada de su sistema, así por ejemplo todos conocemos los IVR de las operadoras de telecomunicaciones que interactúan con la voz (ni siquiera es necesario pulsar un dígito) y nos llevan a diferentes menús según la opción elegida.

Cuando programamos en el ‘extensions.conf’ un IVR por lo general suele ser sencillo, ya que más de tres submenús empieza a parecer bastante tedioso hacer modificaciones y si tenemos que añadir una opción al segundo submenú con otro menú incluida las locuciones correspondientes, puede llegar a convertirse en todo un desafío.

A medida que el menú en el dialplan se va complicando, uno empieza a ver con buenos ojos algo que escuchó sobre el VoiceXML que permitía programar menús IVR de una forma bastante más sencilla y segura.

El VoiceXML no únicamente sirve para gestionar menús, también sirve para conectar a un TextToSpeech y a un ASR de manera que pueda hablar y escuchar a la persona que está al otro lado de la línea y poder realizar acciones y comandos en base a lo que diga o haga, pero esto es otro tema del que ya hablaré en otro momento.

Si además de permitirnos menús más serios, disponemos de un Asterisk con soporte de Videollamada 3G conectado a una línea RDSI (Básica o Primaria), entonces los resultados son altamente espectaculares.

Podeis ver más demostraciones en:
http://www.i6net.com/support/video-demos/

y cómo instalarlo y configurarlo con Asterisk, en:
http://www.i6net.com/support/install/