I think so - you basically wouyld like to monitor how many hits you get per each IVR choice per period?
You just create a fake entry for a "lost call" on a fake queue called IVR-1, IVR-2, IVR-3 and so on. You could track the exact time for the choice, and the correct caller-id as well. Then you run reports for
IVR-1,
IVR-2 or
IVR-1|IVR-2|IVR-3... to get all the choices made.
It could look something like the following example (here made for choice 1):
; ..enter IVR choice 1....
exten => 1,1,Macro(queuelog,${EPOCH},${UNIQUEID},IVR-1,NONE,ENTERQUEUE,,${CALLERID})
exten => 1,n,Macro(queuelog,${EPOCH},${UNIQUEID},IVR-1,NONE,ABANDON,0,0)
...run additional code to play choice 1....
[macro-queuelog]
exten => s,1,QueueLog(${ARG3},${ARG2},${ARG4},${ARG5},${ARG6}|${ARG7}|${ARG8})
Note - I did not actually try this...
Looks cool anyway