Take Control of Calls on 3CX with the Call Control API
The Call Control API is an API available for 3CX Phone System Version 9 and upwards that allows calls to be controlled. This is an advanced API that requires .NET, C# and telecommunications experience. It should only be used for larger projects. To integrate with CRM systems, use the CRM Plugin API.
Note: 3CX DOES NOT PROVIDE DEVELOPER SUPPORT for this API. If you feel that the documentation provided with the sample application can be improved, please login to the 3CX Support Portal, and submit a ticket with your comments. Please try to be as specific as possible with your description.
With the Call Control API, you can view:
- All active calls on the PBX
- Take control of a call
- Transfers
- Disconnect a call
The API is a DLL/.NET library. In order to use it you need to add a reference to the 3cxpscomcpp2.dll, which is located in the 3CX Phone System bin directory and specify the application name, which must be unique, in the 3CXphonesystem.ini file (located in the 3CX Phone System directory).
Add to the section [ConfService] the application name, eg: PhoneSystem.ApplicationName = “UniqueName”
The communication over the TCP is handled by the library and is via port 5485.
The API is only available on the server, i.e any application that is using it must be running on the server itself. This is because the service will not accept connections from 0.0.0.0 (ANY IP). Connections are only accepted from 127.0.0.1 (localhost).
The Call Control API is only available in commercial editions.
3CX API documentation, including sample applications that make the use of the API self explanatory, can be found here:
3CX API Documentation Package for 3CX Phone System 10
3CX API Documentation Package for 3CX Phone System 9
Note: The above downloads contain a help file and two samples.
The first sample is called “ActiveCalls_QueueCalls”, and shows how to connect to the 3CX Object Model and displays the active calls in the system together with the calls in queues with added comments for more information
The second sample is called “TestAPI”, and shows how to:
- Connect to object model by taking the 3cx path from registry and reading the credentials from 3CXPhoneSystem.ini.
- Create a prompt set with 100 prompts
- Display all the parameters, codecs, rule conditions, rule hours, rule call types, tenants, office hours for tenants, extensions, DN properties for extensions, FW rules for extensions, IVRs etc.
- Set office hours of tenant
- Create extension and DN property for extension
- Remove extension from system
- Create FW rule for extension
-
Create extension and DN property for extension
-
Remove extension from system
-
Create FW rule for extesnion
-
Delete IVR from system
-
Create IVR in the system
-
Delete tenant
-
Make call
-
Drop call
-
Divert
-
Refresh line registration
-
Transfer
-
Monitor active connections
-
Display gateway parameters
-
Update external line rule
-
Set voice mail box information
-
Check park and unpark codes
-
Monitor park extensions
-
Record call
-
Barge in
-
Test update for extension save (every time a dn is saved an update is received with the updated dn, check help file)
-
Set multicast for ring group
-
Save extension
-
Create Phone Book entry for tenant and display all phone book for tenant and specific extension
-
Create fax extension
-
Invoke PBX command (Ex: reboot phone using sip notify)
and many other features….