Retry Dial en Asterisk

Hola.

Aqui estoy de nuevo con otra pequeña aportación para la comunidad, esta vez les voy a mostrar como hacer un plan de marcado de Asterisk a prueba de bombas ( o casi jeje).

En este caso lo que vamos a hacer es trabajar con 2 troncales de 2 operadores SIP. Intentaremos sacar la llamada 3 veces por el primero, y si no lo conseguimos, reintentamos otras 3 veces más con el segundo, es muy sencillo.

 

; Definimos variables. Numero de intentos y proveedores
exten => s,1,Set(INTENTOS=3)
exten => s,n,Set(PROVEEDOR1=SIP/proveedor1)
exten => s,n,Set(PROVEEDOR2=SIP/proveedor2)

Con este parrafo definimos todas las variables que vamos a utilizar. En la primera linea, declaramos una variable llamada INTENTOS que valdrá 3, serán los intentos a realizar para cada proveedor. PROVEEDOR1 y PROVEEDOR2 estan definidos en mi archivo sip.conf.

 

; Intentamos sacar llamada por TRUNK 1
exten => s,n(llamar),Set(REALIZADOS=0)
exten => s,n(dial),Dial(${PROVEEDOR1}/${MACRO_EXTEN},30)
exten => s,n,Set(REALIZADOS=$[${REALIZADOS}+1])
exten => s,n,GotoIf($[${REALIZADOS} < ${INTENTOS}]?dial:proveedor2)

 

Con esto, intentamos sacar la llamada. La primera linea «setea» la variable REALIZADOS en 0 y a continuación se ejecuta el Dial, si ocurre algún problema sigue a la siguiente linea, en la que, incrementamos el valor de REALIZADOS en 1. Abajo comparamos si REALIZADOS es MENOR que INTENTOS, como si que lo es, ejecutará dial (volver a ejecutar de nuevo el Dial()). Esto ocurria 3 veces, a la 3º el plan de marcado seguirá hasta la etiqueta proveedor2.

 

; Reintentamos sacar llamada por TRUNK 2
exten => s,n(proveedor2),Set(REALIZADOS=0)
exten => s,n(redial),Dial(${PROVEEDOR2}/${MACRO_EXTEN},30)
exten => s,n,Set(REALIZADOS=$[${REALIZADOS}+1])
exten => s,n,GotoIf($[${REALIZADOS} < ${INTENTOS}]?redial)
exten => s,n,Goto(ERROR,1)

 

exten => ERROR,1,Playback(beep)

exten => ERROR,n,Hangup

 

En la primera linea volvemos a setear REALIZADOS en 0 y a continuación intentamos marcar de nuevo pero esta vez con $PROVEEDOR2.

Si falla, sigue su camino y incrementa la variable REALIZADOS. El gotoIf hará la misma comparación y mientras REALIZADOS sea menor que INTENTOS (3) seguirá intentandolo.

Si en esta ocasión falla al intentar sacar la llamada 3 veces, irá a parar a ERROR, el cual, hará que en el telefono suene un pitido y colgará.

 

 

 

 

Esto es todo, espero que les sirva.

Un saludo 😀

 

Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image