Call tracking using AMI events

hi ^_^.
its a couple of days that I’m developing an call tracker lib using AMI.
based on what i have done till now track incoming & outbound, originated calls ,queued calls,
Ring &MusicOnHold & Answer durations ,Broadcasted to several extensions by DialPlan and etc …
all dirty codes xD

now when it’s come to here : is there any reliable solution for tracking calls with AMI ?
or should i have to switch to AGI or using CDR apps ?