Documentation Index
Fetch the complete documentation index at: https://docs.getsmartalex.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you begin, have these in hand:- 3CX edition: StartUP Pro or higher. SMB Free restricts SIP trunks to an approved list , we’re not on that list, so Free won’t work.
- 3CX admin console login
- Your 3CX’s PBX SIP domain , the FQDN your extensions would use (e.g.,
pbx.acmecorp.co.zafor on-premise, oracmecorp.3cx.cloudfor hosted) - List of extensions you want the AI to be able to transfer to (numbers + names + departments)
- A DID (phone number) that the AI will answer on , either existing on your carrier, or newly provisioned
- A SmartAlex workspace with an agent already configured and wallet credit available
Overview of the flow
Step 1 , Create the SIP trunk in SmartAlex
Select 3CX
Fill the form
- Trunk Name:
Acme HQ 3CX(or whatever labels the trunk for you) - PBX SIP Domain: your 3CX’s hostname or IP, e.g.,
pbx.acmecorp.co.za, this is required because it’s what the AI uses to address transfers back to your PBX - Authentication Method: leave on Credentials unless you have a specific IP-allowlist requirement
- SIP Username + SIP Password: leave blank to auto-generate (recommended)
Step 2 , Add the trunk in 3CX
Log in to 3CX admin console
https://your-pbx.3cx.cloud:5001 or your on-premise 3CX admin URL.Choose Generic Provider
- Country: Generic
- Provider: Generic VoIP Provider (or Generic SIP Trunk, depending on your 3CX version)
- Main Trunk No.: leave blank (we’ll set DID routing later)
Fill General tab
- Enter name of Provider:
SmartAlex - Registrar/Server:
sip.voice.getsmartalex.com - Outbound Proxy:
sip.voice.getsmartalex.com - Number of SIM Calls: set to the concurrent-call limit you configured in SmartAlex (default 10)
- Type of Authentication: Register/Account based
- Authentication ID: paste the username from SmartAlex
- Authentication Password: paste the password from SmartAlex
- 3CX requires Registration: Yes
Fill DIDs tab
27872500100). These are the numbers inbound calls will hit to reach the AI.Click the save icon next to each number or press Enter after typing.Codec Priority
- G.711 A-law (PCMA) , for South African calls
- G.711 u-law (PCMU) , for US / UK / international
Step 3 , Route inbound calls to SmartAlex
You have two options. Pick the one that matches your scenario:Option A , AI answers on your existing DIDs
Your customer-facing numbers stay with your carrier. 3CX receives inbound calls and routes selected DIDs to SmartAlex instead of to an extension or queue.Create Inbound Rule in 3CX
- DID/DDI Number: the DID you want the AI to answer
- Office Hours Action: External Number (or Route to a specific trunk)
- External Number / Trunk: select the SmartAlex trunk
- After Hours Action: same (for 24/7 coverage) or your previous routing if you only want AI during business hours
Option B , AI answers on a SmartAlex DID, transfers into 3CX on demand
Your customer-facing number is provisioned through SmartAlex. The AI always answers, and transfers into 3CX extensions only when needed.Provision a number in SmartAlex
Step 4 , Add your extensions in SmartAlex
The AI needs to know which extensions exist and what to call them.Add extensions one at a time or via CSV
- Ext: 2 to 6 digits (e.g.,
101) - Name: what appears in call records and what the AI speaks (e.g.,
Sales) - Owner: person on that extension (e.g.,
Sarah Jones) , optional - Department: grouping tag (e.g.,
Sales) , optional
Step 5 , Link the agent to the SIP trunk
agents.sip_trunk_id , the link that tells the AI about your PBX extensions.- PBX SIP Trunk: pick the trunk you just created from the dropdown
transfer_to_pbx available as a tool.
Step 6 , Test the transfer
Validation checklist
- SmartAlex trunk status is Active
- 3CX trunk status is Registered (green)
- DID is in the DIDs tab of the 3CX trunk
- Inbound Rule routes the DID to the SmartAlex trunk (if using Option A)
- Extensions are populated in SmartAlex PBX Settings
- Agent is linked to the SIP trunk via Agent Studio → Telephony tab
- A test call reaches the AI
- A test transfer rings the correct extension
- CDR in 3CX shows the call, the trunk, and the transfer event
Rollback procedure
If something goes wrong and you need to revert to your previous routing:- In 3CX: edit the Inbound Rule back to its previous target (e.g., your old IVR or Reception extension). The trunk can remain registered , it just won’t receive any calls.
- In SmartAlex: no action needed , the trunk stays configured but inactive. You can return to it anytime.
3CX-specific notes and quirks
Attended transfers of external calls
Attended transfers of external calls
"Supports Re-Invites" / "Supports Replaces" settings
"Supports Re-Invites" / "Supports Replaces" settings
3CX Cloud vs on-premise
3CX Cloud vs on-premise
sip.voice.getsmartalex.com. 3CX Cloud already has outbound network access.3CX v18 vs v19 vs v20
3CX v18 vs v19 vs v20
Hosted 3CX Pro vs Enterprise
Hosted 3CX Pro vs Enterprise
Common errors
3CX trunk shows 'Not Registered' or red indicator
3CX trunk shows 'Not Registered' or red indicator
- Username or password typed incorrectly , copy/paste again from SmartAlex
- 3CX behind NAT with SIP ALG enabled on the firewall , disable SIP ALG on the firewall
- Outbound UDP 5060 blocked by firewall , check firewall rules
Activity Log in 3CX (Admin → System → Event Log or Activity Log). Look for 401/403 responses (credentials) or timeouts (network).Inbound calls ring but the AI doesn't answer
Inbound calls ring but the AI doesn't answer
Transfer fires but 3CX returns 603 Decline
Transfer fires but 3CX returns 603 Decline
One-way audio (you can hear them, they can't hear you)
One-way audio (you can hear them, they can't hear you)
Call drops after ~30 seconds
Call drops after ~30 seconds

