[Asterisk-Users] Unwieldy outbound macro

Chris Bagnall asterisk at minotaur.cc
Wed Oct 5 04:52:24 MST 2005


I have the following pair of macros defined to handle outbound calls from *.
Rather than specifying full dialstrings in the main body of extensions.conf,
outbound dial commands are made using a macro call as follows:
Macro
(outbound,number_to_dial,callerid_to_present,gateway1,gateway2,gateway3,gate
way4)

The final gateway defined is nearly always a fallback to PSTN if none of the
IAX or SIP gateways are working.

The problem is, its an incredibly unwieldy macro that's horrible to edit if
I want to add a new gateway to the thing. Looking through the documentation
for macro programming, I couldn't find the equivalent of a 'shift' statement
you'd find in other programming languages.

Can a kind soul suggest how I might tidy it up?

Thanks in advance.

[macro-outbound]
; ${ARG1}       Number
; ${ARG2}       Caller ID
; ${ARG3,4,5,6}     Outgoing gateways in order of use
exten => s,1,GotoIf($["${ARG2}" = ""]?4)
exten => s,2,SetCIDNum(${ARG2})
exten => s,3,Goto(5)
exten => s,4,SetCIDNum(${DEFAULTCID})
exten => s,5,SetVar(GATEWAY=${ARG3})
exten => s,6,SetVar(ARG3=${ARG4})
exten => s,7,SetVar(ARG4=${ARG5})
exten => s,8,SetVar(ARG5=${ARG6})
exten => s,9,GotoIf($["${GATEWAY}" = "voip1"]?14)
exten => s,10,GotoIf($["${GATEWAY}" = "voip2"]?18)
exten => s,11,GotoIf($["${GATEWAY}" = "voip3"]?16)
exten => s,12,Macro(dialout,SIP/${ARG1}@pstn)
exten => s,13,GotoIf($["${ARG3}" = ""]?20:5)
exten => s,14,Macro(dialout,IAX2/voip1/${ARG1})
exten => s,15,GotoIf($["${ARG3}" = ""]?20:5)
exten => s,16,Macro(dialout,IAX2/voip2/${ARG1})
exten => s,17,GotoIf($["${ARG3}" = ""]?20:5)
exten => s,18,Macro(dialout,SIP/${ARG1}@voip3)
exten => s,19,GotoIf($["${ARG3}" = ""]?20:5)
exten => s,20,Playtones(congestion)
exten => s,21,Congestion()

[macro-dialout]
; ${ARG1}       Dialstring
exten => s,1,Dial(${ARG1},,W)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-BUSY,1,Playtones(busy)
exten => s-BUSY,2,Busy()
exten => _s-.,1,NoOp(${DIALSTATUS})

Regards,

Chris
-- 
C.M. Bagnall, Director, Minotaur I.T. Limited
This email is made from 100% recycled electrons





More information about the asterisk-users mailing list