Introduction
Ce document décrit comment configurer l'étape OnException Goto dans un script Unified Contact Center Express (UCCX).
Les problèmes rencontrés dans de nombreux flux d'appels sont dus à une utilisation incorrecte de cette étape. Cette meilleure pratique vise à prévenir les problèmes au niveau du flux d'appels et du moteur lors de l'utilisation de cette fonctionnalité.
Problème
La OnException pour une ContactInactiveException est utilisée pour les scénarios où vous déconnectez déjà l'appel (n'est plus actif), c'est-à-dire terminé à l'extrémité éloignée.
Ces images montrent une façon courante de configurer cette étape et ont l'étape Goto point à la fin du script.
Cependant, référez-vous à cette image dans les scénarios incorrects, l'étape Terminate est utilisée après l'étiquette End, pour un appel déjà déconnecté.

Ce qui se passe, c'est que quand vous déconnectez l'appel pendant que le script est en cours d'exécution, l'étape OnException est exécutée 1000 fois et génère une alerte ("Nombre maximal d'étapes atteint : 1000"). Bien que cette erreur n'affecte pas le moteur ou la production, il s'agit d'un problème sur le moteur, et il génère une alerte.
La raison est que la fin d'un appel qui est déjà inactif (abandonné par la partie distante) entraîne la génération d'une autre ContactInactiveException.
Essentiellement, les exceptions de contact inactives sont continuellement mises en boucle et générées, ce qui entraîne la génération d'autres exceptions. Il s'agit d'une boucle Exception.
Ces journaux indiquent le problème :
// application getting triggered//
Line 1999: Trigger: ContactApplicationTrigger[time=1526359880518,locale=en_US,cfg=JTAPITriggerConfig[schema=ApplicationTriggerConfig,time=2018-05-13 04:51:23.0,recordId=928,desc=Cisco JTAPI Trigger,name=3014804565,type=Cisco JTAPI Trigger,appName=Clinical_Center_Admin,enabled=true,sessions=2,idleTimeout=5000,locale=en_US,parms={},taskGroups=[],controlClass=class com.cisco.call.CallControlChannel,controlGroupId=7,contactGroups=[GroupInfo[class=com.cisco.dialog.DialogChannel,id=0]],dn=3014804565,redirectCSS=default,cmDeviceName=ClinicalCAdmin,cmDeviceInvalid=false,cmDescription=Clinical Center Admin,cmDevicePoolUUID={ED1A849A-1601-36F6-3254-25D867408A73},cmDevicePoolName=CIT_UCCX_DP,cmCallingSearchSpaceUUID=,cmCallingSearchSpaceName=None,cmLocationUUID={29C5C1C4-8871-4D1E-8394-0B9181E8C54D},cmLocationName=Hub_None,cmPartitionUUID={11C5CF59-66A5-02E4-9A1B-A5B2853B9127},cmPartitionName=All-Phones_pt,cmVoiceMailProfileUUID=,cmVoiceMailProfileName=None,cmCallPickUpGroupUUID=,cmCallPickUpGroupName=,cmDisplay=...
Line 2001: ID: 29000007909
Line 2099: 1934897: May 15 00:51:20.521 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : Start
Line 2101: 1934899: May 15 00:51:20.521 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : On Exception(ContactInactiveException) Goto End
Line 2139: 1934937: May 15 00:51:20.524 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : Delay 1 sec
Line 2142: 1934940: May 15 00:51:21.525 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : Accept (--Triggering Contact--)
// Customer disconnecting the call//
Line 2257: 1935055: May 15 00:51:36.481 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2951-77-2-TERM_CONN_EV:2951] RequestImpl: CallID:3586 MediaId:11102124/2 Task:29000007909 gets TermConnDroppedEv, meta code:132, cause code:100
Line 2258: 1935056: May 15 00:51:36.481 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2951-77-2-TERM_CONN_EV:2951] RequestImpl: CallID:3586 MediaId:11102124/2 Task:29000007909, TerminalConnection to Terminal: ClinC_2951 is DROPPED, 11102124/2
// call is ended and call loops and END step is executed for 1000 times and RTMT alert is generated for the dissconnected call//
Line 2260: 1935058: May 15 00:51:36.488 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : End:
Line 3260: 1936058: May 15 00:51:36.569 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : Terminate (--Triggering Contact--)
Line 3261: 1936059: May 15 00:51:36.573 EDT %MIVR-APP_MGR-3-TASK_ABORTED:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFWorkflowAppDebugTaskWrapper: Application task aborted: Application=App[name=Clinical_Center_Admin,type=Cisco Script Application,id=400,desc=Clinical_Center_Admin,enabled=true,max=2,valid=true,cfg=[ApplicationConfig[schema=ApplicationConfig,time=2015-01-13 23:42:42.0,recordId=131,desc=Clinical_Center_Admin,name=Clinical_Center_Admin,type=Cisco Script Application,id=400,enabled=true,sessions=2,script=SCRIPT[ClinicalCenter/ClinicalCenter_ADMIN.aef],defaultScript=,vars=[],defaultVars=null]]],Application Trigger=ContactApplicationTrigger[time=1526359880518,locale=en_US,cfg=JTAPITriggerConfig[schema=ApplicationTriggerConfig,time=2018-05-13 04:51:23.0,recordId=928,desc=Cisco JTAPI Trigger,name=3014804565,type=Cisco JTAPI Trigger,appName=Clinical_Center_Admin,enabled=true,sessions=2,idleTimeout=5000,locale=en_US,parms={},taskGroups=[],controlClass=class com.c...
Line 3261: 1936059: May 15 00:51:36.573 EDT %MIVR-APP_MGR-3-TASK_ABORTED:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFWorkflowAppDebugTaskWrapper: Application task aborted: Application=App[name=Clinical_Center_Admin,type=Cisco Script Application,id=400,desc=Clinical_Center_Admin,enabled=true,max=2,valid=true,cfg=[ApplicationConfig[schema=ApplicationConfig,time=2015-01-13 23:42:42.0,recordId=131,desc=Clinical_Center_Admin,name=Clinical_Center_Admin,type=Cisco Script Application,id=400,enabled=true,sessions=2,script=SCRIPT[ClinicalCenter/ClinicalCenter_ADMIN.aef],defaultScript=,vars=[],defaultVars=null]]],Application Trigger=ContactApplicationTrigger[time=1526359880518,locale=en_US,cfg=JTAPITriggerConfig[schema=ApplicationTriggerConfig,time=2018-05-13 04:51:23.0,recordId=928,desc=Cisco JTAPI Trigger,name=3014804565,type=Cisco JTAPI Trigger,appName=Clinical_Center_Admin,enabled=true,sessions=2,idleTimeout=5000,locale=en_US,parms={},taskGroups=[],controlClass=class com.c... Line 2261: 1935059: May 15 00:51:36.488 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-3-TASK:0x6c08900e5_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007909 : Terminate (--Triggering Contact--)
//RTMT ALERT//
Message: : 235: citvoip-ccxsvr-b.net.nih.gov: May 15 2018 12:40:22 AM.980 UTC : %UC_APP_MGR-3-TASK_ABORTED: %[app.trigger=ContactApplicationTrigger[time=1526344761313,locale=en_US,cfg=JTAPITriggerConfig[schema=ApplicationTriggerConfig,time=2018-05-13 ][exception=com.cisco.wfframework.obj.WFMaxExecutedStepsExceededException: No. of executed steps: 1000][UNKNOWN_PARAMTYPE:Task id=29000007864][app=App[name=NLM_Inbound,type=Cisco Script Application,id=202,desc=NLM_Inbound,enabled=true,max=50,valid=true,cfg=[ApplicationConfig[][task.class=class com.cisco.app.impl.WFWorkflowAppDebugTaskWrapper][ClusterID=][NodeID=citvoip-ccxsvr-b]: Application task aborted
Solution
Pour résoudre ce problème, vous devez sauter l'étape Terminate après l'étape Goto Label, c'est-à-dire se référer à la figure 2 pour configurer l'étape Goto END label de l'étape Goto ou supprimer l'étape OnException complètement et l'étiquette END correspondante.
Le résumé ne permet pas de mettre fin à un appel InActive déjà en cours et de tenter d'intercepter l'exception ContactInactive. C'est logiquement imparfait.
Il s'agit de l'image du script correct.

Journaux de travail
// working call//
Line 5048: 1951439: May 15 01:39:50.491 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-7-TASK:0x6c08900eb_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007915 : Start
Line 5049: 1951440: May 15 01:39:50.491 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-7-TASK:0x6c08900eb_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007915 : Delay 2 sec
Line 5112: 1951503: May 15 01:39:52.492 EDT %MIVR-ENG-7-UNK:[MIVR_ENG_TASKS-31-7-TASK:0x6c08900eb_ClinicalCenter/ClinicalCenter_ADMIN.aef] WFTracingLogImpl: Execute step of Task 29000007915 : Accept (--Triggering Contact--)
Line 5116: 1951507: May 15 01:39:52.500 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2903-82-2-TERM_CONN_EV:2903] RequestImpl: CallID:3591 MediaId:11104504/2 Task:29000007915, TerminalConnection to Terminal: ClinC_2903 is ACTIVE
Line 5120: 1951511: May 15 01:39:52.501 EDT %MIVR-SS_TEL-7-UNK:[(P1-10.129.7.10) EventThread] InCallObserverImpl: CallID:3591 MediaId:11104504/2 Task:29000007915 com.cisco.jtapi.CiscoMediaOpenLogicalChannelEvImpl received
//customer disconnects the call//
Line 5232: 1951623: May 15 01:40:10.953 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2903-82-2-TERM_CONN_EV:2903] RequestImpl: CallID:3591 MediaId:11104504/2 Task:29000007915 gets TermConnDroppedEv, meta code:132, cause code:100
Line 5233: 1951624: May 15 01:40:10.953 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2903-82-2-TERM_CONN_EV:2903] RequestImpl: CallID:3591 MediaId:11104504/2 Task:29000007915, TerminalConnection to Terminal: ClinC_2903 is DROPPED, 11104504/2
Line 5236: 1951627: May 15 01:40:10.955 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2903-82-2-TERM_CONN_EV:2903] CallImpl: Call.abandoned() JTAPICallContact[id=3591,type=Cisco JTAPI Call,implId=11104504/2,active=false,state=CALL_DISCONNECTED,inbound=true,handled=false,locale=en_US,aborting=false,app=App[name=Clinical_Center_Admin,type=Cisco Script Application,id=400,desc=Clinical_Center_Admin,enabled=true,max=2,valid=true,cfg=[ApplicationConfig[schema=ApplicationConfig,time=2018-05-15 01:38:54.0,recordId=1168,desc=Clinical_Center_Admin,name=Clinical_Center_Admin,type=Cisco Script Application,id=400,enabled=true,sessions=2,script=SCRIPT[ClinicalCenter/ClinicalCenter_ADMIN.aef],defaultScript=,vars=[],defaultVars=null]]],task=29000007915,session=Session[id=001-0x131794c237,parent=null,active=true,state=SESSION_IDLE,time=1526362790448],seqNum=0,time=1526362790447,cn=3014804565,dn=3014804565,cgn=2673343616,ani=null,dnis=null,clid=null,atype=DIRECT,lrd=null,ocn=3014804565,odn=null,uui=null,aniii=null,ced=n...
Line 5237: 1951628: May 15 01:40:10.956 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2903-82-2-TERM_CONN_EV:2903] InCallObserverImpl: CallID:3591 MediaId:11104504/2 Task:29000007915, released TP[type=Cisco CTI Port,id=25,implId=2903,active=false,state=IDLE] from 3014804565, and releasing udpPort 28084
Line 5238: 1951629: May 15 01:40:10.956 EDT %MIVR-SS_TEL-7-UNK:[MIVR_SS_TEL_PORT_QEXE_2903-82-2-TERM_CONN_EV:2903] InCallObserverImpl: CallID:3591 MediaId:11104504/2 Task:29000007915 com.cisco.jtapi.TermObservationEndedEvImpl received
// call is disconnected with no exception//
Line 5286: 1951640: May 15 01:40:11.832 EDT %MIVR-SS_CM-7-UNK:[MIVR_SS_RMCM_RmCmCleanupThread-370-0-RmCmCleanupThread] ContactMgr: Cleanup detected final state of afw ct: JTAPICallContact[id=3591,type=Cisco JTAPI Call,implId=11104504/2,active=false,state=CALL_DISCONNECTED,inbound=true,handled=false,locale=en_US,aborting=false,app=App[name=Clinical_Center_Admin,type=Cisco Script Application,id=400,desc=Clinical_Center_Admin,enabled=true,max=2,valid=true,cfg=[ApplicationConfig[schema=ApplicationConfig,time=2018-05-15 01:38:54.0,recordId=1168,desc=Clinical_Center_Admin,name=Clinical_Center_Admin,type=Cisco Script Application,id=400,enabled=true,sessions=2,script=SCRIPT[ClinicalCenter/ClinicalCenter_ADMIN.aef],defaultScript=,vars=[],defaultVars=null]]],task=29000007915,session=Session[id=001-0x131794c237,parent=null,active=false,state=SESSION_DISPOSED,time=1526362790448],seqNum=0,time=1526362790447,cn=3014804565,dn=3014804565,cgn=2673343616,ani=null,dnis=null,clid=null,atype=DIRECT,lrd=null,ocn=3014804565,...