Genesys CTI User Forum

Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: S on November 25, 2008, 07:12:11 PM

Title: OnCallAbandoned function
Post 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
Title: Re: OnCallAbandoned function
Post by: Dionysis on November 25, 2008, 08:23:29 PM
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". 

Title: Re: OnCallAbandoned function
Post by: cavagnaro on November 25, 2008, 08:27:03 PM
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.
Title: Re: OnCallAbandoned function
Post by: peters on November 27, 2008, 03:49:51 PM
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.
Title: Re: OnCallAbandoned function
Post by: cavagnaro on November 27, 2008, 06:03:45 PM
That is ok as the call is no longer on the RP, it has been distributed. You can control using URS options.
Title: Re: OnCallAbandoned function
Post by: peters on November 27, 2008, 06:11:50 PM
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?
Title: Re: OnCallAbandoned function
Post by: cavagnaro on November 28, 2008, 01:32:44 AM
Not strategies but you can re-route the call
Title: Re: OnCallAbandoned function
Post by: jbobinsk on November 28, 2008, 08:42:03 AM
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.
Title: Re: OnCallAbandoned function
Post by: cavagnaro on November 28, 2008, 06:37:43 PM
Run a strategy when the call is on agent? How?
Title: Re: OnCallAbandoned function
Post by: barleycorn on November 28, 2008, 07:17:07 PM
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.
Title: Re: OnCallAbandoned function
Post by: barleycorn on November 29, 2008, 12:15:34 AM
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?  ;-)
Title: Re: OnCallAbandoned function
Post by: cavagnaro on November 29, 2008, 04:41:21 AM
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
Title: Re: OnCallAbandoned function
Post by: peters on December 04, 2008, 09:46:01 AM
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.
Title: Re: OnCallAbandoned function
Post by: cavagnaro on December 04, 2008, 10:24:52 AM
You can try to do what barleycorn says. Other way I don't see any option.
Title: Re: OnCallAbandoned function
Post by: peters on December 04, 2008, 03:01:52 PM
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 
Title: Re: OnCallAbandoned function
Post by: jbobinsk on December 04, 2008, 03:58:08 PM
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
Title: Re: OnCallAbandoned function
Post by: peters on December 04, 2008, 09:55:23 PM
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...
Title: Re: OnCallAbandoned function
Post by: victor on December 05, 2008, 03:33:39 AM
Ok,

can someone please describe to be what I can do with OnCallAbandoned event?

Vic
Title: Re: OnCallAbandoned function
Post by: jbobinsk on December 05, 2008, 08:43:04 AM
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
Title: Re: OnCallAbandoned function
Post by: peters on December 05, 2008, 09:26:18 AM
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.
Title: Re: OnCallAbandoned function
Post by: Dionysis on December 05, 2008, 09:41:40 AM
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.


Title: Re: OnCallAbandoned function
Post by: René on December 05, 2008, 09:58:49 AM
[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.
Title: Re: OnCallAbandoned function
Post by: peters on December 05, 2008, 10:22:24 AM
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.
Title: Re: OnCallAbandoned function
Post by: Dionysis on December 05, 2008, 10:28:46 AM
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.  ;)


Title: Re: OnCallAbandoned function
Post by: peters on December 05, 2008, 02:05:55 PM
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...
Title: Re: OnCallAbandoned function
Post by: René on December 05, 2008, 03:39:38 PM
[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.
Title: Re: OnCallAbandoned function
Post by: peters on December 05, 2008, 03:52:39 PM
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
Title: Re: OnCallAbandoned function
Post by: René on December 05, 2008, 04:18:01 PM
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.
Title: Re: OnCallAbandoned function
Post by: cavagnaro on December 05, 2008, 08:20:12 PM
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.

Title: Re: OnCallAbandoned function
Post by: Dionysis on December 05, 2008, 09:49:31 PM
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. :)


Title: Re: OnCallAbandoned function
Post by: cavagnaro on December 05, 2008, 09:56:26 PM
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
Title: Re: OnCallAbandoned function
Post by: Dionysis on December 06, 2008, 12:08:19 AM
hehe... touché

:P
Title: Re: OnCallAbandoned function
Post by: peters on December 09, 2008, 07:47:04 AM
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.