" /> SOLVED: How to catch TreatmentNotApplied for music treatment while waiting - Genesys CTI User Forum

Author Topic: SOLVED: How to catch TreatmentNotApplied for music treatment while waiting  (Read 1259 times)

Offline GregorV

  • Newbie
  • *
  • Posts: 24
  • Karma: 0
Advertisement
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
« Last Edit: June 21, 2019, 09:10:33 AM by GregorV »

Offline terry

  • Sr. Member
  • ****
  • Posts: 328
  • Karma: 35
Re: How to catch TreatmentNotApplied for music treatment while waiting
« Reply #1 on: June 21, 2019, 04:16:33 AM »
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.


 

Offline GregorV

  • Newbie
  • *
  • Posts: 24
  • Karma: 0
Re: How to catch TreatmentNotApplied for music treatment while waiting
« Reply #2 on: June 21, 2019, 09:09:50 AM »
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