Genesys CTI User Forum
Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: GregorV on June 19, 2019, 03:19:19 PM
-
In a customer IRD strategy we have the sequence SelectDN->SetBusyTreatment->SuspendForDN. This works fine - in SetBusyTreatment 2 music treatments are specified in case the first on fails.
Some days ago there was a high load situation where the number of treatments ran behind the configured limit and we got TreatmentNotApplied with "Insufficient source resource port capacity" which was correct.
Anyhow in this situation actually not any treatment can be played and we want to disconnect the call with a switch announcement.
The problem is that the call waits in SuspendForDN.
Is there a way to force the call leaving the SuspendForDN block, when all treatments cannot be played ?
Right now the customer hears nothing.
This would not be critical but due to error handling configuration 'router_timeout' in SIP server the call is transferred after 10s to another routing point where the same problem starts (loop). But this error handling should remain intact.
We cannot even check last error because this routing is successful which overwrites the treatment error. OnRouteError function apparently can only be used for the target block. At least for the URS option with the same name this is mentioned in the docs.
Any idea ?
Thanks
Gregor
-
One of way may be relying on time. Meaning adding to add 3rd busy treatment "Exit" - it makes SuspendForDN exiting with error code -003 Exit.
If music busy treatments fails then it happen pretty quickly and SuspendForDN exits very short after entering so measuring this time it probably will be possible to judge was busy treatments successful or not. If it was successful (SuspendForDN function runs say few minutes ) then if needed SuspendForDN need to be reentered to continue waiting.
Other solutions might be (but they probably overkilling):
- run busy treatments as explicit strategy thread (not "default busy treatment" thread). Create strategy where only treatments are played (using regular IRD treatment blocks) with any analyzes of treatment results, etc. Do not use in main strategy busy treatments but instead call before SuspendForDN Fork['name_of_tihs_treatment_staretgy', ''].
You will get 2 "threads" for the same call - one waiting ready agents (where SuspendForDN) and one playing treatments.
-
YES, exactly what I was looking for :D.
Checking for Exit (-003) is completely OK, because if the wait time expires there is timeout (-001). For playing the treatment I have specified 9999 seconds and if this really expires there still is the default treatment with also 9999 seconds - so the Exit normally will only happen after at least about 5.5 h. After that waiting time the caller probably is sleeping and no need to reenter SuspendForDN.
Thanks
Gregor