if I understand your call flow, your real question should be " in Engagement Designer, how do I check to see if an agent is logged in before I direct agent call that agent?"
My interpertation of your work flow is
Agent 5000 is not logged in to extension 1000
A call comes in to (totally unclear what entity the call is being forwarded from, it is not stated), but that entity has call forwarding, active, and it forwards the call via direct agent dialing to agent-ID 5000.
Given agent-ID 5000 is not logged in, the call queues at that extension.
I dont know what is triggering a "TARGET_BUSY" notification to the application. Perhaps at some level something knows that the agent is not logged in.
Per the earlier comment (and my knowledge of Communication Manager) Call forwarding has completed its work, there is nothing to cancel related to call forwarding.
Your question seems to be, how do you 'pull the call back' to something that can process it? You can't ; forwarding took it away from you, you no longer have control over it.
So in my mind the problem started when the application blindly forwarded the call to something that was unavailable. The application needs to check that condition first. Of course even then there will be race conditions where this can still happen, but the freqeuncy of occurrance should be far reduced.
I know you can use AE Services System Management Service to query ( list agent 5000) to see if the agent is logged in - you can also use TSAPI/JTAPI/DMCC API calls to get at this information. I do not know Engagement Designer and the services it exposes well enough to know if you can do an equivilent query through its APIs.
You could also use call coverage to send calls that arrive to the agent when it is not logged in to a destination where they can be processed as a means to handle this interaction, but I view that as less desirable as a lot of context would potentially be lost.
|