Some email asked for some examples.  He's an example system that will use ViaTalk lines (which allow 2 concurrent calls on a channel, so I use GroupCount to check for a value of 2).  It isn't round-robin and actually I'd pay someone good money to make a revised Dial() function that would do round robbin on a defined set of SIP trunks.  I solve the Round Robbin issue right now by periodicly changing
<br> where SIP/trunk0 ... SIP/trunkN point to and then reloading the configurations. &nbsp;Periodic for me is midnight each night. &nbsp;So every night the order in priority order is reset.<br><br><strong>Again, just in case someone from Asterisk-Dev or Asterisk-Bus is reading this: &nbsp;I will donate/pay to have a Round Robbin outbound trunk balancing scheme developed. &nbsp;Should be able to use any Asterisk supported trunk type (SIP, IAX2, etc). &nbsp;No need to care about maximum concurrent connections since if it fails then we&#39;re out of lines anyways.
</strong><br><br>[globals]<br>TRY1=SIP/trunk0<br>TRY2=SIP/trunk1<br>TRY3=SIP/trunk2<br>TRY4=SIP/trunk3<br>TRY5=SIP/trunk4<br>TRY6=SIP/trunk5<br>TRY7=SIP/trunk6<br>TRY8=SIP/trunk7<br>TRY9=SIP/trunk8<br>TRY10=SIP/trunk9<br>
TRY11=SIP/trunk10<br><br>[macro-which-line]<br>exten =&gt; s,1,set(TRIES=0)<br>exten =&gt; s,n(nextone),set(TRIES=$[${TRIES} + 1]) ; increment TRIES by 1<br>exten =&gt; s,n,set(DIALSTRING=${TRY${TRIES}}) ; assign TRYn to DIALSTRING
<br>exten =&gt; s,n,gotoif($[&quot;${DIALSTRING}&quot; = &quot;&quot;]?donehere) ; see if we&#39;ve run out of things to try<br>exten =&gt; s,n,ChanIsAvail(${DIALSTRING}) ; it will be up or down, no need for this to be exclusive
<br>exten =&gt; s,n,gotoif($[${AVAILSTATUS} = 0]?:nextone)<br>exten =&gt; s,n,gotoif($[${GROUP_COUNT(${DIALSTRING})} &gt;= 2]?nextone) ; have we used up the allowed calls on this channel<br>exten =&gt; s,n,set(GROUP()=${DIALSTRING}) ; Lock the line! Yay...
<br>exten =&gt; s,n,Dial(${DIALSTRING}/1${ARG1}) ; dial the phone<br>exten =&gt; s,n,GotoIf($[&quot;${DIALSTATUS}&quot; = &quot;BUSY&quot;]?donehere) ; Don&#39;t keep dialing<br>exten =&gt; s,n,NoOp(&quot;Moving to the next one...&quot;);
<br>exten =&gt; s,n,goto(nextone) ; TEMP<br>exten =&gt; s,n(donehere),MacroExit() ; we only get here if everything failed<br><br><br>=================<br><br>Okay, that&#39;s one example. &nbsp;Your simple two line thing might be better done another way. &nbsp;Let&#39;s say we try this:
<br><br>1) Place a call two two phone lines at once, but have a single line delayed by 3 seconds.<br><br>Something to this effect:<br><br>&gt;&gt; Dial(SIP/trunk0&amp;Local/delayed_trunk1)<br><br>Where Delayed_Trunk1 is a macro which calls SLEEP(3) and then Dial(Trunk1). &nbsp;I could go into more detail, but I&#39;m going to assume you can figure out how to do this.
<br>