Genesys CTI User Forum
Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: S on November 25, 2008, 07:12:11 PM
-
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
S
-
I use this function in every strategy I build. The OnCallAbandoned function should be called at the very beginning of the main strategy.
Then, if the call is abandoned at any time during the main strategy it will call the "Abandon Strategy".
-
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.
-
That is ok as the call is no longer on the RP, it has been distributed. You can control using URS options.
-
Is there a way? I would like to run a strategy when call is abandoned, also if it is in ringing state.
Is it possible, to have different abandon strategies for different RP?
-
Not strategies but you can re-route the call
-
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.
-
Run a strategy when the call is on agent? How?
-
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.
-
btw Cav.... I may have missed something having been involved in a very busy project recently. Your karma... how did it get to -978???!!??!1? ;-)
-
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
-
So if i would like to achieve this scenario:
1. call is ringing on agent, and client drops call before the agent manages to pick up
2. 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.
-
You can try to do what barleycorn says. Other way I don't see any option.
-
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.
Peter
-
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.
Regards
jbobinsk
-
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...
-
Ok,
can someone please describe to be what I can do with OnCallAbandoned event?
Vic
-
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.
Regard
jbobinsk
-
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.
-
I would use the desktop application for this purpose.
If eventringing is seen but no eventestablished within x seconds then have the desktop app write to the DB.
Unless there is no desktop application. In which case I would try the following:
In your main strategy -
Set the on call abandoned strategy to be the strategy that writes the information to the DB.
Add a Pause [b]after[/b] the call is routed to the agent, or suspend for event function.
I haven't tested this, or attempted it. But in theory it 'should' work.
There must be a tidier way to get this info though. It's a bit of a hack.
Another way would be to add a unique ID to attached data for each call and write this ID and the ANI to the database at the beginning of the call. Then use info-mart to pick up this KVP and then you can join the 2 data sources later.
-
[quote]In your main strategy -
Set the on call abandoned strategy to be the strategy that writes the information to the DB.
Add a Pause after the call is routed to the agent, or suspend for event function.
I haven't tested this, or attempted it. But in theory it 'should' work.[/quote]
Same "solution" came to my mind but I think it won't work. The reason is simple - in case of call being abandoned while ringing the event "EventAbandoned" is generated on agent's DN not on Routing Point DN so URS should not react on this event as this DN isn't controlled by it. But maybe I'm wrong...
R.
-
You are right, it doesn't work. Therefore we load a strategy on DN (and URS monitors it, if Ringing message arrived). This strategy has pause block, then SuspendForEvent function checking for EventAbandoned on the DN. If the call was abandoned, it should write data to DB. But it doesn't.
It doesn't matter if you use Suspend or SuspendForEvent with timer, because after call is droppedl, this strategy isn't executed while running in timer time, it isn't resumed. Its destroyed.
We use genesys desktop, if agent doesn't pick up call withing 15sec, the call is rerouted on another agent. So it's not good idea to always write to DB, because call can be answered by another agent. We want to handle only the really dropped calls.
-
Hmmm... then the last option I presented is really your only option by the sound of it. Unless you load a routing strategy on the agent DN but I have never been able to get a strategy on an extension to run correctly without the call being answered.
Or, set the phones to auto answer, then the problem goes away, and introduces a whole new set of issues that are not the Genesys Engineer's problem. ;)
-
Genesys support confirmed, that the only way is to write calls to DB by entering the strategy, and delete after succesfull routing. So we probably will open feature request, as this should be basic functionality...
-
[quote]Genesys support confirmed, that the only way is to write calls to DB by entering the strategy, and delete after succesfull routing. So we probably will open feature request, as this should be basic functionality...[/quote]
I don't agree with you that it should be basic functionality. As I've written in my previous post URS doesn't control agent's DN so it can't control call on this DN...
Of course, that's my opinion only :) so chance is that Genesys will accept your FR.
R.
-
If genesys would be some low-cost solution, nevermind. But if it is leader in callcentres, I would expect, that it can store information about dropped calls. The number of dropped calls is stored in statistics. Then why anything can't be made in URS? You can monitor DN's using URS, but not with full functionality...
Peter
-
Peter,
It has nothing to do with the fact that Genesys is leader in callcenter. It is about the architecture and fact that URS isn't mentioned to be "reporting" engine. If you need to store details about calls that have been abandoned while ringing you can use ICON or develop your own application using one of available SDK.
It would be great if one product could do everything but it doesn't work that way...
R.
-
The problem is that it is not a Genesys issue, it is an administrative problem, why you allow the agent to decide when to answer a call? I'm always against that policy. You can develop the best ever routing business policy, cost effective, multisite, etc etc. But if you at the end leave the agent the option to do what he wants all your million hours went to the water... easy as that. It is a human problem not a CTI problem. Later tomorrow you will want to Genesys make coffee as well...no way...no sense.
-
Hmmm... an FR for Genesys to make coffee.
How many people do you think asking for that would make it happen? Perhaps we can all put in the same request and see how far it gets.
As for abandoned from ringing, you should definitely be able to get the information from Genesys reporting, all you would be missing is the ANI, so if you attach this as a KVP for every call you should then be able to pull the specific calls that abandoned from ringing in either ICON or Infomart DB's.
On a side note, these are not dropped calls. Dropped is a completely different call result used in outbound where Genesys hangs up the call, if the customer hangs up the call is abandoned. I know I'm just being pedantic but it pays to be clear about this kind of thing. :)
-
hehe, if it is going to make coffee then add the biscuits too!
Now I'm sure that in routing examples there is something to avoid this scenario and route it somewhere else.
And now that we are correcting, it is not "an FR", it is "a FR" :P just bothering ;D
-
hehe... touché
:P
-
Well, there is a way how to make it work. Just got reply from support. On DN, strategy with these blocks have to be loaded: OnCallAbandoned function, SuspendForEvent(EventEstablished) and that's all. In my previous strategy which didn't work, i called suspendforevent function and then oncallabandoned.