Archive for June, 2008

The file-max file /proc/sys/fs/file-max sets the maximum number of file-handles that the Linux kernel will allocate. We generally tune this file to improve the number of open files by increasing the value of /proc/sys/fs/file-max to something reasonable like 256 for every 4M of RAM we have: i.e. for a machine with 128 MB of RAM, set it to 8192 - 128/4=32 32*256=8192.

So them if we want to see how many number of file-handles are setting in /proc/sys/fs/file-max we can use any text editor or the famous echo command.

And if we want see the list of file-handles we can do it with the command “lsof” …
~#> lsof | wc -l

When you have CentOS and try to replace files we need confirmation by default. Maybe you are thinking use –force option, but it not works ok because by default CentOS has “cp -i” alias. Now if we won’t it, we need use: “unalias cp” for alias remove.

Aquí tenemos una aplicación que nos ayudara a determinar si nuestro firewall esta haciendo el port forward que requerimos para nuestras llamadas de voip.

Se trata de una aplicación que envia un mensaje UDP PING para identificar que el port forward y no este bloqueado por el firewall.

http://www.voipuser.org/port_forward_tester.html

¿Alguna ves te has preguntado como ejecutar un AGI mientras generas un Dial()? A continuación propongo una manera de hacer eso que a muchos nos es muy útil en muchos de los casos.

Bien, pues como saben con Dial() podemos generar llamadas al mismo tiempo utilizando & entre cada destino. Haciendo uso de esto podemos marcar a una extensión local de nuestro dialplan, y es aquí donde hacemos llamar a nuestro AGI.

Ejemplo:

[contextox]
exten => 1234,1,Dial(SIP/juan&Local/juanagi@contextox)
exten => juanagi,1,AGI(cualquieragi)

De esta manera, al estar llamando al usuario SIP juan estará llamando a la extensión local juanagi en contextox

Nota: Ten cuidado al hacer uso de Playback, Background y Answer dentro de la AGI porque detendrá el llamado al usuario SIP.

Saludos.

There is an example of how to generate dial from CLI and playback a message when user answer.

CLI> originate SIP/user application Playback hello-message

Normalmente cuando manejamos NAT presente en Asterisk es muy necesario hacer uso de la opción qualify en nuestro sip.conf para nuestros peers que se encuentren en situaciones de NAT, osea detrás de un NAT pues.

¿Y porque es útil?
Al hacer uso de qualify Asterisk enviara periódicamente un comando de SIP OPTIONS(rápidamente digamos que es un tipo de ping) para determinar si el usuario continua online. En caso de no responder dentro del tiempo determinado(sea el default o definido por uno mismo) Asterisk pondrá al usuario ofline para llamadas futuras. Así de esta forma hacemos que Asterisk mantenga abierta la sesión UDP de un usuario(peer) que se encuentra detras de un NAT, de tal manera que es usada en conjunto con la opción nat=yes.

Sintaxis de qualify:
qualify=xxx|no|yes

Esta opción por defecto se encuentra es qualify=no, pero podemos definir en yes donde el timeout manejado es de 2 segundos, o en el ultimo de los casos definir nosotros el timeout en segundos.

Saludos.

If you’re thinking… “How can I kill an active call?” you can try it with: “soft hangup”

asterisk*CLI> help soft
soft hangup Request a hangup on a given channel

Do you know how to see the list of active channels?
asterisk*CLI> core show channels

How to kill an active call?
sasterisk*CLI> soft hangup SIP/54028-0b864c40