Introduction
Este documento descreve a solução de problemas de TCD (Detalhes da chamada de encerramento) que mostra a duração errada quando a chamada é abandonada na fila.
Contribuído por Mayur Vyas, engenheiro do TAC da Cisco.
Editado Por Sahar Modares, Engenheiro Do Cisco TAC.
Problema
A tabela TCD mostra a duração errada quando a chamada é abandonada na fila.
Esse problema foi encontrado quando a tabela TCD foi usada para fins de relatório. O campo Duração da chamada mostra informações incorretas no segmento Unidades de Resposta de Voz (URV) do abandono de chamada no cenário da fila.
p. ex. quando as chamadas chegam no Cisco Unified Customer Voice Portal (CVP) e são descartadas na fila após 15 segundos pelo chamador.
Nesse caso, há dois registros em TCD:
- Peça do comutador com o valor correto de 15 segundos,
- O segmento da URV mostra 36 segundos. (Adiciona um atraso de 20 segundos).
Portanto, o trecho da URV neste cenário para calcular a duração da chamada na fila não está correto.

No fluxo normal de chamadas, isso é o que acontece:
- O CVP tem dois diálogos com o ICM, o DLG#1 é para a perna do SIP e o DLG#2 é para a perna do IVR.
- Se o chamador desconectar, o trecho SIP será desconectado e um CALL_STATE_EVENT com eventId=DISCONNECT será definido como ICM para DLG#1.
- O CVP envia o SIP BYE para o VXML Gateway para a IVR (desconexão remota).
- O VXML Gateway envia de volta para o aplicativo VXML com evento como phone.hangup.
- O aplicativo VXML é concluído e chama o retorno de subdiálogo.
- O VXML Gateway invoca o envio para o diálogo principal em direção ao CVP-IVR. Como parte disso, ele envia SCRIPT_RESULT para o CVP-IVR na solicitação GET/POST. Também é usado para liberar a licença IVR do CVP.
- O gateway IVR-VXML é uma interface vxml/http, que funciona em req/resp, com o CVP-IVR atua como servidor e o gateway VXML atua como cliente.
- O VXML Gateway envia SCRIPT_RESULT na solicitação GET/POST ao CVP-IVR e o mesmo é enviado ao ICM. Também é usado para liberar a licença IVR do CVP.
- O CVP envia CALL_STATE_EVENT com eventId=DISCONNECT está definido como ICM para DLG#2 (ou seja, perna IVR).
Troubleshoot
Etapa 1. Criado o HelloWorld personalizado e recriado este problema no laboratório. O segmento do switch mostra a duração 22 do TCD e o segmento da URV mostra a duração do TCD em 50 segundos.
Peça do switch - DID=1577566
Perna da URV - DID=1577567
Os registros do PIM da URV mostram:
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 segundos depois, o CVP envia a desconexão do relatório de eventos.
É aqui que o chamador descartou a chamada na fila. Então, para a perna do switch vemos a duração 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 segundos mais tarde, o PG envia a mensagem de cancelamento para a URV para encerrar o segmento da URV de acordo com a configuração do registro (DelayedScriptResponseTimeout). Esta chave do registro vem na imagem porque não houve resultado de script de execução do CVP após a desconexão do trecho da URV.
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
Agora, depois de 22 + 10 + 18 = 50 segundos mais tarde (que é ~49 no TCD), o CVP envia o relatório de eventos para o ICM e isso é o que é mostrado no TCD para o trecho da URV.
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.
Etapa 2. Com base nessa análise, o problema parecia estar entre o aplicativo VXML e o VXML Gateway ou VXML
gateway e CVP/IVR
Aqui está o desvio causado pelo VXML Gateway Not Sent GET/POST req. com SCRIPT_RESULT.
- O CVP tem dois diálogos com o ICM, o DLG#1 é para a perna do SIP e o DLG#2 é para a perna do IVR
- O chamador desconecta, o trecho SIP é desconectado e um CALL_STATE_EVENT com eventId=DISCONNECT é definido como ICM para DLG#1
- O CVP envia o SIP BYE para o VXMLGW para a IVR (desconexão remota).
- O VXMLGW não envia SCRIPT_RESULT e, portanto, o ICM expira após os 10s e envia ICM_RELEASE ao CVP que é recebido pelo CVP-IVR.
- Nesta etapa, o CVP-IVR iniciará o temporizador (mencionado abaixo) e continuará aguardando a resposta do VXMLGW.
- Como nenhum SCRIPT_RESULT é recebido, o temporizador é acionado no CVP e o IVR iniciará a limpeza da sessão do cliente que o VXMLGW criou para esta chamada.
- Após o temporizador expirar, o CVP envia CALL_STATE_EVENT com eventId=DISCONNECT está definido como ICM para DLG#2 (ou seja, perna IVR).
O temporizador é IVR.TimerTaskInterval. Isto está em ivr.properties.

Comparado com os registros de aplicativos 'HelloWorld' e 'CustomHelloWorld', a Subcaixa retorna ao diálogo principal após receber o evento telephone.hang.

Faz login no HelloWorld.

Evento de devolução

O VXML Gateway envia o resultado da chamada após o retorno do subdiálogo.
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)
Registros em CustomHelloWorld não funcional.

Não retornar aqui - o estado é exit.

Solução
Para retornar à caixa de diálogo principal, o aplicativo precisa ser configurado com Subdiálogo = verdadeiro.
- Abra o aplicativo no CallStudio, clique com o botão direito do mouse e selecione propriedades. Modifique seu aplicativo para definir a subcaixa de diálogo como "verdadeiro" e reimplante o aplicativo.

- Você também pode verificar se a subcaixa de diálogo está definida como true ou false do arquivo settings.xml. Este arquivo pode ser encontrado no caminho - C:\Cisco\CVP\VXMLServer\applications\<seu aplicativo>\data\application
