For NOC support, call 563-9400
test numbers:
number | destination |
---|---|
8000 | asterisk 1004hz |
8200 | definity mW then silence |
8203 | definity loopback/echo |
8400 | meridian mW then silence |
Prefix 563
number | description |
---|---|
8000 | asterisk 1004hz |
8200 | definity mW then silence |
8203 | definity loopback/echo |
8400 | meridian mW then silence |
92XX | |
9200 | kitchen table phone |
9201 | living room phone |
93XX | cisco 3845 extensions |
9300 | cisco 3845 MICA bank |
9301 | kitchen modem |
939[2-9] | UDS modem bank on cisco 2511 |
94XX | meridian extensions |
9400 | living room wall set |
9401 | bedroom rotary set |
9402 | ISDN BRI |
9403 | ISDN BRI |
9404 | kitchen phone |
todo: anti-tromboning. For now, just don't create a loop on accident. just Don't Do It.
todo: outgoing calling party number should be set to match SCDP
Each trunk directs in to it's appropriate inbound context. SCDP trunks get 1 (222) appended automatically which denotes an SCDP number on my system. 222 is an unused NPA in NANP. The number is then sent to the scdp context for further decoding.
[trmg-inbound] ; SCDP tandem exten => _X.,1,Progress() same => n,Gosub(scdp,1222${EXTEN},1(private)) same => n,Hangup [doppler-inbound] ; SCDP endpoint exten => _X.,1,Progress() same => n,Gosub(scdp,1222${EXTEN},1(private)) same => n,Hangup
The scdp context includes various other contexts that correspond to specific outgoing trunks and local numbers. Those contexts perform the necessary digit conversion, for example to 4 digits for local, 7 digits for calls placed through trmg, or 4 digits for calls placed to doppler.
Additionally, a crude permissions system is implemented disallowing calls from 'public' to be placed to scdp destinations.
[scdp] ; shadytel coordinated dialplan include => local-scdp include => doppler-scdp include => trmg-scdp [local-scdp] ; local stuff exten => _1222563XXXX,1,Gosub(inbound-sub,${EXTEN:7},1(${ARG1})) same => n,Hangup [trmg-scdp] ; numbers that route to or through trmg ; Andrew exten => _1222222XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; gewt ; GewtTandem exten => _1222415XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; appledash ; DashTel ; 428 == HAT exten => _1222428XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; techfury90 ; OwOTel exten => _1222466XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; aperron ; INads 6 exten => _1222696XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; Andrew exten => _1222709XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; Andrew exten => _1222867XXXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; local to trmg ; TRMGtel ; VOFR exten => _1222871XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup ; catchall for scdp numbers that trmg can maybe route ;exten => _1222XXXXXXX,1,Goto(${ARG1}) ;same => n(public),Progress ;same => n,Playback(custom/68000-cbrfca,noanswer) ;same => n,Playback(custom/68000-cbrfca,noanswer) ;same => n,Hangup() ;same => n(private),Noop ;same => n(internal),Dial(IAX2/trmg-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) ;same => n,Hangup [doppler-scdp] ; numbers that route to doppler exten => _1222357XXXX,1,Goto(${ARG1}) same => n(public),Progress same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Playback(custom/68000-cbrfca,noanswer) same => n,Hangup() same => n(private),Noop ;same => n(internal),Dial(IAX2/doppler-joe_z/${EXTEN:4},180,${IF($["${ARG1}" = "internal"]?T)}) same => n(internal),Dial(IAX2/doppler-joe_z/${EXTEN:7},180,${IF($["${ARG1}" = "internal"]?T)}) same => n,Hangup
Not much to it. For historical reasons, I register to trmg on this trunk. I send an SCDP prefix and number since trmg's equipment functions as a tandem.
I route almost all SCDP calls over this trunk. The obvious exceptions are calls to my own prefix (563) as well as calls to doppler (357).
Again, for historical reasons, I register to doppler on this trunk. I send 4 digits, stripping the prefix from the number.