[macro-dial-pstn-iax-sip] exten => s,1,Goto(2) exten => s,2,GotoIf($[${LEN(${MACRO_EXTEN})} = 7]?6:7) exten => s,3,GotoIf($[${LEN(${MACRO_EXTEN})} = 10]?8:9) exten => s,6,SetVar(MACRO_EXTEN=1408${MACRO_EXTEN}) exten => s,7,Goto(21) exten => s,8,SetVar(MACRO_EXTEN=1${MACRO_EXTEN}) exten => s,9,Goto(21) exten => s,21,Dial(${PSTN}/ww${MACRO_EXTEN:-7},${ARG2}) exten => s,22,NoOp(${DIALSTATUS}) exten => s,23,GotoIf($[${DIALSTATUS} = CHANUNAVAIL]?24:25) ;exten => s,23,Dial(${IAXCO1}/${MACRO_EXTEN:-11},${ARG2}) exten => s,24,Dial(${IAXCO1}/${MACRO_EXTEN:-11}) exten => s,25,Goto(s-${DIALSTATUS},1) ; ; returns here if busy on PSTN ; exten => s,122,Goto(s-BUSY,1) ; ; returns here if busy on IAXCO1 ; exten => s,125,Goto(s-BUSY,1) ; ; returns here if busy on IAXCO1 ; exten => s,115,SetGlobalVar(FOUNDME=BUSY) exten => s,116,Goto(s-BUSY,1) ; ; returns here if busy on IAXCO2 ; exten => s,119,SetGlobalVar(FOUNDME=BUSY) exten => s,120,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