¿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.