- Joined
- Jan 14, 2022
- Messages
- 1
- Reaction score
- 0
Hi there,
I'm currently in the process of migrating some telephony infrastructure from an on-prem physical PBX to 3CX hosted on a hypervisor. For some context the telephony system currently integrates with Twilio (for origination and termination) and we have a Python microservice deployed on AWS which handles incoming calls and dispatches them to relevant departments and extensions. This is done by sending SIP INVITE messages with the extension number directly to our on-prem PBX. This means that the on-prem PBX simply routes calls and the IVRs etc... are all handled by Python in the cloud. As such an example call flow looks a bit like this:
1) Caller dials the main number
2) Caller is presented with an IVR by Python microservice
3) Caller wishes to reach a user with an extension number of 100, so enters this into the keypad. Python then interprets the dial-tones, then checks user availability.
4) If the user is available to take a call, the Twilio API is utilised to send a SIP invite to our PBX URL. E.g. Request: INVITE sip:100@<pbx_url>.
5) The PBX checks that the request has come from Twilio and immediately routes the call to the user in question.
6) The call is connected and both parties communicate.
Now the question I have is how does one configure 3CX to route extension numbers from SIP trunks? From my initial inspection it seems that 3CX can only be configured to accept generic calls to a routable number from an upstream trunk rather than pre-parsed extension numbers ready to be routed. Effectively, I have 3CX setup with all the users and their extensions, I just need it so that when 3CX receives a call request for extension 100 from a SIP trunk, it will call the user with extension 100.
I'm sure this is possible to solve, I feel like I just need to know the correct place to configure this as it's a feature of most PBX systems.
Thanks

James.
I'm currently in the process of migrating some telephony infrastructure from an on-prem physical PBX to 3CX hosted on a hypervisor. For some context the telephony system currently integrates with Twilio (for origination and termination) and we have a Python microservice deployed on AWS which handles incoming calls and dispatches them to relevant departments and extensions. This is done by sending SIP INVITE messages with the extension number directly to our on-prem PBX. This means that the on-prem PBX simply routes calls and the IVRs etc... are all handled by Python in the cloud. As such an example call flow looks a bit like this:
1) Caller dials the main number
2) Caller is presented with an IVR by Python microservice
3) Caller wishes to reach a user with an extension number of 100, so enters this into the keypad. Python then interprets the dial-tones, then checks user availability.
4) If the user is available to take a call, the Twilio API is utilised to send a SIP invite to our PBX URL. E.g. Request: INVITE sip:100@<pbx_url>.
5) The PBX checks that the request has come from Twilio and immediately routes the call to the user in question.
6) The call is connected and both parties communicate.
Now the question I have is how does one configure 3CX to route extension numbers from SIP trunks? From my initial inspection it seems that 3CX can only be configured to accept generic calls to a routable number from an upstream trunk rather than pre-parsed extension numbers ready to be routed. Effectively, I have 3CX setup with all the users and their extensions, I just need it so that when 3CX receives a call request for extension 100 from a SIP trunk, it will call the user with extension 100.
I'm sure this is possible to solve, I feel like I just need to know the correct place to configure this as it's a feature of most PBX systems.
Thanks
James.