Genesys CTI User Forum

Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: novembersaint on June 17, 2013, 03:00:57 PM

Title: Queue Hold Position of a Caller
Post by: novembersaint on June 17, 2013, 03:00:57 PM
I am trying to implement a below mentioned scenario, could anyone please let me know how this can be achieved using a strategy.

Customer to hold position in the IVR Queue: Customer calls in the IVR and in case of a long wait, they should be able to get an option of holding their position in the Queue and get a call back when his position is reached after the wait time. In this case, customers will not have to wait in the Inbound Queue and will be able to get a call back on the number after his position becomes 1st in the Queue.

Please do let me know ASAP.

Thanks.
Title: Re: Queue Hold Position of a Caller
Post by: Kubig on June 17, 2013, 03:16:15 PM
You are looking for VHT technology - read about it, if your knowledge in Genesys are not usefull.
Title: Re: Queue Hold Position of a Caller
Post by: novembersaint on June 17, 2013, 03:38:12 PM
Thanks Kubig. Yeah I have had the chance to go through VHT. But is there any way we can get the strategy to do this? Please do let me know
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on June 17, 2013, 04:23:52 PM
In theory yes, sort of, but not by default, depends on your strategy skills and Genesys components available. Not a straight solution, could be OCS, GVP, something like a mix...
Title: Re: Queue Hold Position of a Caller
Post by: terry on June 17, 2013, 08:48:43 PM
Compared to VHT, etc URS itself provides only very basic support for such things.

Option 1: based on intercepting of call abandoning in strategy (OnCallAbandoned function) starting new session and playing with function SendRequest to generate outbound call. 

Option2.  URS can be instructed to continue strategy for the call even if caller hanged up (as if nothing happen) to the logical end of strategy. When(if) time come to route such "not real" call - URS will generate new one connecting selected agent with the original caller.
Achieved by calling in strategy (or from anywhere else) Update['EXECUTION_MODE', 'VCB'].
Other might be helpful attached keys are: VCB_CONTACT - where to dial (by default it will be OtherDN of EventRouteRequest) and VCB_TIME - UTC timestamp of when dialing is allowed (by default immediately after caller hangs up).


Title: Re: Queue Hold Position of a Caller
Post by: Kubig on June 18, 2013, 06:42:09 AM
Yes, all are right. I know and agree that VHT is not single way how to achieve your need, but from your topic, I understood, that you need solution as soon as possible and your knowledge of Genesys FW or routing are not great, cause I suggest VHT as a complete solution in "one-pack". In case where your knowledge or time are sufficient, you will get that through URS function as well (as suggest others)
Title: Re: Queue Hold Position of a Caller
Post by: Fra on June 18, 2013, 08:54:40 AM
VHT is expensive, complex, poorly integrated and may bring loads of pain. If you want something simple, be aware this is likely to be not your preferred option.

Fra
Title: Re: Queue Hold Position of a Caller
Post by: Scottyjohn on June 18, 2013, 09:34:05 AM
I think Cav gives the best answer above.  Without costly VHT, similar can be accomplished with GVP, and then OCS to handle the outbound calling.
Title: Re: Queue Hold Position of a Caller
Post by: novembersaint on June 25, 2013, 07:01:08 AM
Thanks everyone for the reply. I haven't really got the chance to create any strategies. Any high level thesis or idea would be really helpful. We were asked not to use VHT.
Title: Re: Queue Hold Position of a Caller
Post by: Adam G. on July 01, 2013, 09:56:32 AM
[quote author=Fra link=topic=7860.msg34277#msg34277 date=1371545680]
VHT is expensive, complex, poorly integrated and may bring loads of pain. If you want something simple, be aware this is likely to be not your preferred option.

Fra
[/quote]

I am writing an app to offer this functionality to a customer because their view of VH is exactly as you've stated Fra.
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 09, 2013, 05:12:07 PM
Can send (if needed) sample of strategy for very very basic call back.
It implement use case like make a call on RP, no agent are available, hangup call, make some agent available. URS will try to dial to caller and connect it with agent.
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 09, 2013, 05:15:30 PM
URS dial? Triggered by whom?
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 09, 2013, 05:37:52 PM
By nobody (or by itself) - if routing to agent require "preliminary" steps - answering call, transferring call, dialing call - URS will try to perform them automatically.

Also more advanced preliminary actions can be explcitely injected with strategy itself with custom routing.
 
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 09, 2013, 09:27:02 PM
Impossible...something must trigger the interaction on a strategy, some interaction. URS can't launch strategies by magic...URS can have 1000 RP and 1000 strategies but if nothing hit a RP nothing will happen.
Going a little step further, URS doesn't dial, URS commands something (TServer) to dial (TRoute) if you want. Can send HTTP commands to somewhere that will dial too. But URS doesn't do dialing itself
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 09, 2013, 10:09:08 PM
Sorry for possible confusing - I am not saying that URS lunch startegies by itself, etc and understand that it just runs strategies triggered by some external event.
In described case - there is such running strategy - the one URS started for original inbound call.
In described use case I just meant the following
- somebody make a call on RP:  URS start some strategy, place call in queues, etc
- no agent are available: call just waiting on this RP
- hangup call: and here is small trick - URS doen't delete call in memory but continue to execute strategy
  as if nothing happen. Call (or its image/placeholder if you like) is left in all queues it was eneterd according to
  strategies etc (even if real call starting the startegy is abandoned). 
- some agent become available: the call (call placeholder) is routed to this agent. As there is no real call
  however it need to be generated first (= predicitive call connecting customer with RP) and after that
  routed to the agent.


Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 09, 2013, 11:06:58 PM
;D Now makes sense!  ;)
A screenshot would be nice of such and functions used
Thanks for your time
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 10, 2013, 12:05:06 AM
Somehow can not upload the file (having message "The upload folder is full...")
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 10, 2013, 12:20:06 AM
:P Yes sorry, uploads are disable...
You can upload using a file locator like 4shared or something like that, please?
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 10, 2013, 05:16:46 PM
Ok, may be this will work:
http://www.4shared.com/zip/Q4db5u-w/CallBack.html
Title: Re: Queue Hold Position of a Caller
Post by: Timur Karimov on July 10, 2013, 05:37:53 PM
Terry,
just look at you strategy. And don't understud. Is this one for which  step ?
This ? - URS doen't delete call in memory but continue to execute strategy
  as if nothing happen. Call (or its image/placeholder if you like) is left in all queues it was eneterd according to
  strategies etc (even if real call starting the startegy is abandoned). 
Or This ? - some agent become available: the call (call placeholder) is routed to this agent. As there is no real call
  however it need to be generated first (= predicitive call connecting customer with RP) and after that
  routed to the agent.

How you intend to "stuck" call in URS memorry after routing? By using the OnCallAbandoned call you Callback.rbn as target? But because the
interaction no longer exists, this function is not intended to execute any routing or treatment instructions.
And on the other hand. "As there is no real call however it need to be generated first" How? How you cat triger the URS to make the predictive call with you callback stategy? Of cause I mean with out the external custom application.

WBR
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 10, 2013, 07:01:51 PM
Well the strategy does a EXECUTION_MODE KVP update to VCB value...and then? Goes to an AG...Don't understand at all  ???
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 10, 2013, 11:11:58 PM
That is enough for very basic call back.

URS can apply different execution modes to the calls.
They are defined by attached data with this key (so exectuion mode for the call can be changed
outside from strategy if needed).

In VCB execution mode if call is abandoned/released then strategy execution for such call is not interrupted, but call just becomes virtual one (not having for the time being real call on tserver).
[code]

received from 65200(tserver)host:3010(fd=) message EventAbandoned
AttributeReliability 0
AttributeCallState 0
AttributeThisQueue '2203'
AttributeCallType 2
AttributePropagatedCallType 2
AttributeCallID 42
AttributeConnID 006b022688987020
AttributeCallUUID 'VNO8D3KDA97SF8A39VND560SN4000067'
AttributeUserData [111] 00 04 00 00..
'EXECUTION_MODE' 'VCB'
'VCB_CONTACT' '11111111111111'
'VCB_TIME' '0'
'RPVQID' '4599BPBO4L7F50IBAV7JSJN3LG000003'
AttributeDNIS '2203'
              ...
12:48:35.007_T_W_006b022688987020 [14.32] EventAbandoned is received for ts tserver[switch] (this dn=2203), callback call
[/code]

Such virtual call will be deleted when strategy come to its logical end.
If it happen to be routed tnen URS will try to create real call connecting caller with original RP before routing request. Fragment of URS log below.

[code]
...
    _M_I_006b022688987020 [10.21] try to route to ag "Agent" (pl "Place", 2 ready DNs, 1 trgs): TRG 05908b14 VQ 059089e0(1 calls)
...
    _I_I_006b022688987020 [0E.10] HERE IS ROUTE_CALL: VQ=rrr, target=?:French > 1
    _I_I_006b022688987020 [01.10] binding with TRG 05908b14 (VQ 059089e0)
12:48:44.655_T_I_006b022688987020 [14.1b] send to ts TServer[Switch] RequestMake(Predicitive)Call to dn 11111111111111
request to 65200(TServer) message RequestMakePredictiveCall
AttributeReferenceID 41
AttributeTimeout 30
AttributeOtherDN '11111111111111'
AttributeThisDN '2203'
12:48:44.696_M_I_006b022688987020 [17.11] VQ 059089e0 first available call: none, reason=(0)delivery
    _A_I_006b022688987020 [0E.0a] ----------->ARRIVAL
...
12:48:44.820_T_I_0000000000000000 [14.0c] EventDialing is received for ts Tserver[Switch] (this dn=2203)
    _T_I_006b022688987021 [01.11] connid 006b022688987021 is bound to the call 4-0590aae4
    _T_I_006b022688987021 [01.1b] calluuid VNO8D3KDA97SF8A39VND560SN400006C is bound to the call 4-0590aae4 as 0590afb4
12:48:44.857_I_I_006b022688987021 [01.01] call (4-0590aae4) for Cust created (del 112)
...
received from 65200(Tserver)host:3010(fd=) message EventNetworkReached
...
received from 65200(vit_ts2)host:3010(fd=) message EventQueued
AttributeCallState 0
AttributeThisQueue '2203'
AttributeNetworkCallID 119550208
AttributeCallType 3
AttributePropagatedCallType 3
AttributeCallID 44
AttributeConnID 006b022688987021
AttributeCallUUID 'VNO8D3KDA97SF8A39VND560SN400006C'
AttributeDNIS '11111111111111'
AttributeCustomerID 'Cust'
AttributeThisDN '2203'
AttributeThisDNRole 1
AttributeOtherDNRole 2
AttributeOtherDN '11111111111111'
AttributeExtensions [19] 00 01 02 00..
'UCID' bin: 00 31 20 07.. (len=8)
AttributeTimeinSecs 1367956129 (12:48:49)
AttributeTimeinuSecs 650000
AttributeEventSequenceNumber 0000000000000e17
12:48:49.821_T_I_006b022688987021 [14.0c] EventQueued is received for ts tserver[host] (this dn=2203)
    _I_W_006b022688987020 [01.11] call collision (4-0590aae4-006b022688987021)
    _T_I_006b022688987020 [01.11] connid 006b022688987021 is bound to the call 3-059090b4
    _T_I_006b022688987020 [01.1c] change current calluuid 00000000 -> 0590afb4
    _T_I_006b022688987020 [01.1d] calluuid VNO8D3KDA97SF8A39VND560SN400006C is bound to the call 3-059090b4 as 0590afb4
    _T_I_006b022688987020 [01.04] change connid to 006b022688987021
...
request to 65200(vit_ts2) message RequestRouteCall
AttributeReferenceID 47
AttributeReason [14] 00 01 01 00..
'RTR' 694
AttributeRouteType 0 (RouteTypeUnknown)
AttributeExtensions [167] 00 09 00 00..
'DEFAULT#' '1001'
'CUSTOMER_ID' 'Cust'
'VQ' 'rrr'
'AGENT' 'Agent'
'DN' '104'
'ACCESS' '104'
'SWITCH' 'vit_sw2'
'NVQ' 1
'TARGET' '?:French > 1@statserver.GA'
AttributeOtherDN '104'
AttributeConnID 006b022688987021
AttributeThisDN '2203'
[/code]

Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 11, 2013, 06:07:16 AM
Definitively have to test this!
Thanks
Title: Re: Queue Hold Position of a Caller
Post by: bublepaw on July 11, 2013, 07:41:06 AM
By the way this can also be done with ORS by design without any special tricks :) because ORS is design to run session until explicitly told to terminate it
Title: Re: Queue Hold Position of a Caller
Post by: Timur Karimov on July 11, 2013, 10:08:23 AM
Well, i had made the test. It's like the "street magic" but it's work. However i see the great disadvantage for such method:
1) I can't see the way for controlling the outbound call. Maximum number for dial attempts for example? Behavior for busy or fax answer? Etc. Though is another undocumented feature.
2) It's no possible to change the strategy for outbound call? For example to play the second IVR/voice announcement before connect to the agent.
3) Need to change the current reporting system. VCB call is counted like inbound in Queue statistics, but for Agent  - it's outbound call. Of course we can filter out such calls from standard outbound, but it's not so simple. At least because of the volume of work is very huge.

So...for my point of view - it's a realy interesting trick but not for standard production system. Perhaps as emergency way?

WBR
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 11, 2013, 05:00:08 PM
Well about reporting when I deploy Genesys templates they always got the filter ~VCB and always wondered what the heck was that...I knew the meaning of the letters but never how to trigger them, as you say, docs never mention it or maybe they do but in a font of size 1....
I agree on how to control the no-answer behaviors and such, but seems pretty cool ;)
Title: Re: Queue Hold Position of a Caller
Post by: terry on July 11, 2013, 06:45:35 PM
Yes it is very-very basic solution (as it eas stated) not applicable as is for standard production (mostly due to reporting concerns), though it is a bit nore flexible than seems.

It just way to left call in all waiting queues it happen to be when abandonning happen, and trigger
some logic when agent will be finally selected for such virtual call.
This logic can be default one (which make routing as was described) or explcitely defined in form of strategy/subroutine. Up to strategy writer what to put into such subroutine - playing treatments, dialing,
invoking extrnal web services/components (for example Orchestration server).


 



Title: Re: Queue Hold Position of a Caller
Post by: Fra on July 12, 2013, 08:02:58 AM
Cav,

for me VCB has always stood for VoiceCallBack solution, the Genesys suite that then disappeared..
I have never heard about this 'execution mode' and wonder where it is documented - can anyone please point me to the right direction?

cheers,

Fra
Title: Re: Queue Hold Position of a Caller
Post by: Timur Karimov on July 12, 2013, 08:39:27 AM
[quote author=Fra link=topic=7860.msg34540#msg34540 date=1373616178]
for me VCB has always stood for VoiceCallBack solution, the Genesys suite that then disappeared..
I have never heard about this 'execution mode' and wonder where it is documented - can anyone please point me to the right direction?
[/quote]
Fra,
it's totaly undocumented. i was already ask the Genesys support about it - and their don't know much more =))) I think it's a old "feature" which has been made for VoiceCallBack support. But now, then "official" VCB is EOL and disapear from support list - everyone in G  just forget about it =)))
WBR Tim
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 12, 2013, 05:20:43 PM
Yup, always understood the meaning of the letters but not the product as couldn't find a single piece of documentation except for some docs that said the name over and over but no technical description or implementation.
I guess we all can ask for is keep digging
Title: Re: Queue Hold Position of a Caller
Post by: Timur Karimov on July 15, 2013, 10:42:50 AM
Meanwhile I had an answer from  Genesys Tier:
"
Such functionality is not supported.

For callback functionality the customer needs to implement Voice Call Back (VCB) solution or Virtual Hold Technology (VHT). The customer might need to contact their Genesys Account team for more details on that.


We can not/Will Not give details of this to you and If you implement this in your environment you will not be able to log any SR's for TServer or URS as you will be using unsupported functionality.
"

Have a nice day =))))))) ROFL
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 15, 2013, 11:30:37 AM
But isn't it VCB? Or what in the heck is VCB then?
Title: Re: Queue Hold Position of a Caller
Post by: smile on July 15, 2013, 11:49:10 AM
obviously vcb was prohibited because of one well-known patent troll, but apparently wasn't disabled in urs ;)
It looks interesting, but i would prefer to use documented and supported features like ORS.
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 15, 2013, 02:12:04 PM
Patent? can you illuminate us?
ORS? ?? How is that...ORS is nothing else than a VXML engine for URS...so...what it can do for VCB?
Title: Re: Queue Hold Position of a Caller
Post by: smile on July 15, 2013, 02:35:58 PM
cavagnaro, the main difficult of vcb solution is in patent named "Method for returning inbound calls", you can google it using number: WO 1997001917 A1. this patent was issued at 1996(!).

how do you think why other companies (like genesys and avaya) killed their own solutions and started to offer 3rd party system with ugly integration?

more over, to tell the truth,vht solution doesn't keep call in queue. it just get EWT time, drop the call and when time is finish make callback, assign maximum call priority and put new call at the top of queue. that's all and without any street magic  :D
Title: Re: Queue Hold Position of a Caller
Post by: smile on July 15, 2013, 02:43:56 PM
and a few words about ORS. just check callflows for mobile engagement solution, probably you'll find interesting scenario. For example - "Advanced Outbound Requests".
Or use SSG as the easiest way to initiate call.
Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 15, 2013, 03:33:02 PM
[quote author=smile link=topic=7860.msg34561#msg34561 date=1373898958]
cavagnaro, the main difficult of vcb solution is in patent named "Method for returning inbound calls", you can google it using number: WO 1997001917 A1. this patent was issued at 1996(!).

how do you think why other companies (like genesys and avaya) killed their own solutions and started to offer 3rd party system with ugly integration?

more over, to tell the truth,vht solution doesn't keep call in queue. it just get EWT time, drop the call and when time is finish make callback, assign maximum call priority and put new call at the top of queue. that's all and without any street magic  :D
[/quote]

interesting information! Thanks! I guess I'm not that old on the CTI world to know this ;)
I will never understand how a so generic idea can be "patented"...I mean, we can even patent almost every clever solution we design? Bah

Anyway, about VHT yeah, I analyzed it too in a demo they did to a customer a long time ago and was a joke...couldn't see the benefit of the PRICE they asked for.




Title: Re: Queue Hold Position of a Caller
Post by: cavagnaro on July 15, 2013, 03:34:05 PM
[quote author=smile link=topic=7860.msg34562#msg34562 date=1373899436]
and a few words about ORS. just check callflows for mobile engagement solution, probably you'll find interesting scenario. For example - "Advanced Outbound Requests".
Or use SSG as the easiest way to initiate call.
[/quote]

Would like to but still no luck to have that on my hands...I bet Pavel will be very fascinated haha
Title: Re: Queue Hold Position of a Caller
Post by: Fra on July 15, 2013, 04:19:05 PM
[quote author=smile link=topic=7860.msg34561#msg34561 date=1373898958]
cavagnaro, the main difficult of vcb solution is in patent named "Method for returning inbound calls", you can google it using number: WO 1997001917 A1. this patent was issued at 1996(!).

how do you think why other companies (like genesys and avaya) killed their own solutions and started to offer 3rd party system with ugly integration?
[/quote]

I think it's another patent, see here http://www.virtualhold.com/pressReleases/2004/04April04/042004_GenesysLitigation.html, but it doesn't make any difference, as you correctly pointed out, Genesys had to terminate their callback platform.

Fra
Title: Re: Queue Hold Position of a Caller
Post by: smile on July 15, 2013, 06:39:32 PM
[quote author=Fra link=topic=7860.msg34570#msg34570 date=1373905145]
[quote author=smile link=topic=7860.msg34561#msg34561 date=1373898958]
cavagnaro, the main difficult of vcb solution is in patent named "Method for returning inbound calls", you can google it using number: WO 1997001917 A1. this patent was issued at 1996(!).

how do you think why other companies (like genesys and avaya) killed their own solutions and started to offer 3rd party system with ugly integration?
[/quote]

I think it's another patent, see here http://www.virtualhold.com/pressReleases/2004/04April04/042004_GenesysLitigation.html, but it doesn't make any difference, as you correctly pointed out, Genesys had to terminate their callback platform.

Fra
[/quote]

Fra, it seems you're right. this link looks more relevant.
Title: Re: Queue Hold Position of a Caller
Post by: smile on July 15, 2013, 06:55:49 PM
[quote author=cavagnaro link=topic=7860.msg34566#msg34566 date=1373902445]
[quote author=smile link=topic=7860.msg34562#msg34562 date=1373899436]
and a few words about ORS. just check callflows for mobile engagement solution, probably you'll find interesting scenario. For example - "Advanced Outbound Requests".
Or use SSG as the easiest way to initiate call.
[/quote]

Would like to but still no luck to have that on my hands...I bet Pavel joined Avaya team will be very fascinated haha
[/quote]

btw, i found ors "ixn" extension which is very useful:
http://www.genesyslab.info/wiki/index.php/Interaction_Interface_Action_Elements#.3Ccreatecall.3E

using it you will able to call most significant tlib functions from ORS or from any 3rd party application via http/ors. why don't make you own call back?
ors is really much more that urs with http interface ;)
Title: Re: Queue Hold Position of a Caller
Post by: Adam G. on July 17, 2013, 10:53:52 AM
Just to let you all know I have designed and currently developing a Call Queueing solution which will GA in September. It does not use the  PSDK or ESDK (which means saving $$$$$) and was designed to be integrated with standard Inbound Routing. Actually it's not Genesys dependent  ;)

How does it differ, well the killer functionality is that persuades URS to route and queue a 'virtual call' so that the caller's position is retained.

The pricing is about the same as the PSDK and this basic package includes a test/dev environment license (non-production) and 2 executable Production licenses (so to provide HA resiliency). This will allow for about 400 concurrent queuing calls!

If you're interested and want to be the first customer and get the licenses for free, send me a PM.

W
Title: Re: Queue Hold Position of a Caller
Post by: Grand_Master on July 23, 2013, 01:20:18 AM
I've implemented a rudimentary callback service too.  I didn't realise I was infringing on any patents though  ;D

My solution did not require prioritization or keeping position in queue.  All I did was offer a repeatable callback announcement sub at a configurable time and interval in queue, which captured and confirmed DTMF digits, and wrote it to an OCS table.  Agents were blended for inbound and outbound calls, so callback occurred when next agent became available.  By tuning the time at which callback was offered, it was possible to get it pretty close to EWT.

It worked fine - other than for the fact that the CC manager would sometimes stop the outbound campaign at busy times  ::)
Title: Re: Queue Hold Position of a Caller
Post by: Adam G. on August 07, 2013, 08:29:47 AM
I just read the patent WO1997001917A1 and my solution different so there will be no patent infringement  :) :)

Just for the record, did you know that software can not be patented here in the UK !!