简介
本文档介绍终止呼叫详细信息(TCD)故障排除,当呼叫在队列中放弃时,显示错误的持续时间。
作者:思科TAC工程师Mayur Vyas。
由思科TAC工程师Sahar Modase编辑。
问题
当呼叫在队列中被放弃时,TCD表显示了错误的持续时间。
当将TCD表用于报告目的时发现此问题。呼叫持续时间字段显示队列场景中呼叫放弃的语音响应单元(VRU)段中的错误信息。
例如 呼叫到达思科统一客户语音门户(CVP)后,呼叫方在15秒后在队列中丢弃。
在本例中,TCD中有两条记录:
- 交换机腿的正确值为15秒,
- VRU腿显示36秒。(增加20秒延迟)。
因此,此场景中用于计算队列中呼叫持续时间的VRU支路不正确。

在正常呼叫流中,会发生以下情况:
- CVP与ICM有两个对话,DLG#1用于SIP支路,DLG#2用于IVR支路。
- 如果呼叫方断开连接,SIP支路将断开连接,并且DLG#1的CALL_STATE_EVENT (eventId=DISCONNECT)设置为ICM。
- CVP将SIP BYE发送到IVR的VXML网关(远程断开)。
- VXML网关以event as telephone.hangup提交回VXML应用程序。
- VXML应用程序完成并调用子对话框返回。
- VXML网关调用提交回,用于向CVP-IVR进行主对话。作为其一部分,它在GET/POST请求中将SCRIPT_RESULT发送到CVP-IVR。这也用于发布CVP IVR许可证。
- IVR-VXML网关是vxml/http接口,以请求/响应的方式工作,CVP-IVR充当服务器,VXML网关充当客户端。
- VXML网关在GET/POST请求中向CVP-IVR发送SCRIPT_RESULT,同样的SCRIPT_RESULT也发送到ICM。这也用于发布CVP IVR许可证。
- CVP发送CALL_STATE_EVENT,eventId=DISCONNECT设置为ICM forDLG#2(即IVR支路)。
故障排除
步骤1.创建自定义HelloWorld并在实验中重新创建了此问题。Switch Leg显示TCD持续时间22,VRU leg显示TCD持续时间50秒。
交换机支路 — DID=1577566
VRU腿 — DID=1577567
VRU PIM日志显示:
17:04:31:861 PG1B-pim1 Trace: PG->VRU:RUN_SCRIPT_REQ(175 bytes):DID=1577567 SendSeq#=1 InvID=1 ScriptID=GS,Server,V ScriptConfig= ANI=110026 CED= RCK=236 RCKDay=152008 RCKSeq#=1 CallGUID=5759758000010000000000213E6D137A.
22秒后,CVP发送事件报告断开连接。
这是呼叫方在队列中丢弃呼叫的位置。因此,对于交换机支路,我们看到持续时间为22。
17:04:53:106 PG1B-pim1 Trace: VRU->PG:EVENT_REPORT(22 bytes):DID=1577566 SendSeq#=3 EventCode=Disconnect(6) CauseCode=NormalComplete(1).
17:04:53:106 PG1B-pim1 Trace: ToRouter_CallEventReport:CALL_EVENT_REPORT RCID=5009 PID=5004 DID=1577566 DIDRelSeq#=2 LabelIndex=0 Event=6 DialogEnds=1 Cause=1.
22 + 10 = 32秒后,PG将取消消息发送到VRU以根据注册表设置(DelayedScriptResponseTimeout)终止VRU支路。 此注册表项出现在图片中,因为VRU支路断开后,CVP没有运行脚本结果。
17:05:03:385 PG1B-pim1 Trace: PG->VRU:CANCEL(20 bytes):DID=1577567 SendSeq#=2 InvID=2 RequestID=1.
17:05:03:385 PG1B-pim1 Trace: ProcessDialogFail:DIALOG_FAIL RCID=5009 PID=5004 FailureType=2 NumOfEvents=1 DID=1577566 DIDRelSeqNo=1 ReasonCode=18.
17:05:03:385 PG1B-pim1 Trace: VRU->PG:DIALOGUE_FAILURE_CONF(20 bytes):DID=1577567 SendSeq#=2 InvID=1 ErrorCode=Operation Canceled (34).
17:05:03:385 PG1B-pim1 Trace: PG->VRU:RELEASE(16 bytes):DID=1577567 SendSeq#=3 Cause=0
现在,在22 + 10 + 18 = 50秒后(在TCD中约为49),CVP将事件报告发送到ICM,这是VRU支路的TCD中显示的内容。
17:05:21:277 PG1B-pim1 Trace: VRU->PG:EVENT_REPORT(22 bytes):DID=1577567 SendSeq#=3 EventCode=Disconnect(6) CauseCode=NormalComplete(1). 17:05:21:277 PG1B-pim1 Trace: ToRouter_CallEventReport:CALL_EVENT_REPORT RCID=5009 PID=5004 DID=1577567 DIDRelSeq#=2 LabelIndex=0 Event=6 DialogEnds=1 Cause=1.
步骤2.根据此分析,VXML应用和VXML网关或VXML之间似乎存在问题
网关和CVP/IVR
以下是由VXML网关未发送GET/POST请求引起的偏差。和SCRIPT_RESULT。
- CVP与ICM有两个对话,DLG#1用于SIP支路,DLG#2用于IVR支路
- 呼叫方断开连接,SIP支路断开连接,且CALL_STATE_EVENT (eventId=DISCONNECT)设置为ICM forDLG#1
- CVP向VXMLGW发送SIP BYE,用于IVR(远程断开)。
- VXMLGW不发送SCRIPT_RESULT,因此ICM在10秒后超时,并将ICM_RELEASE发送到CVP,CVP-IVR接收。
- 在此阶段,CVP-IVR将启动计时器(下文提到),并继续等待VXMLGW的响应。
- 由于未收到SCRIPT_RESULT,CVP中触发的计时器将开始清理VXMLGW为此呼叫创建的客户端会话。
- 计时器过期后,CVP发送CALL_STATE_EVENT,eventId=DISCONNECT设置为ICM forDLG#2(即IVR支路)。
计时器是IVR。TimerTaskInterval。这在ivr.properties中。

比较工作的“HelloWorld”和“CustomHelloWorld”应用程序日志,发现Subdialog在收到telephone.hangup事件后会返回主对话框。

登录HelloWorld工作。

返回事件

VXML网关在子对话返回后发送呼叫结果。
Jun 22 00:29:02.670: //1122350//HTTPC:/httpc_send_ev: event sent to HTTP Client:
Jun 22 00:29:02.670: method (GET), url (http://10.66.75.179:8000/cvp/VBServlet?MSG_TYPE=CALL_RESULT&CALL_ID=98A53E04561811E7A43AB167D81A2367&CALL_SEQ_NUM=2&ERROR_CODE=1)
登录Non-Working CustomHelloWorld。

不返回此处 — 状态为退出。

解决方案
要返回主对话框,需要使用Subdialog = true配置应用程序。
- 在CallStudio中打开应用程序,右键单击并选择属性。修改应用程序,将子对话框设置为“true”并重新部署该应用程序。

- 您还可以从settings.xml文件验证子对话框是设置为true还是false。此文件位于路径 — C:\Cisco\CVP\VXMLServer\applications\<your application>\data\application下
