Accessing multiple T1 lines automatically?

We have a customer who is currently using our Asterisk as a call router. Phones are on 70+ FXS boxes, and access to PSTN is via a T1 gateway. This is working fine now.

The customer also has another T1 gateway elsewhere in the network. Originally, this was supposed to be an backup site if the primary failed, but now they’re insisting that if the 23 lines on the primary T1 are busy, they expect calls to automatically get routed to the secondary T1.

I’m sure I’ve seen some discussion about this in the past, but I don’t even know what terms to search for to find them, and so far I’m not seeing anything relevant by scanning FAQs and old forum messages.

Can anyone give me some pointers to relevant information on this site?? Or can this be done at all??

I’m in the SF Bay too…we are both dealing with AT&T at some level. Have you tried them for an answer?

My guess is they’ve either told you that you need a T3 or that they don’t know, “because no one’s ever requested that before.”

I’ve never heard of putting T1s in hunt but they may have switches at the CO that do it. Good luck actually getting connected to a person that can give you a definitive answer.

Hi

This “should” not be a problem. Are the T1s DID or that same number across all channels?

Basicly if they are DID then the range is spread over both T1s if not then it is fairly normal to have the ability to have failover on Busy/OOO. But this isnt so easy if DID hence option 1

Ian

yes, failover on busy should be fairly trivial to apply. our asterisk servers have inbound T1 failover, so that if an entire span is busy or down, the calls will automatically route over the second T1, then the third, and so on.

this was a standard feature that ATT offers - we’re in Overland Park, KS, if that matters…

The issue here isn’t about the T1 capabilities, it’s about configuring Asterisk to handle the failover. The primary T1 and its VoIP gateway will be in Sacramento, as will the Asterisk device. The secondary T1 and its VoIP gateway will be somewhere in southern California, and the calls will need to be routed to it over the internet (actually, over a satellite link, but to Asterisk it’s just a network route).

I need to know how to configure Asterisk to route outgoing calls (FXS-to-PSTN) to another gateway when the primary is busy.

My approach to solving your problem would involve mostly gymnastics in extension.conf. If there’s a way around brute-forcing this into a dial-plan, let’s hope someone that’s done it can lend you some insight.

What you’re trying to do is something I have little experience in but would like to try at some point. I have lots of experience with Asterisk just not much in the way of tying remote locations together therewith. I’d love to be able to brag about having set something like this up.

If you’d like to collaborate on it a bit, let me know (No, this is not an attempt at selling consulting hours :smile: ). I’m limited in the amount of time I can dedicate but I am in Santa Clara almost weekly. If there’s a Starbucks nearby, it would be an added bonus.

In any event, Good luck!

something like this:

exten => _NXXNXXXXXX,1,Dial(Zap/g1/${EXTEN})
exten => _NXXNXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-CONGESTION,1,Dial(SIP/provider/${EXTEN})
exten => s-NOANSWER,1,Hangup
exten => s-.,Goto(s-NOANSWER,1)

this should attempt to dial out on your local zap channels, and if that fails due to congestion, it will attempt to dial out over your VOIP connection instead.

this is rough, and probably needs tweaking, but you get the idea.

[quote=“whoiswes”]something like this:

exten => _NXXNXXXXXX,1,Dial(Zap/g1/${EXTEN})
exten => _NXXNXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-CONGESTION,1,Dial(SIP/provider/${EXTEN})
exten => s-NOANSWER,1,Hangup
exten => s-.,Goto(s-NOANSWER,1)

this should attempt to dial out on your local zap channels, and if that fails due to congestion, it will attempt to dial out over your VOIP connection instead.

this is rough, and probably needs tweaking, but you get the idea.[/quote]

Okay, let me try this… my initial exten settings are a little different than yours:

exten => _NXXXXXX,1,Dial(SIP/${EXTEN}@primary_t1)
exten => _NXXXXXX,n,hangup
exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@primary_t1)
exten => _1NXXNXXXXXX,n,hangup

but I don’t think that makes any difference for your suggestsions, except that I presume I should put your Congestion extensions before the hangup entry!! :open_mouth:

Thanks for both of your help(s)!!

i made a mistake - congestion isn’t the dialstatus you’re wanting to flag, it’s CHANUNAVAIL

here’s a slightly different version that might work for you as well…i made the failover go to a separate context rather than have it included in the main T1 dial sequence…same idea, different way of doing it.

[code][primary_provider]
exten => _NXXXXXX,1,Dial(SIP/${EXTEN}@primary_t1)
exten => _NXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-CHANUNAVAIL,1,Goto(backup-provider,${EXTEN},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1)

exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@primary_t1)
exten => _1NXXNXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-CHANUNAVAIL,1,Goto(backup-provider,${EXTEN},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1)

[backup_provider]
exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@backup_t1))
exten => _1NXXNXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1)

exten => _NXXXXXX,1,Dial(SIP/${EXTEN}@backup_t1))
exten => _NXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1) [/code]

[quote=“whoiswes”]i made a mistake - congestion isn’t the dialstatus you’re wanting to flag, it’s CHANUNAVAIL

here’s a slightly different version that might work for you as well…i made the failover go to a separate context rather than have it included in the main T1 dial sequence…same idea, different way of doing it.

[code][primary_provider]
exten => _NXXXXXX,1,Dial(SIP/${EXTEN}@primary_t1)
exten => _NXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-CHANUNAVAIL,1,Goto(backup-provider,${EXTEN},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1)

exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@primary_t1)
exten => _1NXXNXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-CHANUNAVAIL,1,Goto(backup-provider,${EXTEN},1)
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1)

[backup_provider]
exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@backup_t1))
exten => _1NXXNXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1)

exten => _NXXXXXX,1,Dial(SIP/${EXTEN}@backup_t1))
exten => _NXXXXXX,n,Goto(s-${DIALSTATUS})
exten => s-NOANSWER,1,Hangup
exten => s-BUSY,1,Playtones(busy)
exten => s-CONGESTION,1,Playtones(congestion)
exten => s-.,Goto(s-NOANSWER,1) [/code][/quote]

Thank you very much!! I’ll try this out as soon as I can get a testbed set up for the backup site…