Realizar llamadas automáticamente

  • 24 Mayo 2016
  • Asterisk

Asterisk tiene la capacidad de generar llamadas automáticamente, ya sea en forma inmediata o programada, utilizando el método call file. Para implementar esta modalidad se necesita crear un archivo con la siguiente información:

  • Como efectuar la llamada
  • Que hay que hacer una vez que la llamada sea contestada

Sintaxis de un call file

La sintaxis de un archivo de llamada es muy simple. En el siguiente ejemplo, se pide a Asterisk que llame un celular y cuando este conteste, ejecutar la prueba de eco (*43 en la distribución FreePBX)

Channel: Local/0054911XXXXXXX@from-internal
MaxRetries: 2
Callerid: "Eco" <334>
RetryTime: 2000
WaitTime: 30
Archive: yes
Context: app-echo-test
Extension: *43
Priority: 1

Una buena práctica de como crear archivos call

Las páginas de Asterisk aconsejan de no crear o modificar los archivos directamente en la carpeta spool de Asterisk. Por lo general /var/spool/asterisk/outgoing. Si no de trabajar siempre en otro directorio y una vez creado el archivo moverlo al outgoing de Asterisk, entonces la llamada se ejecutará inmediatamente.

Como programar una llamada para un momento determinado

Si un archivo de llamada en la carpeta outgoing tienen una hora posterior a la actual del servidor, será ignorado por Asterisk. Esto permite programar llamadas modificando la fecha y hora del archivo. Sigue vigente el punto anterior: El archivo debe crearse y modificarse siempre fuera del directorio outgoing.

El siguiente es un ejemplo de como programar una prueba de eco para dentro de una hora

# vi test.call
Channel: Local/0054911XXXXXXX@from-internal
MaxRetries: 2
Callerid: "Eco" <334>
RetryTime: 2000
WaitTime: 30
Archive: yes
Context: app-echo-test
Extension: *43
Priority: 1
# touch -d "$(date -r test.call) + 1 hour" test.call
# mv test.call /var/spool/asterisk/outgoing/

En el siguiente ejemplo, se pide a Asterisk a través del parámetro channel que llame al interno 201. Cuando el interno conteste, Asterisk "se ubicará" en el context from-internal y desde allí ejecutará los comandos determinados por el número ingresado en el campo extension, que en este caso es un número de celular, por lo tanto una ruta de salida. Finalmente, se asigna un valor al parámetro account para poder identificar en futuro fácilmente la llamada en el CDR.

Channel: SIP/201
MaxRetries: 2
Callerid: "Prova" <201>
RetryTime: 2000
WaitTime: 30
Archive: yes
Context: from-internal
Extension: 15XXXXXXXX
Priority: 1
Account: 10012