Recently I've been into PBX call accounting programming on VB.Net 2010. My results are way too successful including friendly user-interface and connection datareceiving coding. Except for one. That is the call duration of calls, incoming and especially those outgoing. In my project I didn't use any API (like TAPI for PBXs) thus is there any option how to detect the state of the outgoing call, whether is still ringing, ended without answer or answer at some point of time...because in my project nevertheless what call state is being processed, I'm getting the total call duration from the moment that call was initiated to the moment is being finished or not-answered.

Here is a sample of my project where the DataReceived event is fired whenever there's something to parse from PBX to the PC.

Programming language : Visual Studio 2010 Ultimate - Visual Basic .Net
Database : Microsoft SQL Database
PBX Machine : Panasonic KX-TEM824

P.s. If you need to provide some code I'll post a sample of my project where the DataReceived Event is being handled.