Crear un Fail Over Trunk en Asterisk

Llevo tiempo queriendo compartir este post, el Fail Over Trunk es una de las macros  en Asterisk que más hemos utilizado y la que más nos ha servido. Aunque es muy sencillo, te puede ayudar en casos que tu troncal por algún motivo deje de funcionar y tengas que sacar las llamadas por otro lado, sin tener que hacer cambios en el Dialplan.

Supongamos que tenemos dos troncales  Trunk 1 y Trunk 2 podemos configurar hasta Trunk n, las especificaremos como variables globales ya que no van hacer modificadas y utilizaremos otra variable que nos dirá el total de troncales que tenemos definidos, en el extensions.conf lo ponemos de la siguiente manera:

[globals]

TRUNK_1=10.10.50.50
TRUNK_2=10.10.50.51
TOTAL=2

En el Dialplan escribiremos una Macro con el nombre de  “salida”  enviando como parámetros la extensión a marcar y el tiempo de marcado:

[macro-salida]
;ARG1 Numero a marcar
;ARG2 Tiempo de marcado

exten => s,1,NooP(Numero a marcar -> ${ARG1}  | tiempo de marcado -> ${ARG2} )
exten => s,n,Set(CONTADOR=1)
exten => s,n(while),GotoIf($["${CONTADOR}" > "${TOTAL}"]?fin)
exten => s,n,Dial(SIP/${ARG1}@${TRUNK_${CONTADOR}}|${ARG2}|g)
exten => s,n,NooP(DIAL STATUS -> ${DIALSTATUS})
exten => s,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?fin)
exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?fin)
exten => s,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?fin)
exten => s,n,Set(CONTADOR=$[${CONTADOR} + 1])
exten => s,n,Goto(while)
exten => s,n(fin),MacroExit

Con las variables del DIALSTATUS podemos saber si la llamada ha fallado o si ha tenido un resultado satisfactorio,  por lo que si el dialstatus retorna un CHANUNAVAIL, es posible que este caído nuestro Carrier asignado a ese troncal, con lo que intentará utilizar el segundo troncal especificado.

No related posts.

No hay comentarios

Aún no hay comentarios.

RSS feed para los comentarios de esta entrada. TrackBack URI

Deja un comentario

WordPress Themes