PBX -> 3CX Inbound Dialed Number Not Working

noneya

Premier Customer
Basic Certified
Joined
Jun 16, 2023
Messages
21
Reaction score
1
Hello all, I have a sip trunk with the line ID of 5999 to another phone system that does work, however when a person dials a number from the old to the new (3CX) system, 3cx acts as though the dialed number was the trunk number and NOT the actual dialed number. I would like it so that if the user dials ext 1505 (for example) via the trunk, it would go to ext 1505 rather than 5999.

It does in fact work if I register 1505 as a DID on that trunk and then go to 1505 and manually register it there, however there are hundreds of extensions and this is not practical.

Any ideas on how I could do this? I could do some kind of import process for this, but going into the GIU and doing it one by one would be impractical. I currently have a call flow designer that does in fact work (just a one step flow with a "Transfer" to "session.did" for 5999) which does work, but answers and puts the user on hold which is less than ideal.

Any thoughts would be appreciated!


Current trunk provider configuration:

Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<doc>
  <header>
    <name>Old CUCM System</name>
    <time>2025-06-30T21:39:24.0476576Z</time>
    <template>
      <!--Do not change this field-->GenericSIPTrunk.pv.xml</template>
    <type>
      <!--Do not change this field-->gateway-template</type>
  </header>
  <data>
    <device>
      <field name="Name">Old CUCM System</field>
      <type>provider</type>
      <manufacturer></manufacturer>
      <model>provider</model>
      <field name="RegistrarHost">10.1.1.11</field>
      <field name="RegistrarPort">5060</field>
      <field name="ProxyHost"></field>
      <field name="ProxyPort">5060</field>
      <field name="IpInContactReg">1</field>
      <field name="TimeBetweenRegistration">180</field>
      <field name="SecondaryRegistrar">10.1.1.12:5060</field>
      <field name="IPRestriction">ANY</field>
      <field name="TransportRestriction">ANY</field>
      <field name="RequireAuthFor">1</field>
      <field name="IpInContactRegValue"></field>
      <field name="RegistrarInvite">0</field>
      <field name="IsSupportReinvite">0</field>
      <field name="IsSupportReplaces">0</field>
      <field name="DisableVideo">1</field>
      <field name="SRTPMode">0</field>
      <field name="IsBindToMS">1</field>
      <codecs>
        <codec rfcname="PCMU" />
        <codec rfcname="PCMA" />
        <codec rfcname="G729" />
      </codecs>
      <field name="Source" custom="" parameter="ContactHost">$GWHostPort</field>
      <field name="ParameterIn" custom="" parameter="ToUserPart">$CalledNum</field>
      <field name="ParameterIn" custom="" parameter="FromUserPart">$CallerName</field>
      <field name="ParameterIn" custom="" parameter="FromUserPart">$CallerNum</field>
      <field name="ParameterOut" custom="" parameter="RequestLineURIUser">$CalledNum</field>
      <field name="ParameterOut" custom="" parameter="RequestLineURIHost">$GWHostPort</field>
      <field name="ParameterOut" custom="" parameter="ContactUser">$CallerNum</field>
      <field name="ParameterOut" custom="" parameter="ContactHost">$ContactUri</field>
      <field name="ParameterOut" custom="" parameter="ToDisplayName">$CalledName</field>
      <field name="ParameterOut" custom="" parameter="ToUserPart">$CalledNum</field>
      <field name="ParameterOut" custom="" parameter="ToHostPart">$GWHostPort</field>
      <field name="ParameterOut" custom="5555" parameter="FromDisplayName">$CustomField</field>
      <field name="ParameterOut" custom="" parameter="FromUserPart">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="FromHostPart">$GWHostPort</field>
      <field name="ParameterOut" custom="" parameter="RemotePartyIDCallingPartyDisplayName">$CallerName</field>
      <field name="ParameterOut" custom="" parameter="RemotePartyIDCallingPartyUserPart">$OutboundCallerId</field>
      <field name="ParameterOut" custom="" parameter="RemotePartyIDCallingPartyHostPart">$GWHostPort</field>
    </device>
    <sms>
      <variable name="MESSAGING_API_KEY">
        <option></option>
      </variable>
      <variable name="PROVIDER_URL">
        <option></option>
      </variable>
      <field name="Enabled">0</field>
      <field name="OptionalProvider">1</field>
      <field name="ProviderType">generic</field>
      <field name="OutboundRouting">1</field>
      <field name="ProviderName">Generic</field>
    </sms>
  </data>
</doc>



Invite Packet

Code:
INVITE sip:[email protected]:53544 SIP/2.0
Via: SIP/2.0/TCP 10.1.1.11:5060;branch=z9hG4bK10dcb95e8f4167
Max-Forwards: 70
Contact: <sip:[email protected]:5060;transport=tcp>
To: <sip:[email protected]>
From: "Cisco" <sip:[email protected]>;tag=3147053~a2702b26-4c7d-4066-9974-fa0461e0e71f-26096345
Call-ID: [email protected]
CSeq: 101 INVITE
Expires: 180
Session-Expires: 1800
Min-SE: 1800
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY
Call-Info: <sip:10.1.1.11:5060>;method="NOTIFY;Event=telephone-event;Duration=500"
Call-Info: <urn:x-cisco-remotecc:callinfo>;x-cisco-video-traffic-class=VIDEO_UNSPECIFIED
Date: Mon, 30 Jun 2025 22:12:11 GMT
Supported: timer, resource-priority, replaces, X-cisco-srtp-fallback, Geolocation
User-Agent: Cisco-CUCM12.0
Allow-Events: presence, kpml
Privacy: none
P-Preferred-Identity: "Unavailable" <sip:[email protected]>
Remote-Party-ID: "Unavailable" <sip:[email protected]>;party=calling;screen=yes;privacy=off
Session-ID: 1028ce94338531d43e0783bd26096342;remote=00000000000000000000000000000000
Cisco-Guid: 1136047360-0000065536-0000005813-0197660426
Diversion: "Auto Attendant" <sip:[email protected]>;reason=unconditional;privacy=off;screen=yes
Content-Length: 0



Code:
C:49.1 Attached data:
====
ID = '254'
dnid = '326'
callid = '49'
legid = '1'
chid = '00000000-01db-ea0c-0742-87b900000031'
refby = '0'
prevCall = '0'
prevLeg = '0'
sip_dialog_set_id = '[email protected]'
extnumber = '5999'
initiator = '1'
devcontact = 'sip:[email protected]:5060;transport=TCP'
time = '(type = 5)'
statusEvent = '2'
caller_name = '5999'
public_push_pickupinfo = '[email protected];to-tag=11832427;from-tag=3147053~a2702b26-4c7d-4066-9974-fa0461e0e71f-26096345'
inbound_did = '1505'
inbound_did_rule = ''
sip_displayname = '5999'
sdpoffered = '0'
participant_uid = '00000000-01db-ea0c-0742-b17e000000f9'
msep_id = '[email protected]:5482'
 
Hello,

For calls exciting 3CX you will need an Outbound rule specifying for example the digit length that routes those calls to the other system. Look at the bridge configuration guide - using a prefix that gets stripped by the outbound rule might be needed if the two systems have overlapping ranges.
https://www.3cx.com/docs/manual/connecting-pbx-bridges/

For incoming calls to 3CX can import DIDs into 3CX via a CSV.
Here is an example CSV: https://downloads-global.3cx.com/downloads/misc/DID.csv

From here:

1751431402354.png
 
Almost always, when we do CUCM migrations, including one finishing migration next week, we make a trunk almost identical to yours (yours might be more customized to be honest), add all cucm extensions to that trunk, routing to the correct extension number in 3CX and in cucm we have to do similar (add all 3CX extensions and where they should route to) and then an outbound rule (usually at the bottom of the list, targeting default department) that routes to cucm.
 
  • Like
Reactions: KyriacosS_3CX

Latest Posts

Forum statistics

Threads
111,962
Messages
589,980
Members
164,864
Latest member
SCarpenter@fifthavenue-la