[asterisk-users] Failover SIP logic

2007-09-10 Thread Jeremy Mann
I need some extensions logic assistance, I'm trying to dial out one of multiple 
SIP trunks, in sequence.  I need to detect a busy SIP trunk(I only allow 1 call 
per trunk) and roll over to a second or third depending on that busy status

Here's what I've got for a macro thusfar, but it's not working(fails if the 1st 
trunk is busy)
extensions.conf:

[globals]
trunk_1 => SIP/trunk1
trunk_2 => SIP/trunk2
trunk_3 => SIP/trunk3

[macro-trunkdial]
exten => s,1,Dial(${trunk_1}/${ARG1})
exten => s,2,Hangup()
exten => s,102,Dial(${trunk_2}/${ARG1})
exten => s,103,Hangup()
exten => s,203,Dial(${trunk_3}/${ARG1})
exten => s,204,Hangup()

[from-internal]
exten => _NXXNXX,1,Macro(trunkdial,+1${EXTEN})
exten => _1NXXNXX,1,Macro(trunkdial,+${EXTEN})

sip.conf:

[trunk1]
host=xxx.xxx.xxx.xxx
port=5060
type=peer
allow=ulaw
dtmfmode=rfc2833
canreinvite=no
reinvite=no
nat=no
fromuser=+xxx
call-limit=1

[trunk2]
host=xxx.xxx.xxx.xxx
port=5060
type=peer
allow=ulaw
dtmfmode=rfc2833
canreinvite=no
reinvite=no
nat=no
fromuser=+xxx
call-limit=1

[trunk3]
host=xxx.xxx.xxx.xxx
port=5060
type=peer
allow=ulaw
dtmfmode=rfc2833
canreinvite=no
reinvite=no
nat=no
fromuser=+xxx
call-limit=1

Here's asterisk output when someone dials out:
Executing [EMAIL PROTECTED]:1] Macro("SIP/6001-007e2840", 
"trunkdial|+1xx") in new stack
-- Executing [EMAIL PROTECTED]:1] Dial("SIP/6001-007e2840", 
"SIP/trunk1/+1xx") in new stack
[Sep 10 09:06:52] ERROR[16253]: chan_sip.c:3192 update_call_counter: Call to 
peer 'trunk1' rejected due to usage limit of 1
-- Couldn't call trunk1/+1xx
  == Everyone is busy/congested at this time (0:0/0/0)
-- Executing [EMAIL PROTECTED]:2] Hangup("SIP/6001-007e2840", "") in new 
stack

I don't want the dialplan to cascade like:

exten => 1,dial...
exten => 2,dial...

Because if the remote end hangs up I don't want it going to priority 2 to dial 
out again(in case my user doesn't hit hang-up on their end) so I need logic to 
detect a busy channel and jump to the next section..


Thanks for any help.

This e-mail, facsimile, or letter and any files or attachments transmitted with 
it contains information that is confidential and privileged. This information 
is intended only for the use of the individual(s) and entity(ies) to whom it is 
addressed. If you are the intended recipient, further disclosures are 
prohibited without proper authorization. If you are not the intended recipient, 
any disclosure, copying, printing, or use of this information is strictly 
prohibited and possibly a violation of federal or state law and regulations. If 
you have received this information in error, please notify Texas Health 
Management Group immediately at 1-817-310-4999. Texas Health Management Group, 
its subsidiaries, and affiliates hereby claim all applicable privileges related 
to this information.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


___

Sign up now for AstriCon 2007!  September 25-28th.  http://www.astricon.net/ 

--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] Failover SIP logic

2007-09-10 Thread Yusuf
X-ECN Telecoms-MailScanner-Information: Please contact ECN Telecoms for more 
information
X-ECN Telecoms-MailScanner: Found to be clean
X-ECN Telecoms-MailScanner-From: [EMAIL PROTECTED]
X-Spam-Status: No

Jeremy Mann wrote:
> I need some extensions logic assistance, I'm trying to dial out one of 
> multiple SIP trunks, in sequence.  I need to detect a busy SIP trunk(I only 
> allow 1 call per trunk) and roll over to a second or third depending on that 
> busy status
> 
> Here's what I've got for a macro thusfar, but it's not working(fails if the 
> 1st trunk is busy)
> extensions.conf:
> 
> [globals]
> trunk_1 => SIP/trunk1
> trunk_2 => SIP/trunk2
> trunk_3 => SIP/trunk3
> 
> [macro-trunkdial]
> exten => s,1,Dial(${trunk_1}/${ARG1})
> exten => s,2,Hangup()
> exten => s,102,Dial(${trunk_2}/${ARG1})
> exten => s,103,Hangup()
> exten => s,203,Dial(${trunk_3}/${ARG1})
> exten => s,204,Hangup()
> 
> [from-internal]
> exten => _NXXNXX,1,Macro(trunkdial,+1${EXTEN})
> exten => _1NXXNXX,1,Macro(trunkdial,+${EXTEN})
> 
> sip.conf:
> 
> [trunk1]
> host=xxx.xxx.xxx.xxx
> port=5060
> type=peer
> allow=ulaw
> dtmfmode=rfc2833
> canreinvite=no
> reinvite=no
> nat=no
> fromuser=+xxx
> call-limit=1
> 
> [trunk2]
> host=xxx.xxx.xxx.xxx
> port=5060
> type=peer
> allow=ulaw
> dtmfmode=rfc2833
> canreinvite=no
> reinvite=no
> nat=no
> fromuser=+xxx
> call-limit=1
> 
> [trunk3]
> host=xxx.xxx.xxx.xxx
> port=5060
> type=peer
> allow=ulaw
> dtmfmode=rfc2833
> canreinvite=no
> reinvite=no
> nat=no
> fromuser=+xxx
> call-limit=1
> 
> Here's asterisk output when someone dials out:
> Executing [EMAIL PROTECTED]:1] Macro("SIP/6001-007e2840", 
> "trunkdial|+1xx") in new stack
> -- Executing [EMAIL PROTECTED]:1] Dial("SIP/6001-007e2840", 
> "SIP/trunk1/+1xx") in new stack
> [Sep 10 09:06:52] ERROR[16253]: chan_sip.c:3192 update_call_counter: Call to 
> peer 'trunk1' rejected due to usage limit of 1
> -- Couldn't call trunk1/+1xx
>   == Everyone is busy/congested at this time (0:0/0/0)
> -- Executing [EMAIL PROTECTED]:2] Hangup("SIP/6001-007e2840", "") in new 
> stack
> 
> I don't want the dialplan to cascade like:
> 
> exten => 1,dial...
> exten => 2,dial...
> 
> Because if the remote end hangs up I don't want it going to priority 2 to 
> dial out again(in case my user doesn't hit hang-up on their end) so I need 
> logic to detect a busy channel and jump to the next section..

If you have this:

exten => _X.,1,Dial(SIP/trunk1)
exten => _X.,2,Dial(SIP/trunk2)
exten => _X.,3,Dial(SIP/trunk3)

then, only if trunk is busy, will it go to trunk2, if thats busy, it will go to 
trunk 3. 
Reason is, is that control wont return to the dial plan(except h) if the call 
was 
successfull.  SO if the call went through on trunk 1, then it will exit, not 
dial trunk2 
or trunk3.  So this dial plan will work.  But its very sequential, i.e. will 
try trunk1, 
then trunk2, then trunk3.  If you want to replicate round-robin, r, then do 
this:

[globals]
IPt=trunk1-trunk2-trunk3
COUNTt=0

NoOfChannels=3


[just-an-idea]
exten => _X.,1,Gotoif($["${COUNTt}" = "${NoOfChannels}"] ? 2:3)
exten => _X.,2,SetGlobalVar(COUNTt=0])
exten => _X.,3,SetGlobalVar(COUNTt=$[${COUNTt}+1])
exten => _X.,4,Set(tr=${CUT(IPt,-,${COUNTt})})
exten => _X.,5,Dial(SIP/tr/${EXTEN})


modify at your leisure.  So if you get a few more trunks, you just change 
"NoOfChannels"


-- 

thanks,
Yusuf

___

Sign up now for AstriCon 2007!  September 25-28th.  http://www.astricon.net/ 

--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] Failover SIP logic

2007-09-10 Thread Andrea Spadaccini
Ciao Jeremy,

> I need some extensions logic assistance, I'm trying to dial out one of
> multiple SIP trunks, in sequence.  I need to detect a busy SIP trunk(I only
> allow 1 call per trunk) and roll over to a second or third depending on that
> busy status
> 
> Here's what I've got for a macro thusfar, but it's not working(fails if the
> 1st trunk is busy) extensions.conf:
> 
> [globals]
> trunk_1 => SIP/trunk1
> trunk_2 => SIP/trunk2
> trunk_3 => SIP/trunk3
> 
> [macro-trunkdial]
> exten => s,1,Dial(${trunk_1}/${ARG1})
> exten => s,2,Hangup()
> exten => s,102,Dial(${trunk_2}/${ARG1})
> exten => s,103,Hangup()
> exten => s,203,Dial(${trunk_3}/${ARG1})
> exten => s,204,Hangup()


Which asterisk version are you using?
IIRC, priority jumping (ie. going to n+101) was disabled by default in some
1.2.x version. You should rely on DIALSTATUS. See Dial() page in voip-info.org.

HTH,

-- 
Dr. Andrea Spadaccini
Multimedia Technologies Institute - MTI S.r.l.
Web: www.x-voice.it - Tel: +39 (0) 95 7224945

___

Sign up now for AstriCon 2007!  September 25-28th.  http://www.astricon.net/ 

--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users


Re: [asterisk-users] Failover SIP logic

2007-09-10 Thread Jeremy Mann
Asterisk 1.4.11

Sorry, meant to include that

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Andrea Spadaccini
Sent: Monday, September 10, 2007 10:59 AM
To: asterisk-users@lists.digium.com
Subject: Re: [asterisk-users] Failover SIP logic

Ciao Jeremy,

> I need some extensions logic assistance, I'm trying to dial out one of
> multiple SIP trunks, in sequence.  I need to detect a busy SIP trunk(I only
> allow 1 call per trunk) and roll over to a second or third depending on that
> busy status
>
> Here's what I've got for a macro thusfar, but it's not working(fails if the
> 1st trunk is busy) extensions.conf:
>
> [globals]
> trunk_1 => SIP/trunk1
> trunk_2 => SIP/trunk2
> trunk_3 => SIP/trunk3
>
> [macro-trunkdial]
> exten => s,1,Dial(${trunk_1}/${ARG1})
> exten => s,2,Hangup()
> exten => s,102,Dial(${trunk_2}/${ARG1})
> exten => s,103,Hangup()
> exten => s,203,Dial(${trunk_3}/${ARG1})
> exten => s,204,Hangup()


Which asterisk version are you using?
IIRC, priority jumping (ie. going to n+101) was disabled by default in some
1.2.x version. You should rely on DIALSTATUS. See Dial() page in voip-info.org.

HTH,


This e-mail, facsimile, or letter and any files or attachments transmitted with 
it contains information that is confidential and privileged. This information 
is intended only for the use of the individual(s) and entity(ies) to whom it is 
addressed. If you are the intended recipient, further disclosures are 
prohibited without proper authorization. If you are not the intended recipient, 
any disclosure, copying, printing, or use of this information is strictly 
prohibited and possibly a violation of federal or state law and regulations. If 
you have received this information in error, please notify Texas Health 
Management Group immediately at 1-817-310-4999. Texas Health Management Group, 
its subsidiaries, and affiliates hereby claim all applicable privileges related 
to this information.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


___

Sign up now for AstriCon 2007!  September 25-28th.  http://www.astricon.net/ 

--Bandwidth and Colocation Provided by http://www.api-digital.com--

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users