Articles in this section

Preserving Caller ID for Inbound AI Agent Calls — 3CX

Published:

Overview

When a 3CX system forwards an inbound call (e.g. from a 1800 number) to the Comms Channel AI Voice Agent, the AI Agent needs the original caller's number — not the 1800 or the trunk's DID. By default, 3CX sends the trunk's Main Trunk Number on outbound calls. This guide shows how to configure the outbound SIP trunk in 3CX to pass the original caller's number through.

Call path: Customer → 1800 Number → 3CX → Outbound SIP Trunk → AI Voice Agent


⚠️ Prerequisite — Carrier Must Allow CLI Override

The SIP trunk carrier between 3CX and the AI Agent platform must permit third-party Caller ID presentation — also known as CLIP no-screening, CLI Override, or CLI Freedom.

Without this, the carrier will strip the original Caller ID and replace it with the trunk's own DID, making the 3CX configuration ineffective. Contact the trunk carrier before changing anything in 3CX and confirm this is enabled on the trunk used to reach the AI Agent.


Steps — 3CX V18

  1. Log in to the 3CX Admin Console
  2. Go to SIP Trunks → select the trunk routing calls to the AI Agent
  3. Click the Outbound Parameters tab
  4. Under Content of SIP fields, set each of the following to OriginatorCallerID:
    • From: User Part
    • From: Display Name
    • Remote Party ID - Calling Party: User Part
    • P-Asserted-Identity: User Part
  5. Click OK to save
  6. Open the Outbound Rule that routes calls to the AI Agent — confirm the Outbound Caller ID field is empty (any value here will override OriginatorCallerID)
  7. Test a live call and confirm the AI Agent receives the correct Caller ID

Steps — 3CX V20 (Outbound Parameters tab removed)

In V20, the Outbound Parameters tab was removed from the UI. Configuration now requires editing the provider template.

  1. Log in to the 3CX Admin Console
  2. Go to AdvancedTemplatesSIP Trunk Providers
  3. Locate the template used by the AI Agent trunk (or the Generic SIP Trunk template) and create a customised copy
  4. In the template XML, ensure the following line is present:
    <field name="ParameterOut" custom="" parameter="FromUserPart">$OriginatorCallerId</field>
  5. Save the template and reassign the SIP trunk to use the customised template
  6. Open the Outbound Rule that routes calls to the AI Agent — confirm the Outbound Caller ID field is empty
  7. Test a live call and confirm the AI Agent receives the correct Caller ID

Key Notes

ItemDetails
Variable usedOriginatorCallerID — tells 3CX to use the original caller's number on forwarded calls
Carrier requirementThe SIP trunk carrier must allow CLIP no-screening / CLI Override — without this, 3CX configuration alone will not work
Outbound RuleThe Outbound Caller ID field on the matching Outbound Rule must be empty — any value overrides OriginatorCallerID
V20 limitationOutbound Parameters tab was removed in V20 — configuration requires template XML edit via Advanced → Templates
TestingIf Caller ID still doesn't pass through after configuration, capture a SIP trace to confirm whether it's being rewritten by 3CX or by the carrier
3CX versionCheck the 3CX version first — V18 and V20 steps are different

Related 3CX Documentation

Access denied
Access denied