We recently had a request for an “emergency locator” application with a different twist. Historically, we have written a number of “locator” type scripts, but this request had some unusual requirements. The client wanted to have live agent support for a technical support queue, even after the agents went home at end of shift. Basically, put the caller on hold and then go find an agent to assist! Now if agents are logged in, that is more of a remote VPN phone type of solution. This was different, the agents were not logged in and not on a VPN phone, but reachable by cell phone. The requirement was that the caller should have the same experience after hours that they might have during business hours.
If that was not a sufficiently large challenge, they also had multiple CSQs and that would mean processing a list of agents that was CSQ specfic. Additionally, all of this should be reportable in the normal historical reporting process. If an agent could not be located, an email was to be sent to the CSQ team, and the client offered the opportunity to leave a VM or request a call back. What was different about this request for script assistance, was not that we had to locate an agent, but that we had to keep the client in the queue and somehow pass the client to an available cell phone based agent.
Not entirely sure if we could do this in a ShoreTel ECC, the CISCO UCCX has the ability to create scripts that manage multiple contacts. The “Triggering Contact” being the caller that launched the script, and then we need an email contact and an outside phone contact. There is no way, however to conference or transfer the caller to an active call. Additionally, we needed positive assurance that we reached a human and not an answering machine! This made for an interesting set of challenges!
The caller handling front end was a typically call queue strategy, but the back end agent locator was tricky. First we had to create a way of searching a list of available agents. Not a single list, but a list for each CSQ as the agent skill set was product focused. That requirement was initially handled with a SWITCH step and later improved by use of an XML file. We place the caller on hold, then find the first agent and call them as the second outbound contact or new active phone call. To confirm we actually reached a human, we ask them to press any key to continue and when they press a key, we know we reached a human and not a machine.
Next we ask them to press one to accept the assignment, or two to reject the assignment in which case we have to return to the list and find another agent. If they accept the assignment, we tell them to keep the line free as the next phone call will be the caller on hold in the queue. We terminate the call and then retrieve the caller from hold and transfer them to the agent.
This all worked very well and we are now enhancing the features and script strategy to make the code portable and more flexible. If the agent had rejected the call, we would send an email to management and call the next agent on the list. We are eager to find ways of leveraging the script for more applications and welcome your input!