try this, Hope this will bring you bit closer to the solution.
RINGTIMER=30
DIAL_OPTIONS=tr
SIP_CHANNEL=sip/
[ext-local]
exten => 201,1,Macro(callextension1,201,${CALLERIDNUM})
exten => 202,1,Macro(callextension1,202,${CALLERIDNUM})
exten => 211,1,Macro(callextension1,211,${CALLERIDNUM})
exten => 221,1,Macro(callextension1,221,${CALLERIDNUM})
exten => 222,1,Macro(callextension1,222,${CALLERIDNUM})
[macro-callextension1]
exten => s,1,Noop(BLINDTR = ${BLINDTRANSFER}<> ARG1 = ${ARG1}<> ARG2 = ${ARG2}<> ARG3 = ${ARG3})
exten => s,2,Dial(${SIP_CHANNEL}${ARG1},${RINGTIMER},${DIAL_OPTIONS})
exten => s,3,GotoIf($[${LEN(${BLINDTRANSFER})} = 0]?NOT_RETURN,1) ;do return to the transferer if the call is transfered.
exten => s,4,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,playback(mypbx/wl-isnoanswer) ;Ring No Answer
exten => s-NOANSWER,2,SayDigits(${ARG1})
exten => s-NOANSWER,3,Dial(${SIP_CHANNEL}${ARG2},${RINGTIMER},${DIAL_OPTIONS}) ;call the transferer
exten => s-NOANSWER,4,hangup
exten => s-BUSY,1,playback(mypbx/wl-isbusy) ;Ring Busy
exten => s-BUSY,2,SayDigits(${ARG1})
exten => s-BUSY,3,Dial(${SIP_CHANNEL}${ARG2},${RINGTIMER},${DIAL_OPTIONS}) ;call the transferer
exten => s-BUSY,4,hangup
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => NOT_RETURN,1,PlayBack(mypbx/wl-nobodyavail)
exten => NOT_RETURN,2,Macro(hangupcall)
[macro-hangupcall]
exten => s,1,Hangup