Luis Abenza

Blog sobre temas como: Asterisk, VoIP, Mikrotik, Wireless, Web, Publicidad, …

Archive for July, 2008

Ya soy dCap!

Buen, pues ayer me comunicaron que superé tanto la prueba práctica como la teórica, así que ya soy oficialmente dCap.

dCap

Que ¿qué es dCap?. Pues podéis leer un post de Elio en el que lo define bastante bien, y del que extraigo un pequeño fragmento:

El título de certificado dCap es, como su mismo nombre indica (Digium Certified Asterisk Profesional), un Profesional de Asterisk Certificado por Digium y el mayor certificado que un profesional que trabaja con Asterisk puede tener.

BreezeNET B10 es un nuevo producto de conexión punto-a-punto de Alvarion, que ofrece las mismas ventajas de la familia BreezeNET B con una relación calidad/precio más ajustada. El producto es fácil de desplegar, soporta NLOS y dispone de QoS para las aplicaciones de voz y video.

La solución dispone de una antena integrada de 20dBi y se suministrará en una única caja que contendrá el enlace completo.

BreezeNET B es una familia de soluciones de puentes punto-a-punto inalámbricas que opera en las bandas no licenciadas y suministra una solución eficiente y de elevada seguridad para la conectividad y el enlace directo entre emplazamientos. Es una alternativa ideal a las costosas líneas dedicadas, proveyendo un enlace casi instantáneo para la conexión de oficinas locales remotas con las oficinas centrales, edificios aislados en campus o zonas industriales.

Además, la gama punto a punto BreezeNET B de Alvarion se ve reforzada por un nuevo interfaz E1/T1 simple de instalar y utilizar y permite el transporte de una línea E1/T1 sobre un enlace Ethernet lo que proporciona un reducción de costes con respecto a una línea dedicada convencional.

FreePBX ¿Sí o no?

Eterna discusión.

Los más puristas de Asterisk se muestran siempre en contra de esta herramienta y sus similares. Estoy de acuerdo en que se debe tener un profundo conocimiento de Asterisk, y saber configurarlo sin problemas con sus ficheros de configuración. Si no se tiene una base, cuando aparecen problemas con FreePBX estás perdido.

En cambio, desde un punto de vista empresarial, tanto por ofrecer una herramienta gráfica al cliente como por la velocidad de reacción ante peticiones, creo que FreePBX es una herramienta muy potente.

Eso sí, con clientes me refiero a administradores de sistemas de la empresa, con unos conocimientos adecuados y una pequeña formación acerca de lo que tiene y puede hacer.

Además, FreePBX es ya bastante flexible en cuanto a la edición de ficheros adicionales que no te limiten la funcionalidad de Asterisk (editando directamente).

Concluyendo, creo que la herramienta es adecuada y muy potente. El problema, es que lo ves, lo instalas y voila! funciona!. Ahora, amigo, tienes que tener un conocimiento de lo que hay detrás, porque cuando llegan problemas o peticiones “fuera de la interfaz” …. Vamos, que creo que el problema no está en la herramienta, sino en el uso que se le da.

Módulos FXO quemados

¿Qué le pasa a los módulos FXO cuando a Telefónica le da por meter tensión en las líneas?

11/07/2008

  • 0 Comments
  • Filed under: Sangoma
  • Ya me ha ocurrido un par de veces, tal y como se ha comentado en varias listas, que no termina de levantar el módulo SIP de Asterisk si perdemos la conexión a Internet y hay definida una o más líneas SIP.

    Esto lo podemos evitar montando un servidor de nombre (BIND) con cacheo en la propia máquina de Asterisk. Suponiendo que trabajamos con CentOS, el proceso sería más o menos así:

    yum -y install bind bind-libs caching-nameserver bind-chroot

    chkconfig named on

    service named start

    Ahora editamos el fichero /var/named/chroot/etc/named.conf para añadir los reenviadores (servidores DNS externos, que en nuestro ejemplo será los de opendns.com) dentro de la sección options:

    forwarders {
    208.67.222.222;
    208.67.220.220;
    };

    Por último, editamos el fichero /etc/resolv.conf para decirle a la máquina que se consulte a sí misma y lo dejamos así:

    search localdomain
    nameserver 127.0.0.1

    Reiniciamos el servicio de DNS:

    service named restart

    Ya habríamos terminado, pero hay que tener en cuenta que hay que dejar pasar unas horas….

    Llevába tiempo utilizando el códec g729 “opensource” en varias Asterisk en las que se utilizan un par de extensiones remotas. De vez en cuando saltaba la banca y nos daba algún error o problema, pero el que más me calentó la cabeza fue tras una actualización de los firmware del ST2030. Después de hacerlo, no funcionaba la comunicación.

    Bueno, pues después de ver esto, y releer el estupendo post de Elio sobre estas dos versiones del g729, tengo decidido no usarlo más. El de Digium funciona estupendamente y su coste es mínimo respecto a una instalación.

  • 0 Comments
  • Filed under: Asterisk, VoIP
  • Movimientos de empresas VoIP

    Recibo un mail de Sangoma en el que se anuncia la compra de la compañía Paraxip Technologies, empresa de “software” de VoIP enfocado al cliente final. Movimiento, cuanto menos, curioso, ya que Sangoma se mete en el mercado de sus clientes, compitiendo directamente con ellos.

    Los productos hardware de Sangoma son realmente buenos, así como su servicio. Esperemos que este movimiento no haga más que mejorar la satisfacción de sus clientes.

    Personalmente, esperaba algún movimiento dentro de los que es Hardware, ofreciendo una plataforma más completa al integrar sus equipos en placas del estilo de PC Engines. Que por cierto, es algo en la que ya está metida una empresa de Lugo…

  • 0 Comments
  • Filed under: Sangoma, VoIP
  • FreePBX Outbound Caller ID

    He tenido un problema con FreePBX (sí, ya…, ya lo sé…), porque el Caller ID de una línea no prevalecía sobre el Caller ID definido en la extensión. Este problema suponía que no se pudiese utilizar el proveedor IP, ya que no aceptaba la llamada al intentar meter un CID que no era el suyo.

    Finalmente, he conseguido solucionar el problema de momento modificando el extensions_additional.conf. La macro que mete el CID de la llamada extenerna es “macro-outbound-callerid”, y “de serie” viene así:

    [macro-outbound-callerid]
    include => macro-outbound-callerid-custom
    exten => s,1,GotoIf($["${REALCALLERIDNUM:1:2}" != ""]?start)
    exten => s,n,Set(REALCALLERIDNUM=${CALLERID(number)})
    exten => s,n(start),Noop(REALCALLERIDNUM is ${REALCALLERIDNUM})
    exten => s,n,GotoIf($["${KEEPCID}" != "TRUE"]?normcid)
    exten => s,n,GotoIf($["x${OUTKEEPCID_${ARG1}}" = "xon"]?normcid)
    exten => s,n,GotoIf($["foo${REALCALLERIDNUM}" = "foo"]?normcid)
    exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
    exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass:normcid)
    exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${REALCALLERIDNUM}/outboundcid)})
    exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
    exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}})
    exten => s,n,GotoIf($["${EMERGENCYROUTE:1:2}" = ""]?trunkcid)
    exten => s,n,GotoIf($["${EMERGENCYCID:1:2}" = ""]?trunkcid)
    exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
    exten => s,n,Goto(report)
    exten => s,n(trunkcid),GotoIf($["${TRUNKOUTCID:1:2}" = ""]?usercid)
    exten => s,n,Set(CALLERID(all)=${TRUNKOUTCID})
    exten => s,n(usercid),GotoIf($["${USEROUTCID:1:2}" = ""]?report)
    exten => s,n,Set(CALLERID(all)=${USEROUTCID})
    exten => s,n,GotoIf($["x${CALLERID(name)}"!="xhidden"]?report:hidecid)
    exten => s,n(hidecid),SetCallerPres(prohib_passed_screen)
    exten => s,n(report),Noop(CallerID set to ${CALLERID(all)})

    ; end of [macro-outbound-callerid]

    Bueno, pues al comprobar si tenemos marcada la opción “Never Override CallerID” (GotoIf($["x${OUTKEEPCID_${ARG1}}"...), que se supone que nos mantiene el CID definido en la linea sobre cualquier otro, nos manda a la etiqueta "normcid", que marca el CID como el definido en la extensión del usuario.

    Para que esto funcione como es debido podemos cambiar la macro a una como la de abajo:

    [macro-outbound-callerid]
    include => macro-outbound-callerid-custom
    exten => s,1,GotoIf($["${REALCALLERIDNUM:1:2}" != ""]?start)
    exten => s,n,Set(REALCALLERIDNUM=${CALLERID(number)})
    exten => s,n(start),Noop(REALCALLERIDNUM is ${REALCALLERIDNUM})
    exten => s,n,GotoIf($["x${OUTKEEPCID_${ARG1}}" = "xon"]?lineacid)
    exten => s,n,GotoIf($["${KEEPCID}" != "TRUE"]?normcid)
    exten => s,n,GotoIf($["foo${REALCALLERIDNUM}" = "foo"]?normcid)
    exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
    exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass:normcid)
    exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${REALCALLERIDNUM}/outboundcid)})
    exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
    exten => s,n(lineacid),Set(TRUNKOUTCID=${OUTCID_${ARG1}})
    exten => s,n,GotoIf($["${EMERGENCYROUTE:1:2}" = ""]?trunkcid)
    exten => s,n,GotoIf($["${EMERGENCYCID:1:2}" = ""]?trunkcid)
    exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
    exten => s,n,Goto(report)
    exten => s,n(trunkcid),GotoIf($["${TRUNKOUTCID:1:2}" = ""]?usercid)
    exten => s,n,Set(CALLERID(all)=${TRUNKOUTCID})
    exten => s,n(usercid),GotoIf($["${USEROUTCID:1:2}" = ""]?report)
    exten => s,n,Set(CALLERID(all)=${USEROUTCID})
    exten => s,n,GotoIf($["x${CALLERID(name)}"!="xhidden"]?report:hidecid)
    exten => s,n(hidecid),SetCallerPres(prohib_passed_screen)
    exten => s,n(report),Noop(CallerID set to ${CALLERID(all)})

    ; end of [macro-outbound-callerid]