Hace unos cuantos meses empecé a probar una aplicación para iOS/Android llamada Pushover que te permite crear notificaciones personalizadas de tipo push en tu móvil. El servicio es gratuito (solo debes comprar la aplicación que cuesta $4 USD) y te permite recibir hasta 7500 notificaciones al mes (suficientes creo yo). La aplicación es muy fácil de configurar: tras darte de alta solo debes registrar una aplicación (se te proporcionará un token al registrarla) y tomar nota de tu user key. Tras obtener esos datos, crea un script como el que sigue (puedes ponerlo en /sbin/push.php):
#!/usr/bin/php <?php // Reemplaza este valor por tu verdadero userKey de Pushover $userKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; /************************************************** Reemplaza este valor con el de tu propia aplicación. Si no lo cambias recibirás notificaciones de parte de "Asterisk México" (según la cantidad de usuarios que usen este token, pueden acabarse las notificaciones permitidas por Pushover al mes ***************************************************/ $appToken="ptTjW6PlKHU7lB5jOdhLN7vHlKSIei"; curl_setopt_array($ch = curl_init(), array( CURLOPT_URL => "https://api.pushover.net/1/messages.json", CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => array( "token" => $appToken, "user" => $userKey, "message" => $argv[1], ))); curl_exec($ch); curl_close($ch); ?>
No te olvides de hacer el script ejecutable:
chmod 755 /sbin/push.php
Con esto el script ya debe de enviarte notificaciones a tu teléfono. Puedes enviarte un mensaje de prueba para validarlo. Teclea en el CLI de Linux:
/sbin/push.php "Este es un mensaje de prueba"
Si lo ejecutas, deberas recibir una notificación como la siguiente:
Ahora toca decirle a Asterisk que nos envíe notificaciones. Vamos a ver el código necesario para 2 escenarios: Asterisk puro y Asterisk bajo FreePBX (Elastix/Trixbox)
Para Asterisk Puro:
Lo que necesitamos insertar es insertar una llamada a la aplicación System que invoque nuestra aplicación con los valores que necesitamos. Por ejemplo, supongamos que tenemos esta línea en nuestro plan de llamadas para hacer una marcación internacional (archivo extensions.conf):
exten => _00ZXXXX.,1,Dial(DAHDI/g0/${EXTEN})
Lo que requerimos es mandar llamar a la notificación antes de que se genere el Dial, quedando algo así:
exten => _00ZXXXX.,1,System(/sbin/push.php "Llamada de ${CALLERID(num)} hacia ${EXTEN}") exten => _00ZXXXX.,n,Dial(DAHDI/g0/${EXTEN})
Es importante que escapemos correctamente las comillas » «, de lo contrario solo nos llegará la primer palabra del mensaje.
Si tratamos de marcar al exterior, recibiremos una notificación como la que sigue:
Con esto ya quedan las notificaciones a nuestro sistema usando Asterisk puro.
Para FreePBX/Trixbox/Elastix:
Editamos el archivo de extensions_custom.conf y hacemos uso del hook que ya existe en FreePBX para no tener que modificar nuestro código:
[macro-dialout-trunk-predial-hook] exten => s,1,System(/sbin/push.php "Llamada de ${CALLERID(num)} hacia ${OUTNUM}")
Ojo: esto enviará notificaciones por cada llamada que use troncales. Si quieren que solo se use para cierto tipo de llamadas, necesitan validar la variable ${OUTNUM} para que solo contenga los números que ustedes quieran.
¡Suerte!