Here's a blog post that I wrote not too long ago that addresses this question:
http://cpi.solutions/2017/enhanced-callback-reporting-in-genesys-pureconnectcic/
The problem I ran into is that to link the original call, the callback request, and the outbound call together requires the call ID key - not just the call ID. The base attributes that Genesys uses only include the simple call ID which doesn't allow unique matches to the other interactions. My solution was to write an attribute on the callback request with the call ID key of the inbound call as the request enters the queue (CustomAcdInitiateProcessin), and then modify CustomCallDisconnect and handle the disconnect event for the callback request object and grab the call ID key of the outbound call. In both cases, I used the simple call ID to look a the call object (if still allocated in the system) and grab its call ID key. The main problem is that if the agent fails to click the Complete or Failed buttons on the callback request object immediately after completing the outbound call, then the outbound call will have already been deallocated.