Esta web utiliza cookies, puedes ver nuestra la política de cookies, aquí Si continuas navegando estás aceptándola
Política de cookies +

El Maravilloso Mundo de los Saltos en Asterisk

Si alguna vez te has sentido perdido en la vida, sin saber a dónde ir, tranquilo: Asterisk también. Por eso existen los comandos Goto, GotoIf, Gosub, GosubIf y ExecIf. Hoy te invitamos a un viaje humorístico por el laberinto de saltos, bifurcaciones y subrutinas de este PBX, donde las llamadas van y vienen como si fueran turistas japoneses en el metro de Tokio.

Goto: El GPS de las llamadas

Goto es el equivalente a ese amigo que, en vez de darte direcciones, te dice: “¡Ve directo a la fiesta, sin escalas!” En el dialplan de Asterisk, Goto es el comando que manda la ejecución a otra extensión, prioridad o contexto, sin pedir permiso ni mirar atrás.

exten => 100,1,NoOp(Llamada recibida)
 same => n,Goto(saludo,1)
exten => saludo,1,Playback(hello-world)
    

Aquí, la llamada llega a la extensión 100 y, sin anestesia, es teletransportada a la extensión saludo. ¿El usuario? Ni se entera. ¿El programador? Tampoco, porque seguro olvidó por qué puso ese salto ahí.

GotoIf: El indeciso profesional

Si Goto es el amigo directo, GotoIf es el que siempre responde “depende”. Este comando permite saltar a diferentes destinos según una condición lógica. Es como elige-tu-propia-aventura, pero con menos dragones y más llamadas en espera.

exten => 200,1,Set(edad=18)
 same => n,GotoIf($[${edad} > 17]?mayor,1:menor,1)
exten => mayor,1,Playback(you-are-adult)
exten => menor,1,Playback(you-are-kid)
    

Si la edad es mayor a 17, la llamada va a mayor,1; si no, a menor,1. Perfecto para discotecas, bares y para padres paranoicos.

Gosub: El primo estudioso de Goto

Gosub es como ese primo que no solo va a la fiesta, sino que además se acuerda de volver a casa. Permite llamar a una subrutina y, al terminar, regresar justo donde lo dejaste, como si nada hubiera pasado (excepto que ahora hay menos cerveza).

exten => 300,1,NoOp(Iniciando llamada)
 same => n,Gosub(grabar_llamada,1)
 same => n,Playback(call-recorded)
exten => grabar_llamada,1,NoOp(Grabando...)
 same => n,Return()
    

Gosub ejecuta la subrutina grabar_llamada y luego vuelve para seguir con el Playback. ¡Como un boomerang, pero sin el riesgo de perder un ojo!

GosubIf: El boomerang selectivo

¿Para qué llamar a una subrutina si no hace falta? GosubIf te permite decidir si lanzas el boomerang o no, según una condición. Es el colmo de la eficiencia: solo trabaja si es necesario, como el gato de tu vecino.

exten => 400,1,Set(grabar=1)
 same => n,GosubIf($[${grabar}=1]?grabar_llamada,1)
 same => n,Playback(continue)
    

Si grabar es 1, se llama a la subrutina; si no, se sigue de largo. ¡Ideal para ahorrar recursos y excusas!

ExecIf: El ninja de las acciones

ExecIf es el comando ninja: ejecuta una acción solo si se cumple una condición, y si no, nadie se entera. No salta a ningún sitio, solo hace lo que tiene que hacer y desaparece en la sombra. Perfecto para tareas discretas, como borrar pruebas o poner el café.

exten => 500,1,Set(activar=0)
 same => n,ExecIf($[${activar}=1]?Playback(activated))
 same => n,Playback(end)
    

Si activar es 1, se reproduce activated; si no, se sigue como si nada. ¡Ni Houdini lo haría mejor!

Comparación rápida

Comando ¿Salta? ¿Condicional? ¿Regresa? ¿Ejecuta acción?
Goto No No No
GotoIf No No
Gosub No No
GosubIf No
ExecIf No No aplica

Conclusión

En el mundo de Asterisk, los saltos y las condiciones son el pan de cada día. Goto y sus amigos son la brújula, el GPS y el teletransportador de las llamadas. Úsalos con sabiduría, porque un salto mal puesto puede mandar a tus usuarios a un limbo telefónico del que ni el soporte técnico podrá rescatarlos. ¡Y recuerda: en el dialplan, como en la vida, a veces lo importante no es a dónde vas, sino cómo llegas!

Capa Tres Soluciones Tecnológicas es una empresa registrada en la CNMC como operador de telecomunicaciones.

Capa Tres Soluciones Tecnológicas S.L. CIF B63846984. Networkia Bussiness Center. Avda Portal de l'Angel, 36. 08002 Barcelona. Teléfono 935605424. Email comercial@capatres.com. Colloquor es una marca comercial registrada.