Luis Abenza

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

Archive for the ‘Elastix’ Category

Horarios en Outbound Routes

La semana pasada me surgió la necesidad de configurar la salida de las llamadas a móviles por dos líneas diferentes según el horario. Para hacerlo con FreePBX (versión 2.3), lo que hice fue:

  1. Eliminar la máscara 6XXXXXXXX de la ruta saliente para móviles en la interfaz de FreePBX.
  2. Editar el fichero extensions_custom.conf, y añadir las siguiente líneas dentro de contexto [from-internal-custom], que automáticamente es llamado desde el contexto por defecto para todas las extensiones: [from-internal]:

    exten => _6XXXXXXXX,1,Answer()
    ;exten => _6XXXXXXXX,n,GotoIfTime(9:00-13:00|*|*|*?orange1)
    exten => _6XXXXXXXX,n,GotoIfTime(16:00-20:00|*|*|*?orange2)

    exten => _6XXXXXXXX,n(orange1),Dial(ZAP/3/${EXTEN})
    exten => _6XXXXXXXX,n,Dial(ZAP/4/${EXTEN})
    exten => _6XXXXXXXX,n,Dial(ZAP/2/${EXTEN})
    exten => _6XXXXXXXX,n,Hangup()

    exten => _6XXXXXXXX,n(orange2),Dial(ZAP/4/${EXTEN})
    exten => _6XXXXXXXX,n,Dial(ZAP/3/${EXTEN})
    exten => _6XXXXXXXX,n,Dial(ZAP/2/${EXTEN})

    exten => 6XXXXXXXX,n,Hangup()

Es un ejemplo muy sencillo, pero seguro que a alguien le puede venir bien.

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.

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]

Elastix 1.1

Ya está disponible la versión estable de Elastix 1.1, que entre otras cosas, nos trae:

  • Actualización de más de 130 paquetes
  • Calendario y Directorio telefónico en el nuevo módulo Agenda, que además nos permitirá configurar avisos telefónicos de nuestras citas
  • Mejoras sustanciales para el “Usuario”, con acceso directo a su email, calendario, faxes, buzón de voz, etc.

Yo ya me la estoy descargando, ¿y tu?.

Cliente de HUDlite

Una vez que tenemos instalado el servicio de HUDlite en nuestra centralita Asterisk podemos poner en marcha el cliente en los puestos que consideremos oportunos. Podemos descargar el cliente desde HUDlite.org.En el módulo HUDadmin veremos el usuario y contraseña que le corresponde a cada extensión, que serán los que hay que configurar en el cliente HUDlite. También debemos rellenar los siguiente datos:

  • Server name: IP de Asterisk
  • Server password: password
  • Server port: 6600

En el proceso de instalación podemos elegir que nos instale la compatibilidad con Outlook y el TAPI driver para sacar más provecho de este software.

Instalando HUDlite en Elastix

HUDLite LogoHUDlite es un programa que nos permite monitorizar las extensiones de nuestra centralita Asterisk, controlando su estado en tiempo real para saber si está libre u ocupada. Además, nos permite transferir llamadas, visualizar el parking de llamadas, llamar desde Outlook, comparar el número entrante con la agenda de Outlook y varias funcionalidades más.

Es un desarrollo de Fonality, y tiene una rápida integración con trixbox. Pero lo que nos ocupa aquí es ponerlo en marcha con Elastix.

(more…)

Elastix 1.0 estable!

Ya llego el día: Elastix 1.0
Ya estaba siendo utilizada con bastante éxito la versión 1.0RC2, y finalmente lanzaron la 1.0 Stable.

Version 1.0 Stable (Apr. 14 2008)
———————————

- Module Extension Batch changed to support more parameters of VoiceMail.
- Module GroupPermissions: Do not permit change the permissions of modules administratives to administrator group.
- In elastix.spec maintenaince, lines of create folder faxvisor comments, this folder is in source elastix.
- New language Catalan.
- Update module Hardware Detection, now zapata.conf is more complete.
- Add zapata.conf custom by elastix, in rpm freePBX.
- Maintenaice of rpm elastix-a2billing, name format changed. And validation directory /var/lib/asterisk/sounds/en/ exists.
- Updating rhino packages to 2.2.5.3 version.

Se puede descargar en:

http://downloads.sourceforge.net/elastix/Elastix-1.0-Stable-10abr2008.iso