Before you start
- Admin access to VICIdial with Modify Carriers permission (user level 9).
- Your dialer server public IP added to your CLIRoutes endpoint, or SIP credentials from the portal.
- At least one authorised caller ID approved in the portal under Caller IDs.
- UDP 5060 and the RTP range (10000–20000 by default) open to the CLIRoutes signalling and media networks.
Placeholders in angle brackets, such as <ACCOUNT_ID>, come from your portal. The host shown is a placeholder; use the one listed under Portal → Network.
Set up VICIdial
- 01
Create the carrier
In the admin screen go to Admin → Carriers → Add a New Carrier. Use a short Carrier ID without spaces, set Protocol to SIP, choose the server(s) that will place calls and leave Active set to N until the test call passes.
- 02
Fill in the account entry
The account entry becomes the peer definition. For IP authentication leave the credentials out; for registration add
defaultuser,secretandfromuserand fill the Registration String field as shown in the second block.Account Entry · IP authentication [cliroutes] type=peer host=sip.example-carrier.net port=5060 disallow=all allow=ulaw allow=alaw allow=g729 dtmfmode=rfc2833 insecure=port,invite qualify=yes nat=force_rport,comedia sendrpid=pai trustrpid=yes context=trunkinbound - 03
Add registration (credential accounts only)
Skip this step if your endpoint uses IP authentication. Otherwise paste the registration string with the account ID and SIP password from Portal → Endpoints.
Registration String register => <ACCOUNT_ID>:<SIP_PASSWORD>@sip.example-carrier.net:5060 - 04
Set the globals string
The globals string creates a variable the dialplan can reference, so you can repoint every campaign at a different trunk by editing one line.
Globals String CLIROUTES = SIP/cliroutes - 05
Write the dialplan entry
This entry matches numbers sent with dial prefix
9, strips the prefix, logs the call through the VICIdial AGI and dials the full international number (country code first, no+or00). Theooption keeps the campaign caller ID on the outbound leg.Dialplan Entry exten => _9X.,1,AGI(agi://127.0.0.1:4577/call_log) exten => _9X.,n,Dial(${CLIROUTES}/${EXTEN:1},,tTo) exten => _9X.,n,Hangup() - 06
Point the campaign at the carrier
Open Campaigns → [your campaign] → Detail. Set Dial Prefix to
9, Campaign CallerID to an authorised number in E.164 without the plus, and check Use Custom CallerID is off unless every list row carries an approved number. - 07
Activate and test
Set the carrier to Active = Y and submit; VICIdial rebuilds the configuration within a minute. Place a manual dial to a mobile you control, confirm the caller ID shown on the handset, then check the call appears in Portal → CDRs with the expected destination and duration.
Asterisk CLI · verify asterisk -rx "sip show peer cliroutes" asterisk -rx "sip show registry" asterisk -rx "sip set debug peer cliroutes"
How VICIdial chooses the caller ID
VICIdial resolves the presented number in this order: the list-level or lead-level custom caller ID (if Use Custom CallerID is enabled), then the campaign CID areacode table, then the campaign caller ID. Whatever wins is sent in the From and P-Asserted-Identity headers. CLIRoutes checks that number against the caller IDs authorised on your account and rejects anything else with 403 Forbidden.
Matching dial level to channels and CPS
Your endpoint has a channel limit and a calls-per-second limit. With an adaptive dial method VICIdial can burst above both when agents become free together. Cap the campaign with Auto Dial Level and Available Only Tally Threshold, and keep the server-level Max VICIDIAL Trunks at or below your channel limit. The channel and CPS sizing guide shows the arithmetic, or use the SIP channel calculator.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
403 Forbidden on every call | Server IP not on the endpoint, or caller ID not authorised | Add the IP in the portal; check the campaign CID |
404 / 484 on some destinations | Prefix not stripped, or number sent in national format | Confirm ${EXTEN:1} and that lists hold full international numbers |
| One-way audio | NAT rewriting or RTP ports closed | Keep nat=force_rport,comedia; open RTP to the media range |
503 during bursts | Channel or CPS limit reached | Lower dial level or ask routing to raise limits |
For code-by-code meanings, see SIP response codes for dialer operators.
Last verified by the CLIRoutes routing team. Menus can change between releases; if a field has moved, tell us.