Contador estandar

09. Agosto 2008

Probando la nueva interfaz Asterisk-GUI 2.0

Por el blog de Saghul me entero que acaban de lanzar una nueva versión del Asterisk-GUI 2.0. No soy amigo de los interfaces, aunque reconozco que muchos conocidos los utilizan por “facilitarse la labor” de desarrollar configuraciones “en serie” algo con lo que comparta o no, hay que respetar.

A la vista del comentario de Saúl, daba la impresión de que habían cambiado el aspecto visual, por lo que, recordando lo sencillo que era instalarlo y aprovechando que tengo varios Asterisk para mis pruebas, y como la curiosidad mató al gato, lo he instalado para verlo.

Para empezar, la instalación no puede ser más sencilla:

En la consola, ejecutar:
svn co http://svn.digium.com/svn/asterisk-gui/branches/2.0 asterisk-gui-2.0

Una vez descargado, toca instalarlo, para ello ejecutamos:
cd asterisk-gui-2.0 && make && make install && make samples && make checkconfig

Con este ultimo comando (el make checkconfig) confirmaremos que la configuracion es la correcta, por lo que nos dara algun mensaje de error. Tan solo deberemos asegurarnos que esta habilitado el manager en el puerto 5038 asi como que existe un usuario valido en el manager.conf y haber descomentado los parametros en el archivo http.conf, reiniciamos Asterisk y listo. :)

Para probar, recomiendo configurar el parametro bindaddres con valores 0.0.0.0, de manera que una vez lo podamos ver, lo configuremos de acorde a donde vayamos a conectarnos (127.0.0.1 si es desde la propia maquina, o 192.168.0.0 desde la red local o 0.0.0.0 para cualquier sistema desde Internet).

Una vez tengamos todo correctamente configurado, pasamos a entrar en el sistema, para ello, abrimos el navegador web y escribimos la direccion de Asterisk en el puerto que hayamos definido en el archivo http.conf, por defecto el 8088 (http://laipdenuestroasterisk:8080), lo que nos redireccionara a la direccion correcta (http://laipdenuestroasterisk:8088/asterisk/static/config/index.html).

Los cambios son pocos pero destaca alguno que otro si hemos seguido de cerca el interfaz en su version anterior:

Visualmente no se aprecia muchos cambios, aunque a medida que uno va saltando por las opciones, puede notar la experiencia adquirida tras la primera versión (algo verde en mi opinión).

Donde realmente me ha llamado la atención es en la auto-preparación, de manera que se modifican los archivos de configuración necesarios para poder utilizar todo el potencial de este interfaz, detección de hardware (incluyendo, como no, soporte para tarjetas basadas en mISDN) y algunas opciones básicas que ya traía de serie la versión 1.0, por lo que nada destacable por ahora.

Por supuesto, la versión que he probado, además de ser descargada por subversión, podría clasificarla como pre-pre-alfa, por lo que aun no está lista para ser utilizada, de hecho aún no funcionan botones básicos (sobre todo el de añadir), pero seguro que pronto lo arreglan.

Lo “bueno” de este interfaz, es que lee la configuración que hemos escrito a mano, la entiende y permite gestionarla vía web, algo que aún no he encontrado ningún interfaz que lo haga (siempre machacan los cambios o acuden a archivos externos incluidos para saltarse esta dificultad, en lugar de plantarle cara).

Lo “malo” de este interfaz, que, como todos los interfaces, hay limitaciones que el usuario probablemente puede requerir, pero para eso está el ‘vi’. :)

El día que este interfaz funcione como debe, creo que habremos dado con uno que realmente merezca la pena de verdad. :)

Digium tiene Switchvox como interfaz web profesional (y comercial) para la gestión de Asterisk, por lo que si realmente queremos una versión en condiciones del Asterisk-GUI (opensource y libre), más nos vale empezar a aportar nuestro granito de arena tanto en el desarrollo como en la verificación de funcionamiento y búsqueda de bugs.

Por cierto, a veces ocurre un error: Could not connect to Server, que se solucionará con una versión del Asterisk-GUI más estable y dándole al botón Retry. :P

01. Agosto 2008

Digium podría salir a bolsa muy pronto

Eso es lo que se desprende de un estudio realizado por la empresa iLocus.

Según esta empresa, la popularidad de Digium, la obtención de fondos de capital riesgo, así como los éxitos alcanzados por la aplicación Asterisk, y las diversas compras de empresas relacionadas como Switchvox, podrían ser los pasos previos a convertirse en la siguiente IPO (Initial Public Offering) de la VoIP.

Uno de los factores más llamativos de este anuncio, es relativa a la Comunidad Asterisk que según comentan es la más influyente en el mundo de la VoIP.

Enlace: http://www.ilocus.com/2008/07/the_next_big_ipo_in_voip.html

31. Julio 2008

Cómo configurar un fax virtual T38 en Asterisk

Partiendo que no lo he probado aún (a ver si durante estas necesarias vacaciones puedo dedicarle un ratito), he visto un artículo muy interesante sobre el T38modem, una especie de IAXmodem pero con soporte para enviar faxes mediante T38 con Asterisk.

Asterisk soporta T38 en modo passthrough en SIP, esto es, lo deja pasar, pero no iniciar ni acabar una llamada.

Justamente, el T38modem se basa en la misma filosofía que el IAXmodem por lo que sería posible disponer de esta ventaja tal y como comentan utilizando Hylafax como servidor de faxes de la misma manera que podríamos tenerlo con el IAXmodem pero con T38 en lugar de T30. Suena bien, ¿verdad? :D

Vamos a ver cómo se hace:

cd ~
cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co ptlib_unix
cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co -D “5/21/2007 23:59:59″ opal
cvs -z9 -d :pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/openh323 co t38modem

Con esto habremos descargado las librerías y la aplicación t38modem.
Ahora vamos a compilar:

cd ~/pwlib
./configure
make
sudo make install

cd ~/opal
./configure
make
sudo make install
sudo ldconfig

cd ~/t38modem
make USE_OPAL=1 USE_UNIX98_PTY=1 opt
make USE_OPAL=1 USE_UNIX98_PTY=1 install

Vamos a probar que realmente se ha instalado y funciona…

/usr/local/bin/t38modem -tt -o /var/log/t38modem.log –no-h323 -u T38modem –sip-listen udp\$127.0.0.1:6060 –sip-redundancy 3 –ptty +/dev/ttyT38-1,+/dev/ttyT38-2,+/dev/ttyT38-3 –route “modem:.*=sip:<dn>@127.0.0.1″ –route “sip:.*=modem:<dn>”

Ahora vamos a preparar la configuración para 3 módems, para lo que supondremos que hemos instalado previamente el servidor Hylafax como indica Julian en su web y continuaremos:

cp ~/t38modem/HylaFAX/config.ttyx /var/spool/hylafax/etc/config.ttyT38-1
ln -s /var/spool/hylafax/etc/config.ttyT38-1 /var/spool/hylafax/etc/config.ttyT38-2
ln -s /var/spool/hylafax/etc/config.ttyT38-1 /var/spool/hylafax/etc/config.ttyT38-3

Como en el IAXmodem, vamos a modificar el archivo inittab para que esté siempre activa esta aplicación:

echo “t1:2345:respawn:/usr/sbin/faxgetty ttyT38-1″ >> /etc/inittab
echo “t2:2345:respawn:/usr/sbin/faxgetty ttyT38-2″ >> /etc/inittab
echo “t3:2345:respawn:/usr/sbin/faxgetty ttyT38-3″ >> /etc/inittab
kill -HUP 1

Reiniciamos el servidor Hylafax:

/etc/init.d/hylafax restart

Y chequeamos que todo está funcionando corréctamente:

cat /var/spool/hylafax/status/ttyT38-1

Lo que nos debería mostrar un mensaje como este: Running and idle

Ahora vamos a ver cómo conectamos el T38modem a Asterisk, para lo que crearemos un usuario SIP propio en /etc/asterisk/sip.conf

[T38modem]
type=friend
host=127.0.0.1
permit=127.0.0.1
context=outgoing
port=6060
allow=all
canreinvite=no

y en este mismo archivo, en el contexto [general]:

t38pt_udptl=yes

Para enviar faxes, tan solo hay que utilizar algún cliente Hylafax y será el usuario T38modem el que se encargue de hacer la llamada mediante T38 por SIP. :)
Para recibir faxes, como siempre, enviando el fax entrante a SIP/${EXTEN}@T38modem.

Si a alguien le funciona, se agradece un comentario.
Si teneis problemas, lo que he dicho antes… a pelearse y googlear un poco. :P

Enlace: http://voip-info.org/wiki/view/T38modem+configuration+with+Asterisk

30. Julio 2008

Transmitiendo archivos por audio en Asterisk

Como si fuera un Amstrad CPC 64 con su cinta para transmitir datos procedente de una señal de audio, la gente de 5-in-5 están desarrollando un método para transmitir archivos mediante audio a través de Asterisk: Asterisk File Transfer Protocol (A-FTP).

La pega, como en aquel entonces, es la velocidad. Llegan a transmitir una fotografía de 8kb en apenas 3 minutos y 29 segundos (uauu!!!) XD

La técnica consiste en convertir un archivo cualquiera en sonidos audibles utilizando para ello los algoritmos de CSound. Una vez obtenido el archivo de sonido, el sistema llama a otro Asterisk encargado de hacer el paso contrario y convertir esos sonidos en un nuevo archivo de datos.

Muy curioso.. :)

Más información: http://5-in-5.com

29. Julio 2008

A por la estandarización de Asterisk

Cada empresa que instala y configura Asterisk dispone de alguien con conocimientos suficientes para hacer esta labor, algunos tienen más conocimientos y otros no tantos pero en el fondo, cada uno cuenta con dos puntos importantes: capacidad de aprender y un objetivo a cumplir, donde este será instalar un sistema, instalar Asterisk, configurar los dispositivos, tarjetas, líneas, etc, y configurar Asterisk como lo necesite su empresa o su cliente.

Cuando ocurre algún inconveniente o un comportamiento no esperado se suele buscar ayuda bien en la lectura de numerosas webs, blogs, listas, foros, etc… o bien diréctamente a cualquiera que pueda ayudar.
Es aquí donde empiezan los problemas iniciales. Cada uno ha aprendido por su cuenta, buscando, encontrando, leyendo y preguntando, de ahí se sacan conclusiones propias y uno hace lo que buenamente sepa o pueda.

De la misma manera que el software libre da libertad de escoger cómo, cuándo, dónde y porqué, configurar Asterisk también da bastante libertad y un comportamiento puede realizarse de varias maneras y todas válidas (mejores o peores) pero el desconocimiento o una falta de metodología adecuada suelen acarrear inconvenientes, no únicamente por lo que hayamos hecho o dejado de hacer, si no a la hora de preguntar y esperar una respuesta. Cada persona tiene su técnica, sus trucos y consejos que hacen que, en teoría, una configuración que se comporte igual a otra, sean diferentes y dichas diferencias pueden sorprendernos con comportamientos no deseados.

Concretamente, el confiar en que no definiendo un parámetro en algún archivo de configuración, el comportamiento será correcto, no se cumple en Asterisk (básicamente porque el comportamiento habitual de los sistemas de comunicaciones en España es bastante diferente al de EEUU) y muchas personas se dan cuenta que el hecho de poner un parámetro resuelve todos sus problemas.

Por este motivo, el equipo de desarrolladores de Asterisk tiene muy mal acostumbrado a los usuarios que les permiten “omitir” ciertos valores en determinados parámetros sin recibir ni un triste mensaje de aviso o error, algo que para los ojos de la persona que desconoce la importancia de este parámetro, representaría la diferencia entre acabar felizmente y pasarse una semana leyendo listas de correos y foros.

Por poner un ejemplo, al definir un usuario SIP en el archivo ’sip.conf’, el parámetro ‘host’ es imprescindible y sin ella, simplemente no podremos registrarnos con ese usuario, no obstante, si nos olvidamos de definirlo, Asterisk ni se inmuta, no dice nada, lo ve normal y no se queja. ¿Resultado? algo tan sencillo como definir un usuario SIP, se puede llegar a convertir en toda una tortura para la persona que no caiga en este detalle.

En la configuración del extensions.conf, la cosa se complica, ya que además, no solo hay que conocer qué hay detrás de una llamada entre una extensión y otra, si no que además debemos escribirlo a sabiendas que el jefe, cliente o quien vaya a utilizar el sistema, seguro que va a querer cambiar el comportamiento de esta, de manera que todo lo que hagamos debe ser planteado de forma que sea fácil y rápidamente modificable y no nos suponga empezar desde cero.

Fallos tan garrafales como comunes como poner un Answer() antes del Dial(..), hacen que el sistema no se comporte como esperemos y eso puede provocar grandes pérdidas de tiempo que para una empresa, se convierte en dinero.

24. Julio 2008

AsteriskColombia publica un set de voces para Colombia

Mediante un comentario en la web me avisan que la empresa NetSecuritySolution acaba de publicar un conjunto de voces en español para Colombia llamado K-rem. Pese a que comentan que son voces neutras, la verdad es que un poquito sí que se nota que proceden de Colombia, he de decir que suenan bastante bien y el detalle de haberlo publicado para la comunidad Asterisk, lo que es muy de agradecer y desde aquí le damos las gracias por su apoyo a la comunidad de Asterisk.

Podeis escuchar un ejemplo de estas fantásticas voces en este enlace: ivrrecording

No obstante, (ahora una crítica constructiva a esta empresa) para poder descargar este conjunto es necesario “registrarse” en la página web de la empresa NetSecuritySolutions lo cual no aconsejo ya que los comerciales tienen la fea costumbre de enviar spam a todo usuario interesado en Asterisk, y entre esta fea costumbre y lo “originales” que pueden llegar a ser los diseñadores webs utilizando el logo de Asterisk que hice hace algún tiempo para Sinologic con la aprobación expresa de Digium para su uso en este blog (como podeis ver en la imagen de abajo) tan solo me queda animar a esta empresa a que cambien de “estrategia comercial” por alguna más original y sobre todo legal.

Enlace: http://www.netsecuritysolutionsltda.com
(Descarga directa)

Fedora lanza su servicio de VoIP basada en Asterisk

Fedora, el grupo de desarrollo Open de RedHat, ha anunciado el lanzamiento de Fedora Talk, un servicio gratuito para aquellos usuarios registrados de Fedora y que permitirá realizar llamadas entre usuarios mediante SIP, así como poder recibir llamadas desde teléfonos (EEUU y UK) para contactar con los usuarios conectados.

Este servicio está basado íntegramente en Asterisk como indica su página web y esperan crecer y poder ofrecer servicios adicionales.

El futuro está abierto a interpretaciones :)

Enlace: http://talk.fedoraproject.org/index

23. Julio 2008

Asterisk 1.4.21.2 y 1.2.30 Released!

Empezamos el día con una nueva versión de Asterisk: acaba de ser lanzada 2 nuevas versiones de Asterisk, debido a 2 bugs encontrados en el IAX que han sido gestionados como vulnerabilidades como podeis ver en: AST-2008-010 y AST-2008-011.

Las nuevas versiones las encontrareis en:
http://downloads.digium.com/pub/asterisk/

18. Julio 2008

Como ejecutar aplicaciones durante una llamada

En la lista de Asterisk-ES a veces se comenta una utilidad que parece que no mucha gente conoce llamada “dynamic features”. Oficialmente esta característica forma parte del conjunto de “recursos” que componen Asterisk y que, como su nombre indica, son añadidos dinámicos, lo que realmente significan, recursos que pueden ser accedidos dinámicamente durante una llamada.

Estos añadidos son por ejemplo, las transferencias, el parking de llamadas y el mapa de aplicaciones (applicationmap), entre otros, y se definen en el archivo features.conf donde vamos a encontrar opciones y una serie de parámetros junto con un código de tecla que debemos pulsar para poder utilizarlos.

Como ejemplo de estos añadidos encontramos los básicos como:

  • blindxfer (transferencia ciega)
  • atxfer (transferencia atendida)
  • automon (grabación bajo demanda)
  • pickupexten (captura de llamadas que suenan en los terminales del “grupo”)
  • automixmon (grabación bajo demanda y posterior mezcla de las locuciones)

Hay una parte muy interesante llamada applicationmap que consiste en una serie de combinaciones que podemos modificar para ejecutar aplicaciones básicas de dialplan, durante una conversación.

Por ejemplo: testfeature => #9,peer,Playback,tt-monkeys

Este comando permitirá que cuando el llamante como el llamado durante una conversación, pulse las teclas # y 9, se reproduzca la locución tt-monkeys, algo muy gracioso, pero muy interesante en ciertos momentos.

Existe una limitación para este tipo de comandos, y es que no es recomendable utilizarlo para ejecutar aplicaciones relacionadas con el dialplan directo, es decir: Macro, Goto, Background, WaitExten y algunas de este tipo, pero en cambio sí que se puede ejecutar un “AGI(aplicacion.agi)” :P

Para evitar el uso accidental de este tipo de comandos on-line, se hace necesario habilitar dicho comando mediante una variable llamada DYNAMIC_FEATURES justo antes de hacer la llamada: Set(DYNAMIC_FEATURES=testfeature)

En Asterisk 1.6, nos encontramos algunas novedades bastante interesantes, como:

  • atxferdropcall (permite no perder la llamada en caso de que la transferencia no se realice corréctamente, en cuyo caso volvería a sonar en el usuario que inició la transferencia)
  • atxfernoanswertimeout (permite cambiar el timeout que una llamada transferida esté a la espera antes de volver a la extensión que inició la transferencia)
  • Grupos para habilitar varios applicationmaps sin necesidad de definirlos todos:
    Set(DYNAMIC_FEATURES=grupo)

    donde:
    [grupo]
    testfeature=>#9

Grandes cosas se pueden llegar a hacer utilizando estas ventajas de Asterisk que son poco conocidas pero muy, muy útiles si se conocen.

Que lo disfruteis. :D

Novedades en el Chan_SIP3

Olle Johansson en la lista Asterisk-Dev ha anunciado varias modificaciones que está programando para la nueva versión del chan_sip (chan_sip3 codename Pinneapple).

La más curiosa de estas modificaciones es sin duda la batalla contra el usuario (recordemos la campaña -kill the user-) y que parece ser que está tomando forma.
Olle no únicamente está decidido a “matar al usuario” si no también a los amigos (friend) y a los pares (peer) y está programando un cambio radical y mucho más sencillo de aprender.

De esta manera existirían 3 tipos de usuarios en SIP:

  • phones: que definirán a los terminales, softphones, y básicamente lo que actualmente conocemos como friends.
  • trunk: que definirán los enlaces a proveedores SIP, es decir, lo que conocemos como peer.
  • services: que serán una mezcla entre trunk y phones permitiendo a Asterisk registrarse como un usuario SIP (un teléfono) en otro sistema y así poder hacer y recibir llamadas.

La pregunta del millón: ¿para qué este cambio de nombres? Básicamente para simplificar la comprensión, y además facilitar la programación para continuar el desarrollo sin tanta “morralla”.

Este parche no será por el momento añadido a Asterisk 1.6.0 porque necesita ser testeado en condiciones, pero nos da una visión de por dónde van los tiros.