- Joined
- Feb 5, 2025
- Messages
- 1
- Reaction score
- 0
What's the simplest path to get the dialed DID per inbound call on V20? Is Call Control the right surface for this, or is there a better one (CRM templates, CDR exports, XAPI cross-reference)?
I've read the official Call Control API docs, the endpoint spec, and the 3cx/call-control-examples repo. A few forum threads hint that attached_data.inbound_did should carry it, but I can't find an admin walkthrough for setting that up.
What I'm trying to do: identify the dialed DID for each inbound external call on 3CX V20.0.0.873.
What I've tried:
1. Set up an API client in Admin → Integrations → API with both "3CX Configuration API" + "3CX Call Control & Chat API" scopes enabled.
2. Assigned a test DID to the API client (via the DID Number(s) field).
3. Connected to `wss://{fqdn}/callcontrol/ws` with the bearer token — works.
4. Dial the DID from a mobile — WebSocket emits events (~14 per call).
5. Pull the participant entity via GET on the event's URL — call state present, caller ID present, trunk DN present, but the dialed DID isn't there.
Participant body looks like:
```json
{
"id": 244,
"status": "Connected",
"party_caller_id": "+1234567890",
"party_dn": "10000",
"party_did": "",
"party_dn_type": "Wexternalline"
}
I've read the official Call Control API docs, the endpoint spec, and the 3cx/call-control-examples repo. A few forum threads hint that attached_data.inbound_did should carry it, but I can't find an admin walkthrough for setting that up.
What I'm trying to do: identify the dialed DID for each inbound external call on 3CX V20.0.0.873.
What I've tried:
1. Set up an API client in Admin → Integrations → API with both "3CX Configuration API" + "3CX Call Control & Chat API" scopes enabled.
2. Assigned a test DID to the API client (via the DID Number(s) field).
3. Connected to `wss://{fqdn}/callcontrol/ws` with the bearer token — works.
4. Dial the DID from a mobile — WebSocket emits events (~14 per call).
5. Pull the participant entity via GET on the event's URL — call state present, caller ID present, trunk DN present, but the dialed DID isn't there.
Participant body looks like:
```json
{
"id": 244,
"status": "Connected",
"party_caller_id": "+1234567890",
"party_dn": "10000",
"party_did": "",
"party_dn_type": "Wexternalline"
}