소개
이 문서에서는 발신자가 CVP(Customer Voice Portal) 콜백 서비스 구축에서 대기열에 있는 동안 통화 끊김 문제를 해결하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- CVP 통화 서버
- CVP VXML(Voice Extensible Markup Language) 서버
- CVP Call Studio 애플리케이션
- VXML 게이트웨이
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 버전을 기반으로 합니다.
- CVP 10.5(1)
- CVP Call Studio 10.5(1)
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문제
CVP 콜백 서비스 구축에서는 원래 발신자가 콜백된 후 발신자가 상담원을 대기열에서 기다리는 동안 통화가 끊어집니다.
문제 해결
1단계. CVP VXML 서버의 CallbackWait 및 CallbackQueue 응용 프로그램에서 ActivityLogs를 수집합니다. 다음 디렉토리에서 이러한 로그를 찾을 수 있습니다.
C:\Cisco\CVP\VXMLServer\applications\CallBackWait\logs\ActivityLog\및 C:\Cisco\CVP\VXMLServer\applications\CallBackQueue\logs\ActivityLog\입니다.
2단계. CallbackQueue ActivityLogs에서 잘못된 호출을 찾습니다. 특정 타임스탬프에 대한 잘못된 호출을 찾기 위해 오류 또는 경고를 검색할 수 있습니다.
코드 조각 콜백 대기열 작업 로그:
10.85.137.68.1469202885038.5788.CallbackQueue_custom,07/22/2016 11:59:24.656,Queue1,element,warning,A session has timed out after 3 minutes. This is most likely caused by a start of call class or action element at the top of the callflow not completing before the voice browser's fetch timeout occurred. To resolve it ensure this class executes in a timely manner or run it in the background. Session timeouts may also occur under high load or if there are issues with a load balancer or voice browser.
10.85.137.68.1469202885038.5788.CallbackQueue_custom,07/22/2016 11:59:24.656,Queue1,custom,Callback_Leave_Queue,ELEMENT_ENTRY
10.85.137.68.1469202885038.5788.CallbackQueue_custom,07/22/2016 11:59:24.656,Queue1,custom,Callback_Leave_Queue,ELEMENT_EXIT
10.85.137.68.1469202885038.5788.CallbackQueue_custom,07/22/2016 11:59:24.656,,end,how,app_session_complete
10.85.137.68.1469202885038.5788.CallbackQueue_custom,07/22/2016 11:59:24.656,,end,result,timeout
3단계. ActivityLogs(작업 로그)에서 볼 수 있듯이 세션이 시간 초과되었음을 나타내는 경고 메시지가 나타납니다. 이는 VXML 게이트웨이 로그에서 badfetch 오류로 보고됩니다.
4단계. VXML 서버에서 Tomcat 로그를 수집합니다. Tomcat 로그는 C:\Cisco\CVP\VXMLServer\Tomcat\logs 디렉토리에서 찾을 수 있습니다.
java.lang.NullPointerException
at org.apache.coyote.http11.InternalNioOutputBuffer.flushBuffer(InternalNioOutputBuffer.java:240)
at org.apache.coyote.http11.InternalNioOutputBuffer.endRequest(InternalNioOutputBuffer.java:128)
at org.apache.coyote.http11.AbstractHttp11Processor.endRequest(AbstractHttp11Processor.java:1586)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1022)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1600)
Tomcat 서버 로그에서 볼 수 있듯이 NIO(Non-blocking Input/Output)에는 null 포인터 예외가 있습니다.
참고: NIO는 집중적인 I/O(Input/Output) 작업에 사용되는 JAVA API(Application Programming Interface) 컬렉션입니다.
5단계. CVP VXML 서버와 CVP VXML 게이트웨이 간의 네트워크 연결을 확인합니다. 대부분의 시나리오에서 이 Tomcat 오류가 보고되면 VXML 게이트웨이와 CVP VXML 서버는 서로 다른 서브넷에 있습니다.
솔루션
1단계. fetchtimeout이 최소 60초로 구성되어 있는지 확인합니다. fetchtimeout을 구성하지 않은 경우 다음 단계를 수행합니다.
- VoiceXML 속성 fetchtimeout을 루트 문서에 추가합니다.
- Unified Call Studio에서 원하는 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
- Call Studio - Root Doc Settings에서 선택합니다.
- VoiceXML 속성에서 fetchtimeout을 입력하고 값에서 원하는 시간 제한을 입력합니다. 예를 들어 60초에는 60초를 입력합니다
2단계. useSendfile="false"를 포함하도록 Tomcat server.xml 파일을 수정합니다. 이 파일은 C:\Cisco\CVP\VXMLServer\Tomcat\conf\ 디렉터리에서 찾을 수 있습니다.
예를 들면 다음과 같습니다.
<Connector port="7000" useSendfile="false" redirectPort="7443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpHeaderSize="8192" executor="tomcatThreadPool" acceptCount="1500"/>
<!-- A "Connector" using the shared thread pool-->
<!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation -->
참고: 이는 Tomcat 문제이며 CVP 제품에서 기인하지 않습니다. 자세한 내용은 CSCus07896을 참조하십시오.
3단계. 서로 다른 서브넷을 사용할 때 패킷 지연을 해결하려면 Windows 레지스트리 키인 TcpAckFrequency를 1로 변경하는 것이 좋습니다.
참고:이 권장 사항은 다른 서브넷을 사용하는 CVP 솔루션의 네트워크 문제(있는 경우)를 해결하는 것입니다. 자세한 내용은 CSCuq07550을 참조하십시오.