Abstract
This is for those of you that want the take a closer look at hand written dialplan files
as an alternativet to the GUI based configuration system
exsampels of how writing the configuration can be faster, simpler and more precise
exsample:
a chain of 200 Shops
[PublicNumbers]
exten => 12345678,1,Goto(Shop,1,1)
exten => 23456789,1,Goto(Shop,2,1)
...
exten => 34567890,1,Goto(Shop,200,1)
[ShopTime1]
exten => s,1,GotoIfTime(08:00-16:00,mon-fri,*,*?Open)
include => ShopTime
[ShopTime2]
exten => s,1,GotoIfTime(08:30-16:30,mon-fri,*,*?Open)
include => ShopTime
[ShopTime200]
exten => s,1,GotoIfTime(08:30-16:30,mon-thu,*,*?Open)
exten => s,n,GotoIfTime(08:30-18:00,fri,*,*?Open)
include => ShopTime
[ShopTime](+)
exten => s,n,Set(Status=Closed)
exten => s,n,Return()
exten => s,n(Open)
exten => s,n,Set(Status=Open)
exten => s,n,Return()
exten => s,n(AltClosed),Status=AltClosed)
exten => s,n,Return()
[ShopHolliday]
exten => s,1,GotoIfTime(*,*,24-26,dec?AltClosed)
exten => s,n,Set(Status=Time)
exten => s,n,Return()
exten => s,n(AltClosed),Status=AltClosed)
exten => s,n,Return()
[Shop]
exten => _X!,1,Set(Shop=${EXTEN})
exten => _X!,n,GoSub(ShopHolliday,s,1)
exten => _X!,n,Goto(${Status})
exten => _X!,n(Time),GoSub(ShopTime${Shop},s,1)
exten => _X!,n,Goto(${Status})
exten => _X!,n(Closed),Playback(Closed${Shop})
exten => _X!,n,Hangup()
exten => _X!,n(AltClosed),Playback(AltClosed${Shop})
exten => _X!,n,Hangup()
exten => _X!,n(Open),Playback(Open${Shop})
exten => _X!,n,Goto(ShopIVR,s,1)
[ShopIVR]
exten => s,1,Set(TIMEOUT(digit)=2)
exten => s,n,Set(TimeOutRetry=1)
exten => s,n(Speak),Background(ShopIVR)
exten => s,n,WaitExten(5)
exten => i,1,Goto(s,Speak)
exten => t,1,GotoIf($[${TimeOutRetry} < 1]?TimeOut)
exten => t,n,Set(TimeOutRetry=$[${TimeOutRetry} - 1])
exten => t,n,Goto(s,Speak)
exten => t,n(TimeOut),Hangup()
exten => 1!,1,Playback(OpenClosedTime${Shop})
exten => 1!,n,Hangup()
exten => 2!,1,Queue(Shop${Shop}||||60)
exten => 2!,n,Playback(NoAnswer)
exten => 2!,n,Voicemail(${Shop},s)
exten => 2!,n,Hangup()
Additional material
Here you can find all available material for this talk.






