Prohibit Transfer To One Extension

Home » Asterisk Users » Prohibit Transfer To One Extension
Asterisk Users No Comments

Hello all, first post, need help. I’m running a complex asterisk 1.8 install with five machines. I inherited it and don’t fully understand it, nor the deep mysteries of asterisk either. I would appreciate any insight you might have. I scoured the ‘net and the Digium wiki and my Google-Fu has failed me.

I’ve been asked to somehow prohibit transfers to extension 3232. It has to be fully dialable from outside, as it is now. But they want to prevent people calling other DIDs and being transferred to 3232. They want the clerks and other people they’re calling to tell them to hang up and redial the DID for 3232. They want to be able to tell them that they CAN’T transfer them to that extension. That extension is just an ordinary extension defined by FreePBX on machine A. See below. Well, it’s ordinary in that it was defined in the gui, but there’s no physical phone. It’s just used to collect voicemail for a legal purpose.

As I said, I inherited this system. I don’t really know what to include in this question, so I pasted anything I thought was relevant. You;ll have to tell me if there’s other config files you want to see.

I’ve written some VERY simple dialplan code, but need to be told where to put it. So, here goes.

Four machines have FreePBX 2.9 front ends, the fifth is a bare asterisk install (on machine “C”). At the same physical site as “C” is machine “A” which handles users and phones for that site. Other sites have machines Z, D, K to handle the phones local to them.

There’s two more for the primary and failover IVR, and a subsidiary machine for conference bridges and other minor functions.

There are (from the perspective of the “A” machine) IAX trunks to the IVR machines, IAX trunks to Z, D, K, and “to-pstn-c” for machine C.

Machine “c” is connected to our PRIs but has no phones on it. Well, not really. It does a few special things (in extensions.conf) like send calls to our custom-written ACD queue program, send calls to our fax-to-print code, deal with a few special numbers, etc. It prepends our local areacode to calls that come in as 7-digit CLIDs. It checks if the call came in with a destination of our main IVR, checks if it’s in failover, sends it to the primary or secondary IVR, etc.

It checks for a match against our two main DID ranges, and a few special ones: (patterns slightly obfuscated below)
exten => _414abc32XX,1,NoOp(DID: ${EXTEN})
same => n,Goto(to-internal,${EXTEN:-4},1)

exten => _414def17XX,1,NoOP(DID: ${EXTEN})
same => n,Goto(to-internal,${EXTEN:-4},1)

exten => 414def1700,1,NoOp(Transit Plus)
same => n,Goto(1700-auto-attendant,aaentry,1)

exten => 414ghi4550,1,NoOp(Main Number)
same => n,Goto(4550-auto-attendant,aaentry,1)

exten => _X.,1,NoOp(Unknown DID: ${EXTEN})
same => n,Goto(4550-auto-attendant,aaentry,1)

exten => s,1,NoOP(No DID)
same => n,Goto(4550-auto-attendant,aaentry,1)

If there’s no such DID defined, it dumps the call into our main autoattendent, which is different from the IVR.

Right after the code above, it the [to-internal] context attempts a DUNDI lookup on the number, and routes the call as appropriate.

AS FAR AS I CAN TELL, inbound calls are handed off to machine A, Z, D, and K, by C, as appropriate. I think the original design was that all machines would route calls to machine A, then A would send them to where they belonged. But ISTR later defining meshed IAX2 trunks so that 4-digit calls could find their way to or from A, Z, D, or K even if A was toes-up.

That’s no help if machine C dies, because outbound calls to the PSTN have to go through C.

On A, Z, D, and K, the FreePBX GUI writes the configuration files, but we do have a BUNCH of stuff in extensions_custom.conf for special handling of various things.

Thomas M. Peters | IT Specialist | tpeters@mcts.org Desk: 414.343.1720 | Helpdesk: x3400 or helpdesk@mcts.org