[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3321
  • Last Modified:

If else in asterisk

Hi all,

I have the following context in extensions.conf:

[a2billing]
exten => _X.,1,Gotoif($[${EXTEN} = 111] ? 21)
exten => _X.,2,DeadAGI,a2billing.php
exten => _X.,3,Wait,2
exten => _X.,4,Hangup
exten => _X.,21,Playback(AR_GetGiveToID)
exten => _X.,22,Wait(2)
exten => _X.,23,Record(/tmp/asterisk-recording:ulaw,,5)
exten => _X.,24,Wait(2)
exten => _X.,25,Playback(/tmp/asterisk-recording)
exten => _X.,26,Wait(2)
exten => _X.,27,Hangup

If the customer dial 111, it'll be router to the entry with priority 21, else it'll go to priority 2...I would like to add a third condition that if the user dial let's say 112 it'll go to the priority 28 let's say

Regards
0
michofreiha
Asked:
michofreiha
  • 2
1 Solution
 
feptiasCommented:
I would suggest you use 31 not 28 as the jump-to step because 28 might get executed after 27, even though 27 is a hangup. It's easy to have multiple gotoif tests, just put them one after another like this:

[a2billing]
exten => _X.,1,Gotoif($[${EXTEN} = 111] ? 21)
exten => _X.,2,Gotoif($[${EXTEN} = 112] ? 31)
exten => _X.,3,DeadAGI,a2billing.php
exten => _X.,4,Wait,2
exten => _X.,5,Hangup
exten => _X.,21,Playback(AR_GetGiveToID)
exten => _X.,22,Wait(2)
exten => _X.,23,Record(/tmp/asterisk-recording:ulaw,,5)
exten => _X.,24,Wait(2)
exten => _X.,25,Playback(/tmp/asterisk-recording)
exten => _X.,26,Wait(2)
exten => _X.,27,Hangup
0
 
palnerCommented:
You should really start looking at naming contexts and avoiding renumbering:

exten => _X.,1,Gotoif($[${EXTEN} = 111] ? givetoid)
exten => _X.,n,Gotoif($[${EXTEN} = 112] ? nextcondition)
exten => _X.,n,DeadAGI,a2billing.php
exten => _X.,n,Wait,2
exten => _X.,n,Hangup
exten => _X.,n(givetoid),Playback(AR_GetGiveToID)
exten => _X.,n,Wait(2)
exten => _X.,n,Record(/tmp/asterisk-recording:ulaw,,5)
exten => _X.,n,Wait(2)
exten => _X.,n,Playback(/tmp/asterisk-recording)
exten => _X.,n,Wait(2)
exten => _X.,n,Hangup
exten => _X.,n(nextcondition),NoOp(Whatever needed)
0
 
feptiasCommented:
...assuming the next step after a Hangup() is never executed.

I quite like explicit step numbering (provided they are written sequentially) because you can quickly find specific steps in a long dial plan. Also, you can be certain that the dial plan will stop when it reaches step X if there is no step X+1. But I can see the attraction of using n and name labels.
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now