I had also thought to work on similar solutions, but never got time to fully implement it.
In nutshell,
if using outbound dialer:
insert the records into personal call back table manually by some third party application for customer preferred datetime for the call back.
Agent Request:
Have broker application, which on one hand takes schedule call back date time from customer.
application has internal algorithm which compares current datetime with customer requested date time and when the current time reaches call back datetime, the application simply calls the agent request API and initiate call back.