There is probably more than one way to go about this. You will definitely want to have a lab to setup a proof of concept for this scenario. Here are my thoughts:
1. A caller must notify your application by some means that they want to call in
2. Make a phantom call (Put the callers CLI in the userInfo, aka UUI) to the queue to hold the place in line
3. Your application is keeping track of the metrics (monitoring the VDN), or using vustats with DMCC to know when to notify the caller to call in
4. Your application notifies the caller to call in to a specific number
5. That number goes to an adjunct route vector. Here your application holds on to the call until the phantom call is sent to an agent
6. When the phantom call is transferred to an agent the caller is sent via direct agent calling to the agent and the phantom call is disconnected. *This part would definitely benefit from some proof of concept testing. *You put the callers CLI in the UUI now you need to use it to make sure the correct caller is sent to the agent. Most likely will need to write it to a database with agent ext. Then the adjunct routing application would have to poll this database for the agent extension using the calling number.
Number 3: To keep track of the queue metrics you would place a monitor on the VDN and keep track of each call when it gets queued and leaves the queue. From that you will know how many are in the queue and you can calculate EWT. The following thread has information on using vustats:
http://www.devconnectprogram.com/forums/posts/list/6868.page#p32068. You can use your metrics to notify the caller of what they need to know at any given point.
Also, if the caller notifies you that they want to call in and there is on 1 or two callers in queue I would imagine you have them just call in and bypass the phantom call altogether.
There are definitely other questions that will arise out of this. If you would like further in depth assistance from DevConnect, including testing some of these steps, please open a DevConnect technical support ticket. If you are at one of our upgraded membership levels we can provide you further assistance.