Boutique Tech Conference · 4. – 6. June in Rostock (Germany)
Picture of the talk

extension.conf a programming language

in English by Mark Petersen of IPvision at AMOOCON 2009

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()

Mpe

Additional material

Here you can find all available material for this talk.

PDFs

Audio recordings

Video recordings

The slides

There are 6 different slides. Click on them to view an enlarged version.

  1. Slide-0
  2. Slide-1
  3. Slide-2
  4. Slide-3
  5. Slide-4
  6. Slide-5