[asterisk-users] handling SIP trunk with limited concurent calls
Gordon Henderson
gordon+asterisk at drogon.net
Thu Jun 5 10:52:26 CDT 2008
On Thu, 5 Jun 2008, benoit plessis wrote:
> Hi,
>
> Now that we have a working asterisk server, i'm looking
> toward cost optimization :)
>
> We are actually testing a SIP provider, which has an interessting
> limitation: each account support at max only two concurrent calls.
>
> My problem is how to combine multiple accounts and fail back to PSTN
> lines if all accounts are 'full'. I've added a "call-limit=2" in the
> sip.conf entry, but i dont really now how to use it in the dialplan.
> ChanIsAvail() was my first try but didn't work.
>
> I've tried chaining Dial() calls:
> Dial(SIP/line1/${EXTEN})
> Dial(SIP/line2/${EXTEN})
> ...
> but when an error condition occurs (busy/unavailable/whatever) it
> dial the same number on every line, which can take a while at the end.
>
> So, is there a way with the DIALSTATUS variable to detect a 'full' peer
> ?
Yes.
You need to check for CONGESTION.
something like:
n,Dial(SIP/line1/{EXTEN})
n,Noop(Dial line1 failed - we got ${DIALSTATUS})
n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?tryNext)
n,Hangup
n(tryNext),Dial(SIP/line2/${EXTEN})
But do check that the SIP provider does indeed return CONGESTION ... (You
may not need the call-limit=2, if they check for you, then if at a later
date, they increase the limit, then you don't need to change anything)
Gordon
More information about the asterisk-users
mailing list