Context Based Calling - Two Asterisk Servers (IAX2 Trunking)

Hi,

I have 2 Asterisk servers connected over WAN. “PBX-A” has PSTN Terminations & “PBX-B” has all SIP Phones (Cisco 7940).

“PBX-A” has 2 TE212P cards and 3 active PRI Links. One of them is dedicated UK Incoming/Outgoing PRI (ZAP/4). This carries UK Incoming/Outgoing calls to/from “PBX-B”. A set of 10 DID numbers routed to “PBX-B” over IAX2 Trunk. Cisco 7940 Phones Line#2 is configured for UK DID number.

I need help on below:

  1. How to restrict line#2 sip accounts (ukphones) @ “PBX-B” to uses ZAP/4 at “PBX-A” for all outgoing calls
  2. Caller ID is not working on UK PRI. “Unknown Number” display.

IAX2 using a context “iax-trunk” at both locations. SIP Accounts default context is “internal”. uk extensions context is “ukphones”

Below is my configuration:

iax.conf @ PBX-B

[general]
bindport=4569
trunk=yes
autokill=yes
disallow=all
allow=gsm

[PBX-A]
type=friend
secret=secret
username=PBX-A
host=10.10.10.250
context=iax-trunk
trunk=yes
disallow=all
allow=gsm

extensions.conf @ PBX-B

[general]
static=yes
writeprotect=no

[globals]

[default]
include => incoming

[generalvm]
;General Voice Mail Box Extension
exten => _7777,1,VoicemailMain

[macro-ext]
exten => s,1,Answer
exten => s,2,SetMusicOnHold(default)
exten => s,3,Dial(SIP/${ARG1},20)
exten => s,4,Voicemail(${ARG2},su)
exten => s,5,Hangup
exten => s,102,Voicemail(${ARG2},sb)
exten => s,103,Hangup

[ukextensions]
;UK DID Extensions
exten => _77X,1,Macro(ext,${EXTEN},${EXTEN})

[extensions]
;User Extensions
exten => _76XX,1,Macro(ext,${EXTEN},${EXTEN})

[incoming]
include => generalvm
include => extensions
include => dirlisting
include => ukextensions

[internal]
include => generalvm
include => extensions
include => dirlisting
include => ukextensions
include => outgoing

[management]
include => generalvm
include => extensions
include => dirlisting
include => ukextensions
include => outgoing
include => international

[iax-trunk]
include => generalvm
include => extensions
include => dirlisting
include => ukextensions
include => ukoutgoing
include => outgoing
include => international

[ukphones]
include => ukextensions
include => ukoutgoing

[dirlisting]
exten => _8,1,Directory(default,incoming,f)
exten => _7,1,Directory(default,incoming)

[outgoing]
;TOLL-FREE Number Dial Schema
exten => _1800.,1,Dial(IAX2/PBX-B:secret@10.10.10.250/${EXTEN})
exten => _1800.,2,Hangup
exten => _1866.,1,Dial(IAX2/PBX-B:secret@10.10.10.250/${EXTEN})
exten => _1866.,2,Hangup
exten => _1877.,1,Dial(IAX2/PBX-B:secret@10.10.10.250/${EXTEN})
exten => _1877.,2,Hangup
exten => _1888.,1,Dial(IAX2/PBX-B:secret@10.10.10.250/${EXTEN})
exten => _1888.,2,Hangup

;Long-Distance Numbers Dial Schema
exten => _1NXXXXXXXXX,1,Dial(IAX2/PBX-B:secret@10.10.10.250/${EXTEN})
exten => _1NXXXXXXXXX,2,Hangup

[international]
;International Number Dial Schema
;exten => _011.,1,Authenticate(6015)
exten => _011.,1,Dial(IAX2/PBX-B:secret@10.10.10.250/${EXTEN})
exten => _011.,2,Hangup

[ukoutgoing]
;UK International calling for UKPhones
exten => _01144.,1,Dial(IAX2/blruk:secret@10.10.10.250/${EXTEN})
exten => _01144.,2,Hangup()

iax.conf @ PBX-A

[general]
bindport=4569
trunk=yes
autokill=2000
disallow=all
allow=gsm

[PBX-B]
type=friend
secret=secret
username=PBX-B
host=10.10.20.250
context=iax-trunk
trunk=yes
disallow=all
allow=gsm

extensions.conf @ PBX-A

[general]
static=yes
writeprotect=no

[globals]

[default]
include => incoming

[generalvm]
;General Voice Mail Box Extension
exten => _7400,1,VoicemailMain

[macro-ext]
exten => s,1,Answer
exten => s,2,SetMusicOnHold(default)
exten => s,3,Dial(SIP/${ARG1},20)
exten => s,4,Voicemail(${ARG1})
exten => s,5,Hangup

[ukextensions]
;UK DID Numbers
exten => _77X,1,Dial(IAX2/PBX-A:secret@10.10.20.250/${EXTEN},20,rt)

[extensions]
;User Extensions
exten => _76XX,1,Dial(IAX2/PBX-A:secret@10.10.20.250/${EXTEN})

[ukincoming]
include => ukextensions

[incoming]
include => generalvm
include => extensions
include => dirlisting

[internal]
include => generalvm
include => extensions
include => ukextensions
include => dirlisting
include => outgoing

[management]
include => generalvm
include => extensions
include => ukextensions
include => dirlisting
include => outgoing
include => international

[iax-trunk]
include => generalvm
include => extensions
include => ukextensions
include => dirlisting
include => outgoing
include => international

[dirlisting]
exten => _8,1,Directory(default,incoming,f)
exten => _7,1,Directory(default,incoming)

[outgoing]
exten => _1800.,1,Dial(ZAP/g1/${EXTEN})
exten => _1800.,2,Hangup
exten => _1866.,1,Dial(ZAP/g1/${EXTEN})
exten => _1866.,2,Hangup
exten => _1877.,1,Dial(ZAP/g1/${EXTEN})
exten => _1877.,2,Hangup
exten => _1888.,1,Dial(ZAP/g1/${EXTEN})
exten => _1888.,2,Hangup

exten => _1NXXXXXXXXX,1,Dial(ZAP/g2/${EXTEN})
exten => _1NXXXXXXXXX,2,Hangup

[international]
exten => _011.,1,Dial(ZAP/g2/${EXTEN})
exten => _011.,2,Hangup

[ukoutgoing]
exten => _01144.,1,Set(CALLERID(num)=2040575${CALLERID(num)})
exten => _01144.,2,Dial(ZAP/g4/${EXTEN},r)
exten => _01144.,3,Hangup()

Can you please suggest the best option to manage this kind of setup. Does my IAX2 Trunk needs improvement? should i change my context logic?

Please help

thanks
ldp