In questa mini serie di articoli vedremo diversi cicli, creati tramite il Dialplan di Asterisk.

PROBLEMA
Talvolta è necessario eseguire un’azione più volte prima di continuare nel dialplan.

SOLUZIONE
Creare dei cicli (loop). Di seguito un esempio.

ESEMPIO
Come creare un ciclo che itera il numero di volte utilizzando un contatore con While/EndWhile.

[Cut-While-Loop]
exten => s,1,NoOp(Esempio di loop con utilizzo di Cut e While)
same => n,Set(Frutta=Mela-Arancia-Banana-Pesca-Pera)
same => n,Set(FruttaCheVogliamo=Pesca)
same => n,Set(VAR_ITERA=1)
same => n,Set(FruttaInElaborazione=${CUT(Frutta,-,${VAR_ITERA})})
same => n,While($[${EXISTS(${FruttaInElaborazione})}])
same => n,GotoIf($[${FruttaInElaborazione} = ${FruttaCheVogliamo}]?TrovataFrutta,1)
same => n,Set(VAR_ITERA=${INC(VAR_ITERA)})
same => n,FruttaInElaborazione=${CUT(Frutta,-,${VAR_ITERA})})
same => n,EndWhile()

; Siamo arrivati ​​alla fine del ciclo senza aver trovato quello che stavamo cercando.
same => n,NoOp(Il loop è finito senza aver trovato la frutta)
same => n,Hangup()
; Se abbiamo trovato la frutta che cercavamo, GotoIf() ci porterà qui.
exten => TrovataFrutta,1,NoOp(Abbiamo trovato la frutta che volevamo)
same => n,Hangup()

Prima parte: Cicli Dialplan Asterisk – Come crearne 1/3
Seconda parte: Cicli Dialplan Asterisk – Come crearne 2/3
Più informazioni sulla funzione INC