[globals] PHONE1=SIP/kphone PHONE2=SIP/voip1 PSTN=Zap1 [macro-oneline] exten=> s,1,Answer exten=> s,2,WaitMusicOnHold(20) exten => s,3,Dial(${ARG1},20,t) exten => s,4,Voicemail(u${MACRO_EXTEN}) exten => s,5,Hangup exten => s,102,Voicemail(b${MACRO_EXTEN}) exten => s,103,Hangup [macro-dial-pstn] ; ; Enter with these ; ARG1 = number to dial ; ARG2 = timeout value ; ARG3 = flag determines if hangup or return on noanswer ; HR = hangup and return (default) ; RT = return without hangup (must set) ; ; Returns with FOUNDME = DIALSTATUS ; ; ; the 9w dials 9 then waits .5 sec for outside dialtone ; exten => s,1,SetGlobalVar(FOUNDME=ANSWER) exten => s,2,Dial(${PSTN}/9w${ARG1},${ARG2}) exten => s,3,SetGlobalVar(FOUNDME=${DIALSTATUS}) exten => s,4,Goto(s-${DIALSTATUS},1) ; ; returns here if busy ; exten => s,103,SetGlobalVar(FOUNDME=BUSY) exten => s,104,Goto(s-BUSY,1) ; exten => s-BUSY,1,BackGround(the-party-you-are-calling) exten => s-BUSY,2,BackGround(is-curntly-busy) exten => s-BUSY,3,SetGlobalVar(FOUNDME=BUSY) exten => s-BUSY,4,Goto(s-CLEANEXIT,1) ; exten => s-CANCEL,1,BackGround(canceled) exten => s-CANCEL,2,SetGlobalVar(FOUNDME=CANCEL) exten => s-CANCEL,3,Goto(s-CLEANEXIT,1) ; exten => s-CHANUNAVAIL,1,BackGround(channel) exten => s-CHANUNAVAIL,2,BackGround(is-curntly-unavail) exten => s-CHANUNAVAIL,3,SetGlobalVar(FOUNDME=CHANUNAVAIL) exten => s-CHANUNAVAIL,4,Goto(s-CLEANEXIT,1) ; exten => s-NOANSWER,1,BackGround(nbdy-avail-to-take-call) exten => s-NOANSWER,2,SetGlobalVar(FOUNDME=NOANSWER) exten => s-NOANSWER,3,Goto(s-CLEANEXIT,1) ; exten => s-ANSWER,1,SetGlobalVar(FOUNDME=ANSWER) exten => s-ANSWER,2,Goto(s-CLEANEXIT,3) ; exten => s-.,1,BackGround(something-Usr2bly-wrong) exten => s-.,2,SetGlobalVar(FOUNDME=ERROR) exten => s-.,3,Goto(s-CLEANEXIT,1) ; exten => s-CLEANEXIT,1,GotoIf($[${ARG3} = RT]?3:2) exten => s-CLEANEXIT,2,Hangup exten => s-CLEANEXIT,3,NoOp ; ; [default] exten => 201,1,Macro(oneline,${PHONE1}) exten => 202,1,Macro(oneline,${PHONE2}) exten => _0XXXXXXXXX,1,Macro(dial-pstn,${EXTEN},${LONGTIMEOUT})