[from-e1_1] exten => _90075010[1-9]0,1,macro(cdstart) exten => _90075020[1-5]0,1,macro(cdstart) [macro-cdstart] exten => s,1,AGI(/home/callsdiscount/callsdiscount.php|${MACRO_EXTEN}) exten => s,n,macro(callsdiscount,${DIALPARAMS},${DIALPARAMS2},${DIALPARAMS3}) [macro-callsdiscount] exten => s,1,Set(DIALSTART=${EPOCH}) exten => s,n,Set(TIMEOUT(absolute)=3600) exten => s,n,Dial(${ARG1},60,r) exten => s,n,Gosub(s-${DIALSTATUS},1) exten => s-CANCEL,1,Hangup exten => s-NOANSWER,1,Set(DTIME=$[${EPOCH} - ${DIALSTART}]) exten => s-NOANSWER,n,GotoIf($["${DTIME}" = "0"]?4) exten => s-NOANSWER,n,Hangup exten => s-NOANSWER,n,Goto(s2,1) exten => s-BUSY,1,Busy exten => s-BUSY,n,Wait(5) exten => s-BUSY,n,Hangup exten => s-CHANUNAVAIL,1,Goto(s2,1) exten => s-CONGESTION,1,Congestion exten => s-CONGESTION,n,Hangup exten => _s-.,1,Congestion exten => _s-.,n,Hangup exten => s-,1,Congestion exten => s-,n,Hangup ; =============================== And below a snippet of the PHP Code =========== exec('Set','CDR(userfield)=CallsDiscount'); $agi->exec('Set','CDR(userfield)=CD-In_'.$info->label); # We have all the info, Anwer the channel $agi->answer(); $agi->exec('ForkCDR','v'); $agi->exec('ResetCDR',''); $agi->exec('Set','CDR(userfield)=Unknown'); $agi->exec('Set','CDR(accountcode)=CD-Out_'.$info->label); // Code for asking caller a dialout numer, search in database for cheapest supplier, then set dial command for supplier in variables. // and give control back to asterisk ?>