No way do it for 3 retries. But posible do for each retry.
In call file change channel to Local/somenumber@dialout/n
Create context
[dialout]
exten => _X.,1,Dial(DAHDI/1/${EXTEN},,g)
exten => _X.,2,Goto(${DIALSTATUS},1)
exten => BUSY,1,AGI(busy.agi)
exten => CONGESTION,1,AGI(fail.agi)
exten => FAILED,1,AGI(fail.agi)
exten => NOANSWER,1,AGI(noanaswer.agi)
Also i higly NOT recomend create dialling if you are not guru in asterisk. Use opensource engines. It have REALY allot of issues you never think about.