First, there is an undocumented 3CX Call Control API that programmers can us to subscribe to phone events. While it is a fairly complicated API (especially in regards to capturing and interpreting events) it is possible to get all the information you need except for one thing -- whether an outbound call was answered by a human, and IVR, or a voicemail box. 3CX does not provide access to the audio stream, so there is no way to perform voicemail detection.
The second option that
@ConceptsWeb mentioned is 3CX's ability to create a text file (a separate file for each phone call). These files contain summary information about the call including From/To, Date/Time, duration, etc. What is nice about the CDR data is the simplicity of the data. Our
3CX Exporter tool grabs these files in real-time, parses the data, and saves the data to a SQL Server or MySQL database. Once the data is in a database, you can do pretty much anything.
If you need more detail about the call, or queue statics, or chat (examples), Exporter can automatically replicate all the same data 3CX uses for the built-in reports (default every 60 seconds). In other words, Exporter makes it possible to create your own custom reports by giving you access to the data.
If trying to tackle the Call Control API is a little more work than you are ready to take on, there is another alternative. Our
3CX Monitor tool subscribes to the 3CX Call Control API events and adds all the event data into a SQL database in real-time. Monitor removes the technical challenges of creating a service to monitor events, but frankly does not remove the complexity of interpreting the events. But, Monitor is a happy middle-ground option between using the Call Control API directly vs the limited (but very useful) data provided in the CDR files.
You can turn on the automatic creation of CDR files in the 3CX Management Console: Settings --> CDR