There is a feature in chan_dahdi
that can attempt to determine call progress by listening in-band: https://github.com/asterisk/asterisk/blob/master/configs/samples/chan_dahdi.conf.sample#L1154
It would be useful to do this for SMDR, for calls recorded through res_smdr_whozz
(but the FXO can be either in the path or monitor the call). In other words, the FXO will be monitoring the line for the first minute or two, to determine if the call has answered - basically DAHDIMonitor with progress detection. We'll just need to do some DSP processing, and we can look for ringing, SIT, etc. For calls longer than two minutes, we can probably stop DSP processing and assume it really answered.
This won't be perfect, but it will reduce the number of "false positive" calls in the CDR that show charges, when in fact there was no charge for those calls because they never answered. This will lead to more accurate CDR records that more closely reflect what the bill will be.
You must be