Pequeños Post

Este Blog esta dedicado para Azul y para documentar mis líos en diferentes proyectos de tecnología.

viernes, 24 de junio de 2011

Solución para que todos los usuarios no solo el administrador pueda ver en monitoring todas las llamadas y no solo Admin

Bueno en este post esta la solución para que todos los usuarios no solo el administrador pueda ver en monitoring todas las llamadas y no solo las que hace la extensión relacionada cuando se crea el usuario en la WEB.

Para esto ya deben tener un usuario creado con los permisos modificados de lo que quieren que ese usuario pueda ver, en mi caso me cree un grupo llamado líder y allí solo muestro el panel del login del agente del Modulo Callcenter, el monitoring ,  Report ah y el Flash operator Pannel .

En elastix 2.0.2

1. cd /var/www/html/modules/monitoring/

2. cp index.php index.php.original -- copia de seguridad

3. Editar index.php, y busque la sección siguiente

Código:

$extension = $pACL->getUserExtension($user);
$esAdministrador = $pACL->isUserAdministratorGroup($user);

4. Editar esta sección, y dejarlo como:

Código:

$extension = $pACL->getUserExtension($user);
$esAdministrador = $pACL->isUserAdministratorGroup($user);
$esAdministrador=true;

Como se puede ver la línea añadida es:

Código:
        $esAdministrador=true;

#:wq! para guardar si usamos vim como editor y listo ya todos los usuarios podrán ver las grabaciones.


Solución para que todos los usuarios no solo el administrador puedan ver los reportes CDR.

Bueno en este post esta la solución para que todos los usuarios no solo el administrador puedan ver  los reportes CDR en Elastix.

Para esto ya deben tener un usuario creado con los permisos modificados de lo que quieren que ese usuario pueda ver, en mi caso me cree un grupo llamado líder y allí solo muestro el panel del login del agente del Modulo Callcenter, el monitoring ,  Report ah y el Flash operator Pannel .

1. root@host# sqlite3 /var/www/db/acl.db - Aquí es donde la información del usuario se almacena para elastix

2. sqlite> select * from acl_user; 

para localizar al usuario que se desea modificar. se vera algo como esto:

1|admin||7a5210c173ea40c32305a5de7dcd4cb0|
2|user1|pass|ddc542386d2f85e1b1ff763aff13ce0a|1000
3|user2|pass|98a8d3f11b400ddc06d7343235b71a84|2000
4|user3|pass|680561bec052fdbd2e3f98957a32228b|3000

Analicemos acá como vemos el  usuario1, 2,3 tiene una extensión relacionada que es la que está al final,  la  1000, 2000, 3000, pero admin no tiene ninguno.

Lo que vamos hacer es quitarle esa extensión y remplazarla por un cero al usuario que queramos que pueda ver todos los reportes CDR  de la siguiente forma

3. sqlite> .schema acl_user - opcional para asegurarse de que las columnas queden con el mismo nombre

4. sqlite> update acl_user set extension='0' where name='user1'; - Cambiar el nombre de usuario a usuario 1 y en extension='0' poner cero porque si queda vacía no nos va a mostrar las llamadas

5. sqlite> select * from acl_user; - Esta vez, su salida se mostrará lo siguiente:

1|admin||7a5210c173ea40c32305a5de7dcd4cb0|
2|user1|pass|ddc542386d2f85e1b1ff763aff13ce0a|0
3|user2|pass|98a8d3f11b400ddc06d7343235b71a84|2000
4|user3|pass|680561bec052fdbd2e3f98957a32228b|3000

6. sqlite> .quit

Eso es todo. Entonces, cuando  entren en la configuración de usuario en elastix, el usuario ya no tendrá una extensión de allí y que el usuario podrá ver los informes de todo el sistema CDR.




jueves, 23 de junio de 2011

El truco para la entrada de llamadas

Bueno en este post hablare de cómo hice para recibir una llamada en elastix

Primero tengo conectado una trocal SIP de Telmex donde me asignaron un DID ósea un número telefónico pero también podemos tener un Primario o una Tarjeta FXO con una línea análoga común y corriente.
Luego vamos a menú PBX à Inbound Routes
Aca agregamos una ruta de entrada  dando clic en Add Incoming Route

Bueno acá solo voy a poner los campos que modifique los que no pongo acá se dejan como estaban .

Description: Nombre de la Ruta
DID Number: El número de teléfono que te dio tu proveedor


Bueno ahora es definir donde vamos a recibir la llamada hay varias opciones que no mencionare para luego mencionarlas en otros POST como el IVR, las colas, los anuncios, bueno lo que voy hacer es que cuando marquen al numero la llamada entre a una extencion asi que marco la casilla de Extensions: y elijo la extensión que prefiera es este caso elegí la 5002.

Luego de esto debemos ir a menú PBX à Genral Settings o en español configuraciones general y miramos en Securuty Setting el parámetro Allow Anonymous Inbound SIP Calls?: si esta en NO ponerlos en YES ya que si no lo tenemos en YES no nos van a entrar las llamadas este paso es súper importante para que el trabajo que hicimos arriba funcione créanme casi me mato la cabeza pensando porque no entraba :S. Y listo ya pueden recibir llamadas.







Como instalar el Codec G729 free en asterisk

Primero descargarnos el códec según nuestra versión de Linux en http://asterisk.hosting.lv/
Bueno mi asterisk es a 64Bit por lo tanto descargue el siguiente:

codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so

Luego lo movemos al directorio

Normalmente el directorio donde copia el códec en 32Bit es en /usr/lib/asterisk/modules/ pero para 64 Bit es la siguiente ruta /usr/lib64/asterisk/modules
 
#mv codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so  /usr/lib64/asterisk/modules

Luego debemos darle permisos a esta carpeta 
 
#chmod 777 /usr/lib64/asterisk/modules/
 
Ahora entramos en la consola Cli del asterisk

# asterisk –vvvr

y cargamos el modulo de esta forma

host*CLI> modulo load codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so

luego reiniciar asterisk 
 
host*CLI> core restart now

Ahora miramos si el codec quedo instalado con los siguientes comandos

Local*CLI> core show codecs
Disclaimer: this command is for informational purposes only.
        It does not indicate anything about your configuration.
        INT    BINARY        HEX   TYPE       NAME   DESC
--------------------------------------------------------------------------------
          1 (1 <<  0)      (0x1)  audio       g723   (G.723.1)
          2 (1 <<  1)      (0x2)  audio        gsm   (GSM)
          4 (1 <<  2)      (0x4)  audio       ulaw   (G.711 u-law)
          8 (1 <<  3)      (0x8)  audio       alaw   (G.711 A-law)
         16 (1 <<  4)     (0x10)  audio   g726aal2   (G.726 AAL2)
         32 (1 <<  5)     (0x20)  audio      adpcm   (ADPCM)
         64 (1 <<  6)     (0x40)  audio       slin   (16 bit Signed Linear PCM)
        128 (1 <<  7)     (0x80)  audio      lpc10   (LPC10)
        256 (1 <<  8)    (0x100)  audio       g729   (G.729A)
        512 (1 <<  9)    (0x200)  audio      speex   (SpeeX)
       1024 (1 << 10)    (0x400)  audio       ilbc   (iLBC)
       2048 (1 << 11)    (0x800)  audio       g726   (G.726 RFC3551)
       4096 (1 << 12)   (0x1000)  audio       g722   (G722)
      65536 (1 << 16)  (0x10000)  image       jpeg   (JPEG image)
     131072 (1 << 17)  (0x20000)  image        png   (PNG image)
     262144 (1 << 18)  (0x40000)  video       h261   (H.261 Video)
     524288 (1 << 19)  (0x80000)  video       h263   (H.263 Video)
    1048576 (1 << 20) (0x100000)  video      h263p   (H.263+ Video)
    2097152 (1 << 21) (0x200000)  video       h264   (H.264 Video)



Bragi*CLI> core show translation
         Translation times between formats (in microseconds) for one second of data
          Source Format (Rows) Destination Format (Columns)

           g723   gsm  ulaw  alaw g726aal2 adpcm  slin lpc10  g729 speex  ilbc  g726  g722 siren7 siren14 slin16
     g723     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
      gsm     -     -  1001  1001     4000  1001  1000  3000  3999  5999     -  2999  1999      -       -   2999
     ulaw     -  2002     -     1     3002     3     2  2002  3001  5001     -  2001  1001      -       -   2001
     alaw     -  2001     1     -     3001     2     1  2001  3000  5000     -  2000  1000      -       -   2000
 g726aal2     -  2001     2     2        -     2     1  2001  3000  5000     -  2000  1000      -       -   2000
    adpcm     -  2001     2     2     3001     -     1  2001  3000  5000     -  2000  1000      -       -   2000
     slin     -  2000     1     1     3000     1     -  2000  2999  4999     -  1999   999      -       -   1999
    lpc10     -  3000  1001  1001     4000  1001  1000     -  3999  5999     -  2999  1999      -       -   2999
     g729     -  3000  1001  1001     4000  1001  1000  3000     -  5999     -  2999  1999      -       -   2999
    speex     -  3000  1001  1001     4000  1001  1000  3000  3999     -     -  2999  1999      -       -   2999
     ilbc     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
     g726     -  2001     2     2     3001     2     1  2001  3000  5000     -     -  1000      -       -   2000
     g722     -  3000  1001  1001     4000  1001  1000  3000  3999  5999     -  2999     -      -       -   1000
   siren7     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
  siren14     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
   slin16     -  4000  2001  2001     5000  2001  2000  4000  4999  6999     -  3999  1000      -       -      -


Y listo ya pueden hacer llamadas vía internet por medio de una troncal SIP con el Codec G729 free.

miércoles, 22 de junio de 2011

Me salvo la vida este comando #du --max-depth=1

Bueno tengo un Zentyal como Dominio PDC y de un momento a otro mi partición /raíz se lleno al 100% mire en un post algunas ideas y la primera vez me sirvió el truco de

[Loca]# sudo aptitude clean

Luego ya no funciono me lubero solo el 5% y al dia siguiente ya estaba lleno mi disco, bueno entoces mire algunos foros donde decía que eliminar archivos temporales pero nada no se liberaba espacio tome la opción de re dimensionar el disco pero investigando es un lio hacer eso a la mayoría se les pierden los datos y pues :S entoces segui buscando una solución antes de formatear de nuevo :S y me encontré con un comando exelente que me dio una luz de donde estaba el lio

[Loca]# du --max-depth=1

Bueno me pare en el directorio raíz con cd ./ y luego le di ese comando “du --max-depth=1” el cual me voto toda la información del consumo de espacio del directorio raíz / de la siguiente forma

root@local:/# du --max-depth=1
4983980 ./Backup_Servidores
4       ./cdrom
8620    ./sbin
609184  ./var
du: cannot access `./proc/7389/task/7389/fd/3': No such file or directory
du: cannot access `./proc/7389/task/7389/fdinfo/3': No such file or directory
du: cannot access `./proc/7389/fd/3': No such file or directory
du: cannot access `./proc/7389/fdinfo/3': No such file or directory
0       ./proc
4       ./opt
800540  ./usr
4       ./mnt
7844    ./bin
16      ./lost+found
196     ./dev
36      ./root
8       ./srv
154924  ./lib
16      ./tmp
4       ./selinux
8384    ./etc
17170   ./boot
0       ./sys
129834812       ./home
4       ./media
136425762       .

Entonces me di cuenta que tenía una carpeta llamada Backup_Servidores que estaba consumiendo mucho espacio me metí en esta carpeta borre todas las copias que habían de server con
[Loca]# rm *

y listo mire con  

[Loca]# df –h y ya me había liberado casi todo el disco de nuevo.
Mi error fue mandar mis copias al directorio Raiz / y no a /home/samba/share/ Backup_Servidores/ donde tenía bastante espacio entonces pues ahora enviare las copias a home.

Estos son algunos comandos para analizar el espacio en el disco:

#df –h  para mirar el consumo del disco en GB

Realizamos un fdisk -l , que nos muestra información sobre el particionado actual:
# fdisk -l /dev/sda

La partición que quiero agrandar es /dev/sda1 , así que obtenemos su tamaño en bloques:
# fdisk -s /dev/sda1


Nos aseguramos que la partición se encuentre en buen estado:
# fsck -n /dev/sda1


Tips Asterisk



Como cambiar los audios del sistema  asterisk al español:

En el directorio /var/lib/asterisk/sounds/

Todo lo es .gsm que esta en la carpeta /es/ pasarlo a la carpeta /en/  de ese directorio. Y listo.
---------------------------------------------
Para que asterisk reproduzca sonidos como IVR esos audios deben ser primero convertidos a mono de 8000 hz con Audacity para subirlos al sistemas de asterisk.

Como hacer Backup de Elastix y asterisk



Primero podemos hacer un backup por medio de la interface grafica de elastix en el menú System à Backup/Restore estando allí damos clic en Perform a Backup… y allí seleccionamos los archivos de los que queremos tener respaldo. Esto demora unos cuantos minutos.

Pero también por seguridad es necesario realizar un Backup de la siguiente forma

Guardas  los siguientes directorios de asterisk en otro PC diferente yo use Winscp:

/etc/asterisk/
/var/lib/asterisk/
/var/www/html/

También se debe realizar Backup de las bases de datos

[root@local ~]# mysqldump -pcontraseña -A --opt >> /home/Backup16-06-11.sql

Ahora el comando para restaurar las bases de datos en asterisk

mysql -pcontraseña del msql à esto es para ingresar a Mysql

Ejemplo:

[root@local ~]#  mysql -pcontraseña

>\.  /home/Backup16-06-11.sql  ----> este el esl directorio donde fue guardado con el nombre que se le asigno al archivo.

listo ya esta 

Backup Audios de llamadas asterisk


Esta backap se va a realizar por medio del protocolo ssh entre dos Linux

Bueno se debe tener instalado en ambos PC el ssh y ambos deben estar en el mismo puerto sea 22 o el que les quieran poner por seguridad pero los dos en el mismo puerto.

Luego se deben compartir las llaves ssh entre los servidores para que no pida contraseña por cada audio copiado de la siguiente forma:

[Local]#/> ssh-keygen -d
[Local]# /> ssh ip-destino "cat >> ~/.ssh/authorized_keys2" < ~/.ssh/id_dsa.pub

Nota:
El segundo paso tambien puede realizarse copiando manualmente la clave
 publica del origen en el dstino en el archivo id_dsa.pub

Comandos para hacer backup de audios de asterisk de un servidor a otro (linux)


Antes nos paramos en #cd /var/spool/asterisk/monitor/ que es donde están las grabaciones y allí ejecutamos el comando

[Local]# find . -name '*201103*' -exec scp {}  root@192.168.0.77:/media/Datos/backup/ \;

Esto  ‘*201103*’ significa que voy a buscar con find los audios del mes 03 (Marzo) del año 2011 para luego copiarlos con scp al PC con ip 192.168.0.77 en el directorio /media/Datos/Backup/
El directorio puede ser el que quieran.

Y listo estas copias llevan bastante tiempo. 


Bueno para buscar los audios se haces así:



[Local]# find . -name '*201003*' |more

Toca  de esta forma ya que si nos paramos en el directorio y por ejemplo le damos un ls por la cantidad de audios no  va a mostrar nada y se va ablaquear toca primero buscarlos por partes o meses.



Y si lo que se quiere es copiarlo en el mismo servidor pero en otro directorio se hace así:

[Local]# find . -name '*201003*' -exec cp -R {} /rutadirectorio/ \; &

martes, 21 de junio de 2011

Como crear una troncal SIP en Elastix


Lo primero es ir a menú PBX à Trunks o Troncales y dar clic en Add SIP Trunk


Trunk Description: Le ponemos el nombre que queramos 

Dial Rules: Simpre la dejo X. y luego en la rutas salientes o Outbound Routes le indico el plan de marcado.

Outbound Dial Prefix: En este ejemplo mi proveedor me pide que le envie el prefijo con 57 ya que se va a logear con un server en USA.

Acá si es una troncal sip de Telmex por ejemplo  para bogota no envias prefijo no le pones nada pero si tienes plan ilimitado nacional ellos por cada Ciudad te dan un prefijo que debes ingresar allí bueno y crear una troncal por cada ciudad, es super tedioso pero bueno. 

Trunk Name: pones el nombre de la troncal es obligatorio si no lo pones no de la deja crear

PEER Details: Bueno esta es la parte más importante

username= Te lo da tu proveedor
type=friend
secret= Te lo da tu proveedor
qualify=yes
language=es  //esto si tienes aun pro defecto los audios en ingles para que te los bote en español
insecure=very
host= Te lo da tu proveedor
dtmfmode=rfc2833
disallow=all
call-limit=50
allow=g729 // normalmente es el Codec cuando viaja la voz por internet

ahora esto siempre los dejos en banco

USER Context
USER Details

Y este campo también es super importante 

Register String: la lógica de esto es

usuario:password@ip host/usuario

Digamos un ejemplo

Pepito:12345@64.18.5.3/pepito 

Este usuario, password, y host son los mismos que pones en PEER Details que te da tu proveedor

Fallas al agregar usuarios en el modulo callcenter Elastix

Ya me pasó y no podía ingresar usuarios en el modulo de callcenter ni los Brearks, perdí el tiempo revisando que podría ser pero al final en un foro encontré la respuesta:

Con la versión del callcenter 2.0.0-14 solo funciona con firefox 3.6.17 o menor. :S  

LINK: http://www.elastix.org/en/component/kunena/55-call-center/77781-problema-para-crear-agentes-en-modulo-callcenter.html

Como Configurar varias rutas estáticas en Centos 5



Si se requiere configurar varias rutas estáticas en centos se debe hacer por cada interface  a la que se le quiera agregar una ruta estática,  un archivo en la siguiente ruta y de la siguiente manera:

[host]# cd  /etc/sysconfig/network-scripts/
[host]# vim route-ethX

Donde la X es el número de la interface a la cual se quiere agregar la ruta, Ejemplo:


 
Como pueden ver en este servidor hay 4 interfaces numeradas de la siguiente forma:
Ifcfg-eth0
Ifcfg-eth1
Ifcfg-eth2
Ifcfg-eth3

Y tengo para la interface ifcfg- eth2 configurado el archivo route-eth2 y para la interface Ifcfg-eth3 el archivo route-eth3.

La configuración del  archivo route-ethX debe ir de la siguiente forma:

ADDRESS0=10.8.224.1
NETMASK0=255.255.255.255
GATEWAY0=192.168.150.9
Siempre la primera ruta debe ser con 0, ADDRESSX esa X son la secuencia de la cantidad de rutas que van a ir por esa interface si necesita otra ruta en esa misma interface entonces seria  Ejemplo:

ADDRESS0=10.8.224.1
NETMASK0=255.255.255.255
GATEWAY0=192.168.150.9
ADDRESS1=10.8.224.1
NETMASK1=255.255.255.255
GATEWAY1=192.168.150.9

Estas son las rutas de la interface eth2 si quiero agregar rutas a la interface eth 3 debe ir igual la primera ruta con 0 al final de las palabras y si quiero otra ruta para esta misma interface voy cambiando ,(ADDRESSX, NETMASKX, GATEWAYX ) la X por 1 luego 2 así.


Algo muy importante es tener en cuenta que mascara le pones ya que si lo que quieres es alcanzar un host solamente pues la pones así: 255.255.255.255 para que solo alcance una ip y si al contrario quieres acceder a una red le pones la mascara adecuada no se 255.255.255.0 o 255.255.255.248, según tu red.