Genesys CTI User Forum

Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: Gef Buneri on April 11, 2019, 12:58:26 PM

Title: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: Gef Buneri on April 11, 2019, 12:58:26 PM
Hi all, hope everything is fine out there.

In strategy, I use since time this method:

TARGET = SelectDN[VQ,PRIORITY,GA,etc.] -> Update['ATTACHNAME',TARGET] -> play some voice treatment with an exit at the end (I must use exit 'cause my architecture) -> SendEvent[EventDiverted] (I use this to preserve the validity of previously collected target) -> ReturnDN.

At this point if I use a RouteCall[TARGET] where TARGET = UData['ATTACHNAME'] , it works perfectly, but if I want to use a SuspendForDN[] on the updated TARGET from 'ATTACHNAME', the call loops continuosly until it is abandoned, generating an enormous quantity of logs.

Any clue?


Best regards.
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: terry on April 11, 2019, 10:36:53 PM
What is "SuspendForDN[] on the updated TARGET"?
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: Gef Buneri on April 12, 2019, 06:57:54 AM
Hi Terry. "updated TARGET" is the variable containing the TARGET string constructed using SelectDN, recovered from an attach data. SelectDN[] result is stored in a var, then on that var I use the SuspendForDN[] or the RouteCall[] when the target is ready to receive the call.

In the scenario described above, I must apply voice treatment, and in the system we own, the only way to play audio file (.vox), is invoking IPCS resource; then to route the call to the final destination, I must use a SendEvent[EventDiverted] on the VQ, then exit and RouteCall[TARGET] keeping the TARGET string previously collected, in an attach data.

Our is a multiple TServer (7.5) scenario.

This loops until call is abandoned, from URS logs:

10:28:56.705_T_E_ [14:0c] EventError is received for tserver TServer_S8700_AES1[CagliariS8700] - Invalid connection id
received from 65200(TServer_S8700_AES1)Storm:xxxx(fd=13) message EventACK
AttributeUserEvent RequestDistributeEvent
AttributeThisDN 'VQ_QUEUE_IN'
AttributeReferenceID 4294967295
AttributeTimeinSecs 1555057736 (10:28:56)
AttributeTimeinuSecs 704701
AttributeEventSequenceNumber 00000000097d1bc6
received from 65200(TServer_S8700_AES1)Storm:xxxx(fd=13) message EventError
(Invalid connection id)
AttributeThisDN '27329'
AttributeReferenceID 26246
AttributeConnID 009c02c0df82dbf6
AttributeErrorCode 56
AttributeTimeinSecs 1555057736 (10:28:56)
AttributeTimeinuSecs 704915
AttributeEventSequenceNumber 00000000097d1bc8
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: terry on April 12, 2019, 08:09:21 PM
But SuspendForDN supposed to accept as parameter time to wait some ready agent, not string presenting old selected target.
What for SuspendForDN is used at all here?
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: Gef Buneri on April 15, 2019, 07:55:20 AM
Yes, the param for SuspendForDn is a time value, but I assign the target as a var, so in the function properties block, I have, i.e. "TARGET = SuspendForDN[60]'. Where TARGET is written as written above.

I'll try to explain the idea using an ird draft.

[url=http://web.tiscali.it/modifiche/ird_draft_0001.png]http://web.tiscali.it/modifiche/ird_draft_0001.png[/url]
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: terry on April 15, 2019, 04:46:35 PM
If understood ird draft correctly - if interaction HAS attached data TARGET_COLLECTED then it go to SuspendForDN bypassing (without invoking) SelectDN?
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: Gef Buneri on April 16, 2019, 09:11:39 AM
Yep. I tried the selectdn again too, keeping VQ & GA infos, but both scenarios go wrong; with a new selectdn, the error is "invalid connid"; sending the call back to suspendfordn, instead, causes what seems to be a loss of control by the router.

Tried without the event diverted/exit, sending it back to suspendfordn or a new selectdn directly after the play block, but it doesn't work too, 'cause I'm bound to the delivercall toward gvp to play audio files (.vox on ipcs), so to handle the call again I must exit from there.

p.s. the strategy works perfectly if the next step after event diverted is a Route Call[TARGET], the call will be distributed; somehow the problem is finite to selectdn/suspendfordn again.
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: terry on April 17, 2019, 10:59:13 PM
If strategy itself has no loops, if there is looping then it probably means that strategy restarted over and over again.
Does logs give any hints URS starts strategy again and again?
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: Gef Buneri on April 23, 2019, 09:10:15 AM
No, strategy doesn't seems to loop, the loop seems to start at SuspendForDN level. Following an extract from logs; loop continues this way on and on 'til the call is abandoned. No new strategy calling after the first time (Line 22526), just loop and loop and loop... it's kinda router is trying to suspend something it can't, and tries forever.

Line 22526 -    _I_I_<009c02c0df8194fe> [14:33] strategy: *0x65*130_OUT_20190404 is attached to the call
Line 22528 -    _C_I_<009c02c0df8194fe> [0D:03] option transition_time= 20
Line 22529 -    _C_I_<009c02c0df8194fe> [0D:03] option use_parking_threshold= 0
Line 22530 - 10:42:28.749 Int 20001 interaction <009c02c0df8194fe> is started
Line 22531 -    _I_I_<009c02c0df8194fe> [01:14] current call classification: media=voice(100), service=default(200), segment=default(300)
Line 22532 - 10:42:28.749_I_I_<009c02c0df8194fe> [09:06] >>>>>>>>>>>>start interpretator
Line 22533 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __Return(SCRIPT) <- STRING:
Line 22534 -    _I_I_<009c02c0df8194fe> [07:46] no error mode for this call
Line 22535 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __Return(SCRIPT) <- STRING:
Line 22536 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __DBReturn(SCRIPT) <- STRING:
Line 22537 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __DBStrReturn(SCRIPT) <- STRING:
Line 22538 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __TargetVar(SCRIPT) <- STRING:
Line 22539 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: TARGET(LOCAL) <- STRING: return:timeout
Line 22540 -    _I_I_<009c02c0df8194fe> [07:27] HERE IS WAIT FOR DN (60 sec)
Line 22542 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: TARGET(LOCAL) <- STRING: return:timeout
Line 22543 - 10:42:28.749_I_I_<009c02c0df8194fe> [07:38] HERE IS XDATA
Line 22546 - 10:42:28.749_I_I_<009c02c0df8194fe> [09:04] <<<<<<<<<<<<suspend interpretator(XDATA_EX), timers:00000
Line 22550 - 10:42:28.752_D_I_<009c02c0df8194fe> [05:02] MSG_RETRIEVED(status success) is received from dbserver DBServer75URS
Line 22552 - 10:42:28.752_D_I_<009c02c0df8194fe> [05:02] MSG_PROCCOMPLETED (status 1) is received from dbserver DBServer75URS
Line 22553 - 10:42:28.752_I_I_<009c02c0df8194fe> [09:05] >>>>>>>>>>>>resume interpretator(0)
Line 22554 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __DBReturn(SCRIPT) <- STRING: null,null
Line 22555 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: GA_AUTO(LOCAL) <- STRING: null
Line 22556 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: PRIORITA_AUTO(LOCAL) <- STRING: null
Line 22557 -    _I_I_<009c02c0df8194fe> [07:27] HERE IS WAIT FOR DN (60 sec)
Line 22559 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: TARGET(LOCAL) <- STRING: return:timeout
Line 22560 - 10:42:28.752_I_I_<009c02c0df8194fe> [07:38] HERE IS XDATA
Line 22563 - 10:42:28.752_I_I_<009c02c0df8194fe> [09:04] <<<<<<<<<<<<suspend interpretator(XDATA_EX), timers:00000
Line 22567 - 10:42:28.753_D_I_<009c02c0df8194fe> [05:02] MSG_RETRIEVED(status success) is received from dbserver DBServer75URS
Line 22569 - 10:42:28.754_D_I_<009c02c0df8194fe> [05:02] MSG_PROCCOMPLETED (status 1) is received from dbserver DBServer75URS
Line 22570 - 10:42:28.754_I_I_<009c02c0df8194fe> [09:05] >>>>>>>>>>>>resume interpretator(0)
Line 22571 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: __DBReturn(SCRIPT) <- STRING: null,null
Line 22572 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: GA_AUTO(LOCAL) <- STRING: null
Line 22573 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: PRIORITA_AUTO(LOCAL) <- STRING: null
Line 22574 -    _I_I_<009c02c0df8194fe> [07:27] HERE IS WAIT FOR DN (60 sec)
Line 22576 -    _I_I_<009c02c0df8194fe> [09:04] ASSIGN: TARGET(LOCAL) <- STRING: return:timeout
Line 22577 - 10:42:28.754_I_I_<009c02c0df8194fe> [07:38] HERE IS XDATA
Line 22580 - 10:42:28.754_I_I_<009c02c0df8194fe> [09:04] <<<<<<<<<<<<suspend interpretator(XDATA_EX), timers:00000
Line 22627 - 10:42:28.755_D_I_<009c02c0df8194fe> [05:02] MSG_RETRIEVED(status success) is received from dbserver DBServer75URS
Line 22629 - 10:42:28.755_D_I_<009c02c0df8194fe> [05:02] MSG_PROCCOMPLETED (status 1) is received from dbserver DBServer75URS
Line 22630 - 10:42:28.755_I_I_<009c02c0df8194fe> [09:05] >>>>>>>>>>>>resume interpretator(0)
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: terry on April 23, 2019, 09:05:58 PM
In log URS try to execute SuspendForDN function which immediately exits (either because of call was already routed or just there is nothing to wait for- no targets specified) and strategy continue with accessing database, after that it loops back to SuspendForDN.
Strategy looks like having explicit loop (and insie the loop body there is SUspendForDn function and Database access object) 
Title: Re: SuspendForDN[VAR001] after EventDiverted (URS 7.5 - IRD 7.5)
Post by: Gef Buneri on May 16, 2019, 02:27:28 PM
Hi Terry, here I'm again. After a test period I can say that the problems are caused by suspendfordn following the first one; they just don't work.

The sequence SelectDN -> SuspendForDN -> DB Wizard -> SuspendForDN

Causes the second SuspendForDN not to work, so the function block drops the call again without waiting for the timeout value, generating a continuous loop instead of repeating the loop after the suspendfordn interval value. I'm trying to do a new selectdn before the new suspendfordn to see what happens.