Did anyone use the OnCallAbandoned function in strategy?
this is what I did and it did not work…
Call comes to a RP where strategy is loaded, the strategy has one business rule for chking a KVP on call data, if satisfied- goes to agent, if not … I put a function block there and used OnCallAbandoned function and selected another strategy as a script ( which just prints out the strategy name with connid in logs) and exit block.
Although the call goes through the function object, it does not call the strategy nor executes it( which the document says would do- unless I understood it wron )
So- what did I do wrong? what should I be doing to use that function?
Please help
On CallAbandon only works and is executed when caller abandons the call, this means when user is in the process of the strategy or waiting for an agent and then hangs up. Why a function? If your IF condition doesn’t satisfy you can put another target object and then call another RP or use the sub-strategy function to call a sub-strategy inside your main strategy.
My experience is, that this function is called as you describe, but not in case, when the call is already ringing on the agent. If client abandons the call during ringing, the function won’t be called. That’s a pity.
Of course it is possible to have strategy and execute it when call is abandoned. You have to be avare that such strategy can only operate on call data and nothing else.
Not sure if it would apply to this particular function, but you can load a strategy on a regular agent extension. For instance, if you wanted to simulate a RONA-style reaction, you could create a strategy for this purpose, and load it on to the extension.
To allow URS to monitor DNs it normally wouldn’t, you can add a section in the Annex tab of that DN with the name of the URS application object, inside that section place an option: event_arrive=ringing
Then you can load a strategy on to that DN.
hahahaha I have no idea, however I suspect someone played with the forum DB intentionally…however I was -989 so I’m progressing lol ;D If I reach 0 some day will be a hero! lol
call is ringing on agent, and client drops call before the agent manages to pick up
the OnCallAbandon function is not called, because the interaction was outside of URS.
what is needed to be set up, to execute OnCallAbandon (or some other function), which will run strategy that collects information of dropped calls to database (ANI, DNIS, time, date)
When call is dropped in IVR, queue, OnCallAbandon is executed correctly.
It works…partially. You have to put pause block at the end of OnCallAbandon strategy. But it doesn’t work correctly. Lets say the timeout for ringing is 15sec (afterward call is routed on another agent). If you put pause_time = 15sec and agent picks up call immediately, than finishes call in 5 sec, then OnCallAbandoned function is executed. If you don’t put pause block, then it isn’t executed at all - even if call is abandoned in ringing state.
Of course - because pause make the strategy is still active and function OnCallAbandoned work only if strategy was in progress. But beside pause you can do it also by using function SuspendForEvent with established parameter giving timeout as long as you want.
Thank you for idea. I implemented it, the SuspendForEvent function is waiting for EventAbandoned message, timeout is 15000ms. This should work, but if caller drops the call before timeout expired, the suspended strategy isn’t resumed. If i changed the timeout to very low, i saw SuspendForEvent was executed, timer expired, but as no EventAbandoned arrived, nothing was saved to DB (which is correct) and the strategy ended. So if the timeout is too high, strategy isn’t resumed, if it is too low, it’s executed, but the goal is not achieved. I could make a loop and check every second the state of call, but don’t want to risk high CPU usage by many incoming calls…
You can use this function to assign strategy which for example set something in database, or notify webservice - and you will have all customer data available during execution of the strategy. Because call is not active - you cannot do anything call-related.
If i understood you correctly, when call is no more active (dropped), the strategy with suspended function is not resumed, or it should be? All what i need is to write ANI to DB, of call that was dropped in ringing state.