Redireccion de llamadas al estilo elastix 1.6

Hola, cuando instalé Elastix 2.5 y 4.0 vi que en la redireccion de llamadas sólo me pedia hacia dónde queria desviarlas, yo recuerdo que cuando tenia la version 1.6 de elastix el pbx me pedia de donde (origen) a “donde” (destino) quería hacer la redireccion de llamadas.

Así que lo pude solucionar colocando este código en el archivo “/etc/asterisk/extensions_override_freepbx.conf”

 

[app-cf-on]
include => app-cf-on-custom
exten => *72,1,Answer
exten => *72,n,Wait(1)
exten => *72,n,Macro(user-callerid,)
exten => *72,n,Playback(call-fwd-unconditional)
exten => *72,n,Playback(please-enter-your&extension)
exten => *72,n,Read(fromext,then-press-pound,,,,)
exten => *72,n,Set(fromext=${IF($[“foo${fromext}”=”foo”]?${AMPUSER}:${fromext})$
exten => *72,n,Wait(1)
exten => *72,n(startread),Playback(ent-target-attendant)
exten => *72,n,Read(toext,then-press-pound,,,,)
exten => *72,n,GotoIf($[“foo${toext}”=”foo”]?startread)
exten => *72,n,Wait(1)
exten => *72,n,Set(DB(CF/${fromext})=${toext})
exten => *72,n,Playback(call-fwd-unconditional&for&extension)
exten => *72,n,SayDigits(${fromext})
exten => *72,n,Playback(is-set-to)
exten => *72,n,SayDigits(${toext})
exten => *72,n,Macro(hangupcall,)
exten => _*72.,1,Answer
exten => _*72.,n,Wait(1)
exten => _*72.,n,Macro(user-callerid,)
exten => _*72.,n,Set(DB(CF/${AMPUSER})=${EXTEN:3})
exten => _*72.,n,Playback(call-fwd-unconditional&for&extension)
exten => _*72.,n,SayDigits(${AMPUSER})
exten => _*72.,n,Playback(is-set-to)
exten => _*72.,n,SayDigits(${EXTEN:3})
exten => _*72.,n,Macro(hangupcall,)

; end of [app-cf-on]

una vez que guardamos los cambios recargamos la configuracion sip (sip reload desde el cli, y dialplan reload)

Hasta la próxima.

Publicado en Linux | Deja un comentario

Asterisk Dial Options para Limitar las llamadas a 2 Horas

El otro día me habló Yetzabel diciéndome: “Inge, ayúdeme porque tengo a la persona en la linea y no se la puedo transferir a mi jefe”. Fui hacia donde ella estaba y tenía una llamada pero no la podía transferir, ni con ## (blind transfer), ni con *2.

Tuvimos que pedirle a la persona que volviera a marcar en 3 minutos. Hablando con Yetzabel me dijo que ella le había marcado a la persona para posteriormente transferirla con su jefe, osea hizo una llamada hacia el exterior y de ahí quiso transferirla a una extensión.

Me dije, “esto es cosa del diablo”, me percaté que este escenario ocurría en todas las extensiones, osea era en general. Si podían transferir pero llamadas internas o que una llamada de fuera les cayera en su extensión.

Esto es porque asterisk no tiene configurado el “asterisk dial options”

En Freepbx —> opciones avanzadas, Asterisk Dial Options sólo tenia Tr, así que lo modifiqué como se vé en la figura y aproveché para limitar las llamadas a 2 Horas.

asterisk_dial_options

Asterisk Dial Options está definido por 2 campos:

  • Asterisk Outbound Trunk Dial Options (for outgoing external calls)
  • Asterisk Dial Options (for other types of calls)

Acá una tabla de las opciones que tenemos:

Option                                       Description

D(called:calling)         Send the specified digits after the called party has answered, but before the call gets bridged. The ‘called’ digits are sent to the called party, and the ‘calling’ digits are sent to the calling party. Both arguments can be used alone.

h     —->  Allow the called party to hang up by using the In-Call Asterisk           Disconnect code (default value is **)

H    —-> Allow the calling party to hang up by using the In-Call Asterisk Disconnect code (default value is **)

i    —–> Any forwarding requests that may be received on this dial attempt will be ignored.

I   —–> Any connected line update requests or any redirecting party update requests that may be received on this dial attempt will be ignored.

r  —->  Generate ringing to the calling party, even if the called party is not actually ringing. Pass no audio to the calling party until the called channel has answered.

S(x)  —–> Hang up the call x seconds after the called party has answered the call.

t  —–>  Allow the called party to transfer the calling party by using the In-Call Asterisk Blind Transfer code (default value is ##)

T  —–>  Allow the calling party to transfer the called party by using the  In-Call Asterisk Blind Transfer code (default value is ##)

w  —–> Allow the called party to enable recording of the call by using the  In-Call Asterisk Toggle Call Recording code (default value is *1)

W  —–> Allow the calling party to enable recording of the call by using the  In-Call Asterisk Toggle Call Recording code (default value is *1)

 

Con esa configuracion ya Yetzabel podia transferir las llamadas y de paso limitamos todas las llamadas a 2 hrs.

Saludos.

Publicado en Linux | Deja un comentario

Configurando un IVR en Elastix 2.5

Hola como están, esta vez les describiré el proceso que llevé a cabo para instalarme un ivr en el PBX.

Lo primero que hice fue convertir el audio de bienvenida que me mandaron en mp3 a archivo wav monoaural, de 16 bits y tasa de muestreo a 8000 HZ.

Pueden hacerlo con Sox o  incluso hay un recurso muy bueno en linea: http://audio.online-convert.com/es/convertir-a-wav

convert_to_wav_asterisk

Ya que tenemos el audio convertido a wav nos conectamos a nuestro pbx y colocamos el archivo en la ruta:  /var/lib/asterisk/sounds/custom

Para nuestro caso hemos puesto un archivo wav llamado bienvenida.

ivr5

Le damos permisos a asterisk de utilizar este archivo con chmod asterisk:asterisk /var/lib/asterisk/sounds/custom.

Si nos movemos a ese directorio y le pasamos el comando ls -lh debe mostrarse mas o menos así.

ivr4

En elastix vamos al apartado de grabaciones y creamos una grabación llamada “bienvenida”

ivr6

Luego de crearla creamos el anuncio llamado “bienvenida”

Elegimos la grabación que previamente creamos, en repetir ponemos deshabilitar y el destino tras la reproduccion elegimos un ring group (ustedes pueden elegir alguna extension si lo prefieren).

ivr7

grabamos cambios y ahora nos vamos al apartado ivr y creamos uno, elegimos la grabación que creamos “bienvenida” habilitamos la marcacion directa ya que en la grabación mencionamos que si conoce el numero de extensión lo digite, en tiempo de espera ponemos 2 segundos y grabamos cambios.

ivr8

 

Hasta ahora ya está creado nuestro ivr, ahora hay que programar para que cuando entren las llamadas las conteste el ivr, para ello nos vamos a rutas entrantes.

ivr9

Como ya tengo la ruta entrante principal creada, elijo que la conteste el ivr en la opción Set Destination.

ivr10

 

Hasta ahora ya lo tenemos corriendo, el ivr que creamos desde la interface de elastix, creó el código  en el archivo extensions_additional.conf.

¿si el usuario digita algun numero mal? asterisk no sabe como proceder y corta la llamada si el usuario falla al digitar la extension, el ivr le debe decir que el numero esta mal y que lo intente nuevamente. Tambien quiero que si se equivocan 3 veces que la llamada termine.

Dicho esto abrimos el archivo extensions_override_freepbx.conf con  nano /etc/asterisk/extensions_override_freepbx.conf

y modificamos nuestro código del ivr

[mi-ivr]

include => mi-ivr-custom
include => from-did-direct-ivr
include => ext-queues
exten => s,1,Set(LOOPCOUNT=0)
exten => s,2,Set(MSG=custom/bienvenida)
exten => s,n,Set(__DIR-CONTEXT=)
exten => s,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT})
exten => s,n,Set(_IVR_CONTEXT=${CONTEXT})
exten => s,n,GotoIf($[“${CDR(disposition)}” = “ANSWERED”]?begin)
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n(begin),Set(TIMEOUT(digit)=2)
exten => s,n,Set(TIMEOUT(response)=2)
exten => s,n,Set(__IVR_RETVM=)
exten => s,n,ExecIf($[“${MSG}” != “”]?Background(${MSG}))
exten => s,n,WaitExten(,)
exten => s,n,Goto(ext-group,600,1)
exten => hang,1,Playback(vm-goodbye)
exten => hang,n,Hangup
exten => i,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])
exten => i,n,GotoIf($[${LOOPCOUNT} < 2],Noop())
exten => i,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1)
exten => i,n,Playback(pbx-invalid)
exten => i,n,Goto(s,2)
exten => t,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])
exten => t,n,GotoIf($[${LOOPCOUNT} < 2],Noop())
exten => t,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1)
exten => t,n,Playback(pbx-invalid)
exten => t,n,Goto(s,2)

Grabamos cambios y recargamos la configuracion… (dialplan reload, sip reload)

Hasta la proxima…

 

 

Publicado en Linux | Deja un comentario

Instalando codec G729 en Elastix – Asterisk

Hola nuevamente, otra vez la necesidad me llevó a solventar este asunto ya que mi centralita al hacer la llamada por troncal iax se escuchaba muy mal, la razón porque no tenia registrado el codec g729, la arquitectura del servidor donde tengo instalado elastix con asterisk 11, es de 64 bits si este es su caso pueden usar el modulo que utilizé descargandolo desde aqui

si tienen otra arquitectura pueden visitar este link

una vez que lo hayan descargado deben copiarlo al directorio donde se encuentran los modulos de asterisk en mi caso /usr/lib64/asterisk/modules

una vez depositado ahi, abrimos una consola, nos movemos a esa ruta y le damos permisos de ejecucion al archivo: chmod 755 codec_g729-ast110-gcc4-glibc-x86_64-pentium4.so

despues de ello reiniciamos amportal con: amportal restart.

Ahora entramos al CLi de asterisk y ejecutamos la instruccion: core show translation recalc 10

Veremos que ya lo tenemos registrado.

Sin título

Hacemos una prueba marcando y esperamos los resultados satisfactorios. Espero les sirva !!

 

 

 

 

Publicado en Linux | Deja un comentario

Configurando E1 R2 modificado en tarjeta Sangoma A101 Elastix 4.0

Hola que tal, me vi en la necesidad de armar un pbx de respaldo y aprovechando que tenía   una tarjeta E1 Sangoma A101  para aceptar un servicio E1 de Voz del carrier Telmex, procedí a instalarla en un server poweredge que tenia, me descargué Elastix 4 la versión estable y procedí a instalar elastix 4. Terminando la instalacion e insertadala tarjeta sangoma en nuestro server, escribimos en consola  un lspci | grep Net  para ver si la reconoce el sistema operativo:

[root@pbx ~]# lspci | grep Net
05:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
09:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
0f:04.0 Network controller: Sangoma Technologies Corp. A200/Remora FXO/FXS Analog AFT card
[root@pbx ~]#

La reconoce como una A200 es normal así que lo primero que haremos será detener los servicios de amportal, wanrouter y dahdi…

# amportal stop

# service dahdi stop

# wanrouter stop

parando amportal

 

Como Elastix ya viene compilado con wanpipe, dahdi y openr2, procedemos a correr el comando wancfg_dahdi

wancfg_dahdi_1

Elegimos la opcion 1 para que genere el archivo /etc/asterisk/chan_dahdi.conf

Luego nos pide seleccionar si es T1 o E1, en nuestro caso seleccionamos E1 (la opcion 2)

wancfg_dahdi_2

Luego en la opcion de “configuring port 1 on AFT-A101 as E1, line coding:HDB3, framing:CRC4” elegimos la opcion 2 para configurarlas por separado. que seria para line coding HDM3 y para framing la opcion NCRC4 (opcion 2)

wancfg_dahdi_4

El clock lo seleccionamos en NORMAL

en signalling seleccionamos la opcion 1 “Zaptel/Dahdi – PRI CPE

en switchtype seleccionamos la opcion 5 “Euro ISDN”

wancfg_dahdi_5

Como mi E1 es de 30 canales lo configuro completo opción 1, (si ustedes tuvieran menos canales elegirían la opción 2 (Fraccional)

El dialplan context seleccionamos “from-pstn” opcion 1

Luego presionamos Enter para continuar… y nos mostrará el sumario de la configuración.

wancfg_dahdi_6

Presionamos 1 para continuar…

 

wancfg_dahdi_8

Ahora elegimos la opcion de guardar cfg y detener los servicios de wanpipe y asterisk. (opción 3)

agregamos iniciar wanrouter en el booteo del sistema (opción 1 YES)

would you like to execute ‘dahdi_cfg’ each time wanrouter starts? elegimos opcion 1 YES.

Ahora lo que sigue es editar el archivo /etc/wanpipe/wanpipe1.conf

localizamos la linea TE_SIG_MODE     y el tipo de señalización lo cambiamos a CAS. quedando de la siguiente manera: TE_SIG_MODE    = CAS

tambien buscamos la linea TE_RX_SLEVEL = 430 y cambiamos el valor a 120. grabamos cambios y salimos.

ahora editamos el archivo /etc/dahdi/system.conf

cambiamos las zonas a méxico…

loadzone=mx
defaultzone=mx

más abajo donde se muestra comentada nuestra tarjeta sangoma detectada…

span=1,1,0,cas,hdb3
cas=1-15:1101
cas=17-31:1101
echocanceller=mg2,1-15,17-31

Se vería mas o menos así…

#autogenerated by /usr/sbin/wancfg_dahdi do not hand edit
#autogenrated on 2016-05-04
#Dahdi Channels Configurations
#For detailed Dahdi options, view /etc/dahdi/system.conf.bak
loadzone=mx
defaultzone=mx

#Sangoma A101 port 1 [slot:4 bus:8 span:1] <wanpipe1>
span=1,1,0,cas,hdb3
cas=1-15:1101
cas=17-31:1101
echocanceller=mg2,1-15,17-31

Ahora editamos el archivo /etc/asterisk/chan_dahdi.conf

Les comparto como quedó el mio…

;autogenerated by /usr/sbin/wancfg_dahdi do not hand edit
;autogenrated on 2016-05-04
;Dahdi Channels Configurations
;For detailed Dahdi options, view /etc/asterisk/chan_dahdi.conf.bak

[trunkgroups]

[channels]
language=es
context=from-pstn
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
relaxdtmf=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=no


;Sangoma A101 port 1 [slot:4 bus:15 span:1] <wanpipe1>

immediate=no
signalling=mfcr2
mfcr2_variant=mx
mfcr2_get_ani_first=no
mfcr2_max_ani=10
mfcr2_max_dnis=4
mfcr2_category=national_subscriber
mfcr2_mfback_timeout=-1
mfcr2_metering_pulse_timeout=-1
mfcr2_forced_relaase=no
; this is for debugging purposes
mfcr2_logdir=log
mfcr2_logging=all
; end debugging configuration
context=from-pstn

echocancel=256
echocancelwhenbridged=no
echotraining=no
group=0
channel =>1-15,17-31

Graban los cambios y reinician el server.

Ya que volvio a levantar nos metemos al cli de asterisk y escribimos mfcr2 show channels

para que nos muestre los canales de nuestro E1, se veria algo así…

verificacion de canales E1

En Rx CAS me los muestra en block porque no le he conectado el E1 ya conectandolo se veria así…

mfcr2_idle

Saludos y espero que les sirva..

 

Publicado en Linux | 9 comentarios

Creando ruta estática y aplicarla con shorewall 4 en ubuntu server 12.04 LTS

Tuve un problema en mi trabajo con mi gateway linux, que tuve que reconfigurar todo a mano otra vez (no tenia respaldo) bien dicen que al mejor cazador se le va la liebre🙂. Volví a levantar squid3, volví a instalar webmin, y estoy volviendo a levantar openvpn, pero en este  post, les describiré el uso de rutas estáticas ya que en mi trabajo mi Lan debe poder ver otra Lan Remota, tengo un Fortinet 60D que hace VPN con otro Fortinet 60C. El fortinet 60D está en el mismo segmento de red que mi lan, por consiguiente este dispositivo fortinet es el gateway o pasarela por donde debe pasar tráfico cuando se requiere llegar a la lan remota. acá un ejemplo:

MultiZone1

El el ejemplo eth0 es la interfaz que me da acceso a internet (WAN) y eth1 es la interfaz que se comunica con mi LAN o red local.

Supongamos que en eth1 de mi ubuntu server tengo la direccion  ip fija 154.5.4.100/16

Edito el archivo /etc/network/interfaces

y agrego la ruta con

post-up route add -net 154.7.0.0 netmask 255.255.0.0 gw 154.5.4.101
post-down route del -net 154.7.0.0 netmask 255.255.0.0 gw 154.5.4.101

Quedando el archivo como sigue:

interfaces

Reiniciamos el servicio de red o en su defecto reiniciamos el servidor.

Con esto ya tenemos definida nuestra ruta estática y escribimos en consola el comando route para ver la tabla de ruteo:

route

Si hago un ping desde el gateway ubuntu hacia un equipo de la lan remota ya me responde. Pero si el ping lo hago desde cualquier equipo de mi lan hacia la lan remota no obtengo respuesta ¿por qué?

Los equipos de mi lan no pueden alcanzar el host remoto porque mi gateway linux no los encamina a través del fortinet a pesar de que escribimos la ruta estática.

Tengo que decirle a shorewall como proceder en este caso, así que lo primero que hice fue definir una nueva zona para la red remota en /etc/shorewall/zones

zonas

defini la zona diam como hija de la zona loc, ambas de tipo ipv4

/etc/shorewall/zones

#ZONE       TYPE      OPTIONS
fw          firewall
net         ipv4
loc         ipv4
diam:loc    ipv4

y en /etc/shorewall/hosts

#ZONE               HOSTS                        OPTIONS
diam                eth1:154.7.0.0/16          -

Reiniciamos shorewall…. y listo.

service shorewall restart
Publicado en Linux | Deja un comentario

Creando usuarios con net user en Windows Server 2008 R2

Buenas tardes; esta tarde estaba preparando algunas cosas en mi servidor y entre ellas vi la necesidad de crear 45 usuarios que utilizarían los recursos del server.

Para no crearlos manualmente porque luego puede haber fallas escribiendo la contraseña decidí crear un script en .bat que hiciera esta labor… yo necesitaba crear el usuario, asignarle un fullname, una descripcion, que no caducara la contraseña y que el usuario no pudiera cambiar el password (algo típico en la administración)

propiedades

Bueno sin mas preambulos esto lo hice con las siguientes lineas:

Linea 1

net user tuusuario tupassword /fullname:”Caja General” /comment:”Contabilidad” /passwordchg:no /add

Linea 2

WMIC USERACCOUNT WHERE “Name=’tuusuario'” SET PasswordExpires=FALSE

La linea 2 es para que se habilite el check del password nunca expira.

y listo se hacen estas dos lineas para cada usuario.

Publicado en Servidores Windows | Etiquetado , , | Deja un comentario

Creando usuario para ver CDR sin permisos de administrador en Elastix

Hola nuevamente, tenia el problema de que en la empresa me estaban solicitando un usuario que pudiera ver todas las llamadas en el sistema elastix, pero claro este usuario es un simple mortal y no debe tener acceso a todos los demás módulos de elastix porque nos podría hacer un des…orden.

Tengo la version 2.4 estable de elastix, lo primero que hice fue crear un grupo llamado “auditor” seleccioné los permisos al cual tiene derecho el grupo.

despues creé el usuario “auditor” (sin asignarle ninguna extensión)  y lo metí al grupo del mismo nombre.

Captura de pantalla de 2014-10-07 17:18:08

Ahora se debe modificar el código de un archivo PHP.

  • Realizamos copia del archivo “/var/www/html/libs/paloSantoACL.class.php” para tenerlo respaldado en caso de tener que restaurarlo.
  • Ahora Editamos el archivo original “/var/www/html/libs/paloSantoACL.class.php” y buscamos la función “isUserAdministratorGroup”, aparecerá de la siguiente forma:

paloSantoACL.class.php

  • Ahora modificamos la función, agregando un chequeo al array de grupos para ver si el usuario pertenece al grupo que creé anteriormente, tener cuidado el grupo debe coincidir con el creado anteriormente.

Captura de pantalla de 2014-10-07 17:48:57

Con esto grabamos los cambios e intentamos entrar al sistema con el usuario creado.

Saludos.

Publicado en Linux | 2 comentarios

Colocando Password al Chan Spy en Elastix

Hola nuevamente, despues de un tiempo sin postear nada vuelvo a resurgir…

Esta vez les hablaré de como asignarle un password a la función de chan spy que trae asterisk (marcación 555 por default). Esta funcion es para escuchar los canales de voz del PBX, desafortunadamente esta marcacion está desprotegida. Si alguien de nuestras extensiones internas digita 555 activará la funcion y empezará a escuchar las llamadas. Para proteger esta funcion con un password lo que hay que hacer y es editar el archivo /etc/asterisk/extensions_override_freepbx.conf

y agregar las siguientes lineas:

[app-chanspy]
include => app-chanspy-custom
exten => 555,1,Macro(user-callerid,)
exten => 555,n,Answer
exten => 555,n,Wait(1)
exten => 555,n,Authenticate(124537)
exten => 555,n,Wait(1)
exten => 555,n,ChanSpy()
exten => 555,n,Hangup

Notemos que en la linea 6 utilizamos la funcion Autenticate para solicitar el password (sustituye 124537 por tu password)

grabamos los cambios y recargamos  la configuracion desde el CLI con reload o renicia asterisk con:

core restart now

Prueben los cambios y tendrán mas segura su funcion de monitoreo de llamadas.

Publicado en Linux | Deja un comentario

Monitoreando mi Red con Ntopng

Buenas noches, una de las herramientas que usaba para monitorear mi red era Ntop, pero ahora ntop ha evolucionado a ntopng que es una herramienta de ultima generacion con respecto al original ntop.

en este apartado les describire el proceso que he empleado para instalar esta herramienta sobre el sistema Ubuntu Server 12.04 LTS 64 bits.

Antes de descargar e instalar la herramienta, cubrí los requisitos previos para instalarla:

apt-get install glib2.0 libgeoip-dev libpcap-dev libxml2-dev redis-server automake autoconf checkinstall, libtool

Despues procedemos a descargar ntopng:

svn co https://svn.ntop.org/svn/ntop/trunk/ntopng/

una vez descargado entramos a la carpeta… cd ntopng

Empezamos a compilar     ./configure

make

make install

Si no marcó errores ya tenemos la herramienta instalada.

para correrla en mi caso corro el siguiente comando: ntopng -w 3000 -i 4

donde -w 3000 (es el puerto donde la aplicacion escucha, por default el 3000)

-i 4 (es la interface de escucha puede ser eth0, eth1 o any) ejecuta la ayuda de ntopng con -h para mas detalles.

Salida ntopng

 

Ahora desde el navegador ingreso a http://ip_del_servidor:3000 (debemos tener permitido desde el firewall de la red acceso a este puerto)

Login ntopng

 

entramos con las credenciales por default.

ntopng_Top_Protocols

En el menu Hosts tiene varias cosas interesantes…. espero les sea de utilidad.

Publicado en Linux | Deja un comentario