Asterisk dialplan function GotoIf : Asterisk command gotoif

The GotoIf( ) Application

GotoIf( ) uses a special syntax, often called the conditional syntax:

GotoIf(expression?destination1:destination2)

If the expression evaluates to true, the caller is sent to the first destination. If the expression evaluates to false, the caller is sent to the second destination. So, what is true and what is false? An empty string and the number 0 evaluate as false. Anything else evaluates as true.

GotoIf is conditional goto command.

Go to label1 if condition is true or to next step (or label2 if defined) if condition is false, or

GotoIf(condition?[label1]:label2)

Go to next step (or label1 if defined) if condition is true or to label2 if condition is false.

Exapmle:

exten => 200,1,GotoIf($[“${CALLERID(num)}” = “303”]?dial1)
exten => 200,n,GotoIf($[“${CALLERID(num)}” != “304”]?moh:dial2)
exten => 200,n(dial1),Dial(${EXTEN},15,rt)
exten => 200,n,Hangup()
exten => 200,n(dial2),Dial(${myphone},15,rt)
exten => 200,n,Hangup()
exten => 200,n(moh),MusicOnHold(default)

Either of the destinations may be omitted, but not both. If the omitted destination is to be followed, Asterisk simply goes on to the next priority in the current extension.

Let’s have one more example:

exten => 100,1,Set(COUNT=5)
exten => 100,n,GotoIf($[${COUNT} > 0]?:5)
exten => 100,n,SayNumber(${COUNT})
exten => 100,n,Set(COUNT=$[${COUNT} – 1])
exten => 100,n,Goto(2)
exten => 100,n,Hangup( )

 

 

1 thought on “Asterisk dialplan function GotoIf : Asterisk command gotoif”

Leave a Comment