Table of Contents

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

Directory

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

Switches

dia file

Asterisk - LBRDILLGAX0

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

Trunks

trmg - TR1 - 871

IAX2

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).

doppler - DoppLeR - 357

IAX2

Again, for historical reasons, I register to doppler on this trunk. I send 4 digits, stripping the prefix from the number.