<p>Does anyone know of any 'standard' way to interface with a telephony system (think Cisco CCM) from a C/C++ app in *nix?  I have used MS TAPI in the past but this is Windows only and don't want to go the jTAPI (Java) route, which seems to be the only option on the face of it.</p>

<p>I want to monitor the phone system for logging purposes (so I know when users have made calls, received calls, etc.).  TAPI is good at this sort of thing but I can't be the first person who wants to do something similar without having a Windows server.</p>

<p>Note that I need to integrate with existing PABX systems - notably Cisco CCM and Nortel BCM.</p>

I have experience with two telephony standards TAPI, and CSTA, as far as I know there is no such agreement between vendors (e.g. Cisco, Nortel, NEC) regarding THE standard API.
I would recommend looking at the availability of
SMDR
(Station Messaging Detail Recording) on the PBX platforms you are targeting, assuming that no call/device control is required. This will allow you to access the PBX activity as a text stream and you can parse the data for further manipulations to suit your purpose.
Most likely the format between the PBX vendors will be different but hopefully this could be abstracted away so that the core application functionality is re-usable.
This is likely to be a more portable option, again assuming no call/device control is required, as you are not relying on the vendor providing CTI connectivity on your platform of choice.