macro outbound (number, route1, route2, route3, route4, route5) { if (${LEN(${CALLERID(number)})} < 10 & ${LEN(${CALLERID(number)})} > 0) { if (${LEN(${DB(callerid/${CDR(accountcode)})})} > 9) { CALLERID(number)=${DB(callerid/${CDR(accountcode)})}; } else Set(CALLERID(number)=); }; dialstart: switch (${route1}) { case dundi: if (${number:0:2} = 00) { &dundi-e164 (${number:2}); } else if (${number:0:1} = 0) { &dundi-e164 (44${number:1}); } else &dundi-e164 (${number}); break; case provider1: &dialout (IAX2/provider1/${number}); break; case provider2: &dialout (IAX2/provider2/${number}); break; case provider3: &dialout (IAX2/provider3/${number}); break; case pstn: &dialout (Zap/g1/${number}); break; default: NoOp (invalid route: ${route1}); }; if (${LEN(${route2})} > 0) { route1=${route2}; } else { Playtones (congestion); Congestion (); }; if (${LEN(${route3})} > 0) route2=${route3}; if (${LEN(${route4})} > 0) route3=${route4}; if (${LEN(${route5})} > 0) route4=${route5}; goto dialstart; }; // DIAL NUMBER (ignoring anything except busy) macro dialout (dialstring) { Dial (${dialstring},,TW); switch (${DIALSTATUS}) { case BUSY: Playtones (busy); Busy (); break; case CONGESTION: Playtones (busy); Busy (); break; }; };