Nuestro último curso Asterisk del año: 7 al 10 de diciembre

30 Nov

Estamos en la recta final del año, un año que se fue muy rápidamente de nuestras manos pero afortunadamente, con muchas experiencias y mucho crecimiento en todo lo relacionado con el mundo del open source, en especial, Asterisk.

En este año tuvimos la oportunidad (hasta el momento) de capacitar a más de 80 profesionales del área que desearon iniciarse en el mundo de Asterisk a lo largo de 12 sesiones de curso tanto privadas como abiertas y, aunque ya estamos al final del recorrido, aún tenemos espacio para una última fecha de curso intensivo que tendremos en el Distrito Federal, durante los días del 7 al 10 de diciembre en nuestro horario habitual de 9 a 19 horas, con 32 horas totales de duración.

Si alguien requiere más información, lo invitamos a que exponga sus dudas a través de nuestro formulario de contacto, con la que inmediatamente le haremos llegar la información más detallada de nuestros cursos. Aún tenemos lugares para esta última fecha, y cabe resaltar que será la última en la que aún mantendremos nuestros precios del 2009.

Espero tener una vez más la oportunidad de interactuar con gente tan interesada en este mundo del VoIP como nosotros. Será un placer poderlos tener acompañándonos en una sesión más.

Saludos,

Día de campo con Elastix: armando la canasta de comunicaciones completa

4 Nov

Los equipos en sus cajas, antes que todo comenzara

Con motivos del Elastix World que se está celebrando en estos momentos en la ciudad de México, quisimos armar un proyecto mixto que habíamos comentado en la oficina desde hace tiempo. Este proyecto consistiría en crear una solución demostrativa llave en mano de un sistema de comunicaciones basado totalmente en soluciones abiertas. Lo que buscábamos era lo siguiente:

  • Crear un sistema que fuera extremadamente portátil, de manera que pudiéramos demostrarlo ante los potenciales clientes para sistemas más robustos
  • El consumo total energético (PBX + switch + teléfonos) debe ser menor de 100W
  • Crear una prueba de concepto de VoIP, que demostrara la convergencia de soluciones con teléfonos análogos, teléfonos IP, teléfonos inalámbricos e interacción con líneas analógicas de la PSTN
  • Demostrar que es posible montar una solución de PBX completo (lineas, tarjetas, PC, switch) por menos de $1,000 USD
El proyecto comenzó con un viaje a nuestro supermercado local para conseguir un contenedor de plástico que nos permitiera la portabilidad así como la posibilidad de contener todo nuestro equipo. Encontramos uno que se adaptaba completamente a lo que buscábamos, y nos costó apenas $5 USD

Nuestra caja. Originalmente era un contenedor para guardar archivos

Para cuando decidimos hacer este proyecto, ya teniamos definido el hardware que queríamos utilizar. Para el PBX ocuparíamos una Acer Veriton VN281G-SD425L, la cual tiene 1 GB de RAM, Atom @ 1.8 Ghz, DD 250GB y Gigabit ethernet, además de ser la PC más pequeña que conocemos en el mercado actualmente. Como este equipo es ultra pequeño, el uso de tarjetas PCI no era una opción, así que le conectamos una Sangoma U100 para dar servicio a 2 puertos FXO:

El µPBX junto con su tarjeta U100

Al Veriton le instalamos Elastix 2.2 RC3 y funcionó de maravilla (tuvimos que usar un DVD externo ya que la unidad en si no trae almacenamiento óptico), así que procedimos a dejarla configurada con 30 extensiones y 2 lineas FXO, así como todos los detalles necesarios del plan de llamadas.
El siguiente paso fue empezar a organizar los componentes para darles una óptima colocación, procurando mantener la instalación lo más limpia y fácil de conectar posible. Decidimos utilizar velcro autoadherible, así no tendríamos que desgastar ninguno de los equipos de manera permanente en caso de que el proyecto no resultara, al tiempo que nos permitir re-organizar los diferentes dispositivos en caso de que lo necesitáramos.
Armar el equipo no fue demasiado complicado dadas las dimensiones de la caja (29 x 30 x 28 cms), pero nos emocionamos tanto armándola que no tomamos fotos durante el proceso. Aquí tenemos el resultado final:

Caja final y armada

Aquí el comparativo con un objeto de uso cotidiano:

 

El último paso fue permitir el paso de los cables de una manera sencilla hacia el exterior (energía, red y PSTN). Para ello hicimos un agujero en uno de los extremos de la caja utilizando un cautín convencional para hacer el perforado del plástico. Estos fueron los resultados:
Y ya por último tenemos la caja con los componentes fijos, los cables que salen libremente por donde deben y los teléfonos conectados (2 IPs, 2 inalámbricos, 1 analógico y 1 cable para la PSTN)

Vista aérea con la caja abierta

Vista frontal conectado

En resumen, nuestra maqueta es capaz de soportar lo siguiente:
  • 4 teléfonos IP con PoE
  • Hasta 8 teléfonos inalámbricos
  • 2 teléfonos análogos
  • 2 lineas análogas (FXO)
  • 30+ softphones
  • 15+ llamadas simultáneas
  • Y es totalmente portable:
Pero… ¿y cuanto cuesta armar una solución así?
  • Acer Veriton: $270 USD
  • Elastix: $0 USD
  • Switch Cisco SDP208: $170 USD
  • Cisco PAP2T:  $69 USD
  • Teléfono Yealink T20P (2): $190 USD
  • Aastra MBU400: $299 USD
  • Sangoma U100: $140 USD
  • Teléfono analógico: $10 USD
  • Barra de contactos, caja y cables: $10 USD
  • Total: $1,158 USD
Algunas notas:
  • Es obvio que nos salimos de nuestro presupuesto de $1,000 USD, pero la MBU400 fue agregado de última hora. Sin ella, el costo del sistema habria sido de $859 USD.
  • En la foto aparece que utilizamos un Cisco SPA504G como segundo teléfono. Esto lo hicimos para demostrar la interactividad entre marcas, pero en los precios optamos por Yealink por ser la opción más económica
En conclusión, este equipo fue fabricado con intenciones de ser un equipo demostrativo multimarca, que pudiéramos transportar fácilmente para demostrar el uso de un IP PBX basado en open source (Elastix) en la mayoría de los escenarios. Logramos mantener un consumo bajo de energía y una excelente prueba de concepto de como podemos meter muchísimas funcionalidades en una pequeña caja, desde teléfonos inalámbricos hasta teléfonos IP, todo alimentado por PoE para reducir el cableado al mínimo. Sabemos que el equipo tiene sus limitantes y que para escenarios más grandes no sería realizable tener algo de este tamaño, pero ese no era el objetivo del proyecto, y terminamos con una maqueta que nos hizo recordar como armábamos los proyectos de electrónica mientras que estábamos en la universidad.
¡Ah! Lo olvidaba: todos los componentes utilizados (excepto la caja de plástico) pueden encontrarlos en nuestra tienda en línea.
¡Suerte!

Inseguridad en Elastix: estadísticas actualizadas (México)

3 Nov

Hace algunos meses publiqué un artículo sobre estadísticas de inseguridad en Elastix y los resultados fueron bastante alarmantes, ya que el estudio claramente indicaba que quienes se habían encargado de instalar los sistemas no habían seguido muchos de los consejos básicos de seguridad tales como no exponer el HTTPS a internet ni mucho menos cambiar las contraseñas default puestas. Por tal motivo, durante este año se reportaron múltiples casos de empresas  a los que les habían cometido algún tipo de fraude telefónico, representando pérdidas de varios cientos o miles de dólares en tan solo una noche.

Hoy, con motivo del inicio del Elastix World precisamente en México, decidí repetir el ejercicio para hacer un comparativo de como han cambiado los números desde aquel entonces. Aquí mis resultados obtenidos:

Los resultados fueron:

– Total de equipos escaneados (en México): 27.8 millones
– Total de equipos con puerto TCP 443 expuesto: 67,887
– Total de equipos con puerto TCP 443 expuesto y que usan Elastix: 336

De los equipos con Elastix expuesto:

– Presentan algún tipo de vulnerabilidad descubierta: 102 (27.87%)
– Tienen acceso mediante UDP 5060 (SIP):  102 (27.87%)
– Tienen alguna contraseña default en FreePBX: 82 (22.40%)
– Siguen usando ‘palosanto’ como contraseña de Elastix: 9 (2.46%)
– No han parchado la vulnerabilidad del ‘asteriskuser’: 120 (32.79%)
– Usan la misma contraseña para FreePBX y para Elastix: 4 (1.09%)
– Utilizan una versión muy vieja de FreePBX (2.5 o menor): 43 (11.75%)

De los equipos con vulnerabilidades que permiten acceso:

– Se detectaron extensiones completas (usuarios, contraseñas y correos electrónicos) de 1,192 personas

Tomen en cuenta que todos estos números son reales, ya que el estudio fue conducido sobre equipos en producción durante la noche del 2/noviembre/2011.

Tras analizar los números, es posible ver que ha habido una notable mejoría. Sin embargo, muchas empresas siguen desprevenidas contra ataques por no seguir simples reglas de seguridad básicas (las cuales se mencionan en el artículo inicial)

Ahora, tras los números, mi opinión personal: ¿Es Elastix una herramienta insegura? No, no lo es. Ha tenido sus vulnerabilidades relacionadas con las herramientas que incorpora (tal como FreePBX), pero todos estos males podrían haberse resuelto si tan solo los «administradores» que las instalaron hubieran tomado 5 minutos extras en asegurar su conmutador después de haber hecho la instalación. De hecho, creo que el principal problema de las herramientas que hacen la labor de instalación más sencilla (tal como Elastix lo es), es que cualquier persona piensa que por meter un CD y dar unos cuantos clicks ya terminó todo, cuando realmente se requiere preparación y conocimiento detrás de cada acción para saber lo que se está haciendo. Desafortunadamente, personas con este perfil son las que le dan una mala reputación a los sistemas VoIP (y a quienes nos encargamos de ofrecerlos), haciendo que se genere desconfianza para muchos por culpa de tan solo algunos.

Una vez más, no me queda recomendarles mas que asegurar sus equipos. Hoy más que nunca, los fraudes telefónicos están a la orden del día.

¡Suerte!

Como agregar contextos personalizados en todos los servidores de un cluster con Vicidial

13 Oct

Hoy me di a la tarea de implementar un plan de llamadas personalizado en un cluster de Vicidial: mi cliente no quería que existiera la posibilidad de que los agentes marcaran manualmente desde su X-Lite, y al tratarse de un entorno de múltiples servidores, a la larga resultaría complicado mantener por separado cada uno de los archivos extensions.conf de los servidores.

¿Cuál es entonces la mejor manera para crear contextos de plan de llamadas que aparezcan en TODOS los servidores instalados en un cluster de Vicidial sin tener el problema de replicar manualmente los cambios?

La respuesta viene con las últimas versiones de Vici (2.2+) ya que bajo Admin -> System settings viene un espacio interesante donde podemos agregar planes de llamadas personalizados: el Custom Dialplan Entry.

Custom Dialplan Entry para Vicidial

Sin embargo, hay un problema, y es que todo lo colocado en esta caja se escribe dentro del contexto [vicidial-auto], por lo que si decidimos ingresar contextos por separado, romperiamos la funcionalidad del plan de llamadas automático de Vici, pero el truco es más sencillo de lo que se cree. Solo tenemos que iniciar y terminar nuestro bloque con las siguientes líneas:

[codesyntax lang=»bash»]

include => vicidial-auto2

; Este es mi contexto personalizado
[agentes]
exten => _ZXXX,1,Dial(SIP/${EXTEN})
; Fin de mi contexto personalizado

[vicidial-auto2]

[/codesyntax]

¿Qué logramos hacer con esto? Hacemos que nuestro cluster genere todos los contextos personalizados que metamos en medio de nuestras lineas, pero además, no rompemos la funcionalidad de Vici porque la línea de include => vicidial-auto2 hace que la inclusión del contexto [vicidial-auto2] sea transparente, de manera que no rompemos ninguna de las funcionalidades del sistema, y evitamos tener que administrar una linea de comandos para que la exportación de la configuración sea más transparente.

Este truco me sacó de un problema que sé que a la larga, se habría perdido el control de la administración tarde o temprano.

¡Suerte!

¡Inauguramos nuestra tienda en línea!

5 Oct

Tienda VoIPEl día de hoy damos por iniciado el proyecto que llevamos algunos meses cocinando: nuestra tienda en línea de equipo VoIP. Obviamente, todo el equipo que ofrecemos es compatible con Asterisk, por lo que no habría ningún problema por instalarlo y echarlo a andar en tu nuevo proyecto o en tu conmutador SIP ya existente.

Al navegar en la tienda encontrarán productos de marcas como Digium, Aastra, Yealink, Cisco, Sangoma y Polycom. Conforme cubramos más territorio en términos de nuevos productos los iremos agregando al catálogo, pero por lo pronto ya pueden conocer los equipos que manejamos y que enviamos a todo México.

Pueden acceder a nuestra tienda en línea usando este link o bien, dando click en la pestaña que aparece en el extremo superior derecho.

 

Recuperar la contraseña de FreePBX

3 Oct

Muchos han pedido un tutorial de como recuperar la contraseña de FreePBX, lo cual es bastante sencillo una vez que tienes la contraseña de root de Linux. Asumiendo esto, el proceso a seguir es bastante fácil, solo hay que cambiar los passwords desde MySQL. Aquí pongo los comandos directos para hacerlo desde el CLI de Linux (estamos asumiendo que el password de root de MySQL es eLaStIx.2oo7)

Si tienes FreePBX 2.5 o inferior:

[codesyntax lang=»bash»]
echo «UPDATE asterisk.ampusers SET password=’minuevopass’ WHERE username = ‘admin'» | mysql -peLaStIx.2oo7 asterisk
[/codesyntax]

Si tienes FreePBX 2.6 o superior

[codesyntax lang=»bash»]

echo "UPDATE asterisk.ampusers SET password_sha1=SHA1('minuevopass') WHERE username = 'admin'" | mysql -peLaStIx.2oo7 asterisk

[/codesyntax]

Con FreePBX 2.6+ la contraseña se guarda como hash SHA1, por lo que no es posible recuperarla. Sin embargo, en versiones anteriores se guardaba en texto plano, por lo que un simple SELECT nos revelaria cual era la contraseña que teniamos.

OJO: obviamente es necesario cambiar «minuevopass» por lo que queramos que sea nuestra nueva contraseña

¡Suerte!

6 razones por las cuales tu campaña en Vicidial podría no funcionar

28 Sep

Como se ha visto, recientemente hemos tenido mucho movimiento sobre Vicidial, que es una suite open source para instalar un callcenter completo sobre Linux. Pues bien, es bastante común que dado lo complejo que resulta este sistema cometamos errores y que por lo tanto nuestras campañas de marcación predictiva no saquen llamadas al exterior. Aquí recopilo algunos de los errores más comunes al momento de hacer marcación predictiva hacia el exterior:

  • Las campañas tienen el horario incorrecto. Muchas veces, las pruebas las hacemos en las noches y movemos la hora de las llamadas para entender por que no salen. Primer paso: asegurémonos de que la hora de la campaña sea la correcta y que estemos haciendo pruebas dentro del horario REAL en que se supone que nuestras campañas deben de correr.
  • No hay leads disponibles para marcar. Asegurémonos que las listas que tenemos dadas de alta para nuestra campaña tengan leads con los status de marcación válidos. Normalmente, marcamos a los NEW (nuevos leads), NA (No Answer) y B (Busy). Si nuestra lista está llena de leads que no tienen estos status, no se marcará hacia ellos. Agreguemos los nuevos status que queramos dentro de la campaña para ser válidos de remarcarles o bien, importemos nuevos leads para reintentar la operación.
  • No hay leads en el hopper. Si mandamos llamadas demasiado rápido o tenemos muchos agentes, lo más probable es que nos agotemos el hopper realmente rápido. Lo ideal es que nuestro hopper level (a nivel de campaña) esté ubicado en al menos 2.5 veces el número de agentes que podemos tener en línea en un momento dado. Este error es fácil de encontrar ya que nos aparecen indicaciones al hacer login como agente, asi que no debería ser problema localizar de que se trata.
  • Las llamadas no están saliendo a pesar de tener agentes en línea. Esto me pasó recientemente: todos los problemas de arriba habían sido verificados, pero había 5 agentes en línea y ninguno recibía llamadas. El problema fue de que tenía yo creada una campaña de marcación automática con agentes remotos (para enviar mensajes pre-grabados) y esto ocasionó que nos termináramos la cantidad de troncales disponibles para marcar al exterior (aunque nunca se usaron). Moraleja: asegúrate que bajo System Settings, el valor de Max Vicidial Trunks sea más grande que la cantidad total de agentes que tengas en un momento dado, y en caso de que así sea, asegúrate de no tener agentes remotos activos que tengan múltiples lineas de salida activadas. Al parecer, Vicidial reserva lineas aún para los agentes remotos que no las están usando.
  • Las llamadas no enlazan: dan un timeout y la interfaz de agente se queda esperando en estado «ringing». Comúnmente es ocasionado por enlaces digitales que NO son ISDN, como R2 modificado. Algunos proveedores dan mensajes grabados en early media audio dando grabaciones como «el número que marcó no existe». Normalmente, una persona escucharía esto y sabría que hacer, pero un sistema piensa que la llamada nunca se contestó y por lo tanto, ocurre un timeout porque 1) nunca obtuvimos ring y 2) nunca nos contestaron. La única solución es cambiar de enlace o cambiar a marcación manual, de manera que nuestros agentes puedan catalogar por ellos mismos el estado de las llamadas.
  • Las llamadas se cortan a los pocos segundos y nunca se enlazan a los agentes. Descubrí que si en la marcación automática haces un ANSWER antes de enviar un DIAL (es decir, sin un ringing de por medio), Vicidial nunca te enlaza las llamadas y te las marca como NA (No Answer). Lo correcto es que siempre debe haber un ringing antes de que la llamada sea contestada. Con eso evitarás que se marque pero nunca comunique a los agentes.

Como siempre, habrá muchas otras cosas que puedan pasar, pero en este caso estas son las más comunes. Conforme nuestra experiencia vaya aumentando, iremos ampliando la lista.

¡Suerte!

Como reiniciar masivamente todos los dispositivos Cisco SPA de tu red

27 Sep

El día de ayer publicamos un mini tutorial de como reiniciar masivamente todos los teléfonos Aastra de nuestra red. Hoy publicamos el equivalente aplicable para todos los teléfonos Cisco SPA (esto aplica también para la vieja gama de Linksys/Sipura).

El código es aún más sencillo que el de ayer:

[codesyntax lang=»php»]

#!/bin/bash
RED=192.168.1.1/24
echo "Escaneando $RED ..... "
for IP in `nmap -sP -v $RED | grep "appears to be up" | cut -d' ' -f 2`
do
   wget -qT 1 --no-cache http://$IP/admin/reboot -O - > /dev/null
done

[/codesyntax]

Con un poco de ingenio, podemos mezclar ambos scripts para que en caso de tener mezcla de teléfonos, reiniciemos todo lo que nos encontremos.

¡Suerte!

Como reiniciar masivamente los teléfonos Aastra de tu red

26 Sep

Recientemente nos topamos con la necesidad de resetear cerca de 200 teléfonos Aastra en una misma red. Pudimos haber esperado a que los teléfonos comenzaran a registrarse solos, pero debido a que era un soporte de emergencia, utilizamos este script:

[codesyntax lang=»bash»]

#!/bin/bash
USER=admin
PASS=22222
RED=192.168.1.1/24
echo "Escaneando $RED ..... "
for IP in `nmap -sP -v $RED | grep "appears to be up" | cut -d' ' -f 2`
do
   wget -qT 1 --no-cache --http-user=$USER --http-passwd=$PASS http://$IP/logout.html -O - > /dev/null
   wget -qT 1 --no-cache --http-user=$USER --http-passwd=$PASS http://$IP/sysinfo.html -O - > /dev/null

   # Reset
   echo Reiniciando $IP
   wget -qT 1 --no-cache --post-data=resetOption=0 --http-user=$USER --http-passwd=$PASS http://$IP/reset.html -O - >/dev/null
done

[/codesyntax]

Lo que éste hace es escanear la red, abrir la interfaz web de todos los teléfonos, accesa con el usuario y contraseña default (admin/2222) y una vez adentro ingresa al menú Reset y posteriormente acciona el reseteo del teléfono. Para hacer uso de este script es necesario hacerlo ejecutable (chmod 755) y cambiar la variable de RED para que concida con la red que queremos resetear.

¡Suerte!

 

Terminado el curso de Vicidial

12 Sep

Durante los últimos 4 días estuve en Tampa, FL tomando un curso acerca de Vicidial, una suite open source con marcador predictivo para call centers basados en Asterisk. El curso fue impartido por Matt Florell, el creador del software, y durante las horas que estuvimos en el salón de clases pude aprender y corroborar muchos detalles interesantes sobre este sistema que aunque lleva varios años en el mercado, pocos se han dado a la tarea de conocerlo.

El curso se divide en 2 partes: el Manager y el Admin. Durante el curso de Manager se da una explicación a detalle de como utilizar la interfaz web de Vicidial: como se crean campañas de entrada y salida, como se cargan registros, como se configuran carriers para enviar las llamadas, como podemos controlar la distribución de llamadas entre los agentes, etc. Todas y cada una de las opciones de las más de 200+ que hay para alterar en la suite fueron vistas y explicadas. A pesar de que en la interfaz web es posible leer la documentación HTML que viene con el software, muchas veces las cosas no se comprenden tan bien como cuando puedes debatirlas, y este fue uno de los casos. Inclusive las explicaciones ayudaron a visualizar escenarios que no habiamos contemplado, pero que pueden resultar muy útiles para cualquier callcenter.

En la segunda parte del curso se vieron detalles mucho más técnicos: como instalar el sistema, como hacer troubleshooting, cuales son las causas comunes de que un sistema de estos falle (el famoso time synchronization error o el there are no available sessions), así como muchas otras características avanzadas que el mortal promedio no ocupa, como el uso de los APIs, la captura extendida de números telefónicos, etc. Al final terminamos con una instalación de Vicidial en cluster (lo que ofrece máxima escalabilidad al sistema) y corrimos pruebas de rendimiento para comprobar que todo estuviera bien y supiéramos hasta donde podemos llegar con él. En general, un curso muy teórico y con mucha información. Debo reconocer que mis favoritos fueron los últimos dos días, pues fue cuando realmente tuve oportunidad de jugar con el sistema.

Vicidial hoy en día es un producto que deja muy por atrás a toda la competencia, tanto en funcionalidades como en precio. Aquellos que han probado el módulo de callcenter de Elastix puedo decirles fácilmente que no tiene nada que ver con Vicidial: Elastix fue pensado como un PBX para empresa, no como medios para un callcenter, y Vici está muy por encima en funcionalidades. ¿Acaso el precio podría hacer la diferencia? No, porque es el mismo que con el resto del open source: ¡gratis!, así que tampoco es necesaria una inversión millonaria en sistemas como Avaya o Cisco que a pesar de ser propietarias, se quedan cortos en características.

En mi opinión personal, el único problema que le veo a un software como Vici es precisamente su mayor fortaleza: el grado de complejidad que tiene lo hace para alguien sin conocimientos resulte una tarea muy complicada el tratar de echar a andar una campaña con él. Sin embargo, una vez que se libra esa curva de aprendizaje, los que ahora lo conocemos sabemos que es bastante sencillo de ocupar, y que pueden hacerse cosas geniales con él. Repetiré lo que les digo a mis alumnos del curso de Asterisk: el límite de lo que puedes hacer, es la capacidad del administrador.

Para más información sobre este software, visiten vicidial.org. Si requierieras apoyo profesional para una implementación de Vicidial para un callcenter, por favor utiliza nuestro formulario de contacto.

¡Suerte!