此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍具有复杂呼叫流程的思科虚拟化语音浏览器(VVB)上的消息流。
本文档没有任何特定的要求。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解任何命令的潜在影响
呼叫流:
入口网关> CVP >智能联系管理(ICM)>返回VRU标签> CVP > VVB
如图所示,它是全面的呼叫流。
如图所示,本文档将更多地关注消息的VVB部分。
256317: Oct 23 10:10:36.668 AEST %MIVR-JASMIN-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] NEW_CALL, GUCID=B42C468000010000000000650851430A; GUID=3022800512-0000065536-0000000101-0139543306; CallId=B42C468000010000000000650851430A-150871535521622@10.66.75.49; URI=sip:888811111139@10.66.75.62;transport=tls 256334: Oct 23 10:10:36.719 AEST %MIVR-JASMIN-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] SIP-ltp92-88881111*, State=ALERTED: Sending 200 OK response. 256335: Oct 23 10:10:36.785 AEST %MIVR-JASMIN-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] SIP-ltp92-88881111*, State=ALERTED: Processing ACK
256398: Oct 23 10:10:36.794 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: file:/opt/cisco/uccx/Documents/System/bootstrap.vxml 256401: Oct 23 10:10:36.795 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Successfully fetched bytes: 0, duration(s): 0.001, URI: file:/opt/cisco/uccx/Documents/System/bootstrap.vxml
然后,CVP发送到ICM:REQUEST_INSTRUCTION,ICM然后将应用信息传递给CVP。
256469: Oct 23 10:10:36.809 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Browser.makeRequest(): got encoded uri=http://10.66.75.49:7000/CVP/Server?MSG_TYPE=CALL_NEW&CALL_DNIS=888811111139&CALL_ANI=sip%3A60006099%4010.66.75.49%3A5061%3Btransport%3Dtls&ERROR_CODE=0&RECOVERY_VXML=crtp%3A%2FSDocuments%2FRecovery.vxml&CLIENT_TYPE=IOS&CALL_ID=B42C468000010000000000650851430A&CALL_LEGID=B42C468000010000000000650851430A-150871535521622%4010.66.75.49&CALL_UUI=&VERSION=Voice_Browser_11_6&PRIMARY=10.66.75.49
数据包捕获: [PSH,ACK] VVB到CVP(7000端口)
GET /CVP/Server?MSG_TYPE=CALL_NEW&CALL_DNIS=888811111139&CALL_ANI=sip%3A60006099%4010.66.75.49%3A5061%3Btransport%3Dtls&ERROR_CODE=0&RECOVERY_VXML=crtp%3A%2FSDocuments%2FRecovery.vxml&CLIENT_TYPE=IOS&CALL_ID=B42C468000010000000000650851430A&CALL_LEGID=B42C468000010000000000650851430A-150871535521622%4010.66.75.49&CALL_UUI=&VERSION=Voice_Browser_11_6&PRIMARY=10.66.75.49 HTTP/1.1 User-Agent: Cisco Voice Browser/1.0 (Cache activated) Accept: text/vxml, application/vxml, application/vxml+xml, *; q=.2, */*; q=.2 Host: 10.66.75.49:7000 Connection: keep-alive
VVB收到200 OK的FETCH: [PSH,ACK] CVP(7000端口)到VVB
256475: Oct 23 10:10:36.853 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: HTTP 200 OK
数据包捕获:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Transfer-Encoding: chunked Date: Sun, 22 Oct 2017 23:35:55 GMT
VVB成功获取,并获取CVP应用信息
src="http://10.66.75.48:7000/CVP/en-us/../Server" namelist="application callid _dnis _ani " <var name="application" expr="'HelloWorld'"
256479: Oct 23 10:10:36.853 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Successfully fetched bytes: 0, duration(s): 0.044, URI: http://10.66.75.49:7000/CVP/Server?MSG_TYPE=CALL_NEW&CALL_DNIS=888811111139&CALL_ANI=sip%3A60006099%4010.66.75.49%3A5061%3Btransport%3Dtls&ERROR_CODE=0&RECOVERY_VXML=crtp%3A%2FSDocuments%2FRecovery.vxml&CLIENT_TYPE=IOS&CALL_ID=B42C468000010000000000650851430A&CALL_LEGID=B42C468000010000000000650851430A-150871535521622%4010.66.75.49&CALL_UUI=&VERSION=Voice_Browser_11_6&PRIMARY=10.66.75.49
CVP发送VXML文档: [ACK]CVP(7000端口)到VVB
256480: Oct 23 10:10:36.856 AEST %MIVR-SS_VB-7-UNK:Content of VXML Document: <?xml version="1.0" encoding="iso-8859-1"?> <vxml version="2.0"> <var name="MSG_TYPE" expr="'CALL_RESULT'" /> <var name="CALL_ID" expr="'B42C468000010000000000650851430A'" /> <var name="CALL_SEQ_NUM" expr="1" /> <var name="ERROR_CODE" expr="0" /> <var name="CALLCED" /> <var name="FROM_EXTVXML0" /> <var name="FROM_EXTVXML1" /> <var name="FROM_EXTVXML2" /> <var name="FROM_EXTVXML3" /> <var name="PODID" /> <var name="DEBUG" expr="1" /> <property name="com.cisco.media-logging-id" value="'B42C468000010000000000650851430A'" /> <property name="fetchaudiodelay" value="2s" /> <property name="fetchaudiominimum" value="5s" /> <form id="GS" scope="dialog"> <property name="com.cisco.tts-server" value="rtsp://tts-en-us/synthesizer"/> <property name="com.cisco.asr-server" value="rtsp://asr-en-us/recognizer"/> <var name="application" expr="'HelloWorld'"/> <var name="callid" expr="'B42C46800001000000000065085143'"/> <var name="_dnis" expr="'7001'"/> <var name="_ani" expr="'60006099'"/> <subdialog name="Server" src="http://10.66.75.48:7000/CVP/en-us/../Server" namelist="application callid _dnis _ani "> <filled> <assign name="document.FROM_EXTVXML0" expr="Server.FromExtVXML0"/> <assign name="document.FROM_EXTVXML1" expr="Server.FromExtVXML1"/> <assign name="document.FROM_EXTVXML2" expr="Server.FromExtVXML2"/> <assign name="document.FROM_EXTVXML3" expr="Server.FromExtVXML3"/> <assign name="document.PODID" expr="Server.PodId"/> <assign name="document.CALLCED" expr="Server.caller_input"/> <if cond="Server.caller_input == 'system_unavailable'"> <assign name="ERROR_CODE" expr="40"/> <elseif cond="Server.caller_input == 'app_error'"/> <assign name="ERROR_CODE" expr="41"/> <elseif cond="Server.caller_input == 'app_hangup'"/> <assign name="ERROR_CODE" expr="42"/> <elseif cond="Server.caller_input == 'suspended'"/> <assign name="ERROR_CODE" expr="43"/> <elseif cond="Server.caller_input == 'no_session_error'"/> <assign name="ERROR_CODE" expr="44"/> </if> <goto next="#TrySubmit"/> </filled> </subdialog> <!-- Event Handling --> <catch event="telephone.disconnect.hangup"> <assign name="ERROR_CODE" expr="1"/> <goto next="#TrySubmit"/> </catch> <catch event="connection.disconnect.hangup"> <assign name="ERROR_CODE" expr="1"/> <goto next="#TrySubmit"/> </catch> <catch event="telephone.disconnect"> <assign name="ERROR_CODE" expr="1"/> <goto next="#TrySubmit"/> </catch> <catch event="connection.disconnect"> <assign name="ERROR_CODE" expr="1"/> <goto next="#TrySubmit"/> </catch> <catch event="error.badfetch"> <assign name="ERROR_CODE" expr="9"/> <if cond="DEBUG == '1'"> <log> Media Fetch Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event="com.audium.error.badfetch"> <assign name="ERROR_CODE" expr="45"/> <if cond="DEBUG == '1'"> <log> Media Fetch Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event="error.semantic"> <assign name="ERROR_CODE" expr="10"/> <if cond="DEBUG == '1'"> <log> Semantic Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.unsupported.format"> <assign name="ERROR_CODE" expr="11"/> <if cond="DEBUG == '1'"> <log> Unsupported Format Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.unsupported.element"> <assign name="ERROR_CODE" expr="12"/> <if cond="DEBUG == '1'"> <log> Unsupported Element Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event="nomatch"> <assign name="ERROR_CODE" expr="16" /> <goto next="#TrySubmit"/> </catch> <noinput> <assign name="ERROR_CODE" expr="17" /> <goto next="#TrySubmit"/> </noinput> <catch event="com.cisco.isn.session.disconnect.abnormal"> <assign name="ERROR_CODE" expr="27"/> <goto next="#TrySubmit"/> </catch> <catch event="telephone.disconnect.hangup.forced"> <assign name="ERROR_CODE" expr="27"/> <goto next="#TrySubmit"/> </catch> <catch event = "com.cisco.isn.session.disconnect.error"> <assign name="ERROR_CODE" expr="28"/> <goto next="#TrySubmit"/> </catch> <catch event="error.unsupported.language"> <assign name="ERROR_CODE" expr="30"/> <if cond="DEBUG == '1'"> <log> Unsupported Language Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.com.cisco.media.resource.unavailable.asr"> <assign name="ERROR_CODE" expr="31"/> <if cond="DEBUG == '1'"> <log> ASR Media Resource Unavailable Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.com.cisco.media.resource.unavailable.tts"> <assign name="ERROR_CODE" expr="32"/> <if cond="DEBUG == '1'"> <log> TTS Media Resource Unavailable Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.com.cisco.media.resource.failure.asr"> <assign name="ERROR_CODE" expr="31"/> <if cond="DEBUG == '1'"> <log> ASR Media Resource Failure Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.com.cisco.media.resource.failure.tts"> <assign name="ERROR_CODE" expr="32"/> <if cond="DEBUG == '1'"> <log> TTS Media Resource Failure Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error.com.cisco.media.resource"> <assign name="ERROR_CODE" expr="33"/> <if cond="DEBUG == '1'"> <log> General Media Resource Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> <catch event = "error"> <assign name="ERROR_CODE" expr="34"/> <if cond="DEBUG == '1'"> <log> General Error: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="#TrySubmit"/> </catch> </form> <form id="TrySubmit"> <var name="TryNum" expr="1" /> <var name="MaxTries" expr="1" /> <!--Event Handling --> <catch event="error.badfetch"> <if cond="TryNum == MaxTries"> <if cond="DEBUG == '1'"> <log> Error: Exceeded Retries to Application Server. Going to Recovery VXML: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="crtp:/SDocuments/Recovery.vxml"/> </if> <assign name="TryNum" expr="TryNum + 1"/> <if cond="DEBUG == '1'"> <log> Retrying Application Server: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <submit next= "/CVP/Server" namelist="MSG_TYPE CALL_ID CALL_SEQ_NUM ERROR_CODE CALLCED FROM_EXTVXML0 FROM_EXTVXML1 FROM_EXTVXML2 FROM_EXTVXML3 PODID" fetchtimeout="7s"/> </catch> <catch event = "error"> <if cond="DEBUG == '1'"> <log> General Error encountered when trying to contact Application Server. Going to Recovery VXML: CallID: <value expr="CALL_ID"/> : CallSeqNum: <value expr="CALL_SEQ_NUM"/> </log> </if> <goto next="crtp:/SDocuments/Recovery.vxml"/> </catch> <catch event="telephone.disconnect.hangup"> <assign name="ERROR_CODE" expr="1"/> <submit next= "/CVP/Server" namelist="MSG_TYPE CALL_ID CALL_SEQ_NUM ERROR_CODE CALLCED FROM_EXTVXML0 FROM_EXTVXML1 FROM_EXTVXML2 FROM_EXTVXML3 PODID" fetchtimeout="7s"/> </catch> <catch event="connection.disconnect.hangup"> <assign name="ERROR_CODE" expr="1"/> <submit next= "/CVP/Server" namelist="MSG_TYPE CALL_ID CALL_SEQ_NUM ERROR_CODE CALLCED FROM_EXTVXML0 FROM_EXTVXML1 FROM_EXTVXML2 FROM_EXTVXML3 PODID" fetchtimeout="7s"/> </catch> <!--submit next block --> <block> <submit next= "/CVP/Server" namelist="MSG_TYPE CALL_ID CALL_SEQ_NUM ERROR_CODE CALLCED FROM_EXTVXML0 FROM_EXTVXML1 FROM_EXTVXML2 FROM_EXTVXML3 PODID" fetchtimeout="7s"/> </block> </form> </vxml>
256573: Oct 23 10:10:36.871 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: http://10.66.75.48:7000/CVP/en-us/../Server?application=HelloWorld&callid=B42C46800001000000000065085143&_dnis=7001&_ani=60006099
数据包捕获: [PSH,ACK] VVB到CVP [7000端口]:
GET /CVP/en-us/../Server?application=HelloWorld&callid=B42C46800001000000000065085143&_dnis=7001&_ani=60006099 HTTP/1.1 User-Agent: Cisco Voice Browser/1.0 (Cache activated) Accept: text/vxml, application/vxml, application/vxml+xml, *; q=.2, */*; q=.2 Host: 10.66.75.48:7000 Connection: keep-alive
CVP向VVB发送200 OK: [PSH,ACK] CVP(7000端口)到VVB
256576: Oct 23 10:10:36.881 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: HTTP 200 OK
数据包捕获:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=32868A579F1F48F50A6CC362EBF3F256; Path=/CVP/; HttpOnly Content-Type: text/xml;charset=UTF-8 Transfer-Encoding: chunked Date: Sun, 22 Oct 2017 23:35:55 GMT
CVP发送VXML文档:calling_into=HelloWorld
256581: Oct 23 10:10:36.881 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Successfully fetched bytes: 0, duration(s): 0.01, URI: http://10.66.75.48:7000/CVP/en-us/../Server?application=HelloWorld&callid=B42C46800001000000000065085143&_dnis=7001&_ani=60006099 http://10.66.75.48:7000/CVP/en-us/../Server?application=HelloWorld&callid=B42C46800001000000000065085143&_dnis=7001&_ani=60006099 256582: Oct 23 10:10:36.881 AEST %MIVR-SS_VB-7-UNK:Content of VXML Document: <?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" application="/CVP/Server?audium_root=true&calling_into=HelloWorld"> <catch event="error"> <var name="audium_action" expr="'custom_disconnect'" /> <var name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action" /> </catch> <form> <block> <assign name="audium_vxmlLog" expr="''" /> <submit next="/CVP/Server" method="post" namelist="audium_vxmlLog" /> </block> </form> </vxml>
256606: Oct 23 10:10:36.884 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Browser.makeRequest(): got encoded uri=http://10.66.75.48:7000/CVP/Server?audium_root=true&calling_into=HelloWorld
数据包捕获: [PSH,ACK] VVB到CVP(7000端口)
GET /CVP/Server?audium_root=true&calling_into=HelloWorld HTTP/1.1 Cookie: JSESSIONID=32868A579F1F48F50A6CC362EBF3F256; HttpOnly= User-Agent: Cisco Voice Browser/1.0 (Cache activated) Accept: text/vxml, application/vxml, application/vxml+xml, *; q=.2, */*; q=.2 Host: 10.66.75.48:7000 Connection: keep-alive
CVP发送200 OK
256613: Oct 23 10:10:36.896 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: HTTP 200 OK
数据包捕获: [PSH,ACK] CVP到VVB
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=UTF-8 Transfer-Encoding: chunked Date: Sun, 22 Oct 2017 23:35:55 GMT
CVP发送VXML文档: [ACK] CVP(7000端口)到VVB
256617: Oct 23 10:10:36.896 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Successfully fetched bytes: 0, duration(s): 0.012, URI: http://10.66.75.48:7000/CVP/Server?audium_root=true&calling_into=HelloWorld 256618: Oct 23 10:10:36.901 AEST %MIVR-SS_VB-7-UNK:Content of VXML Document: <?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0"> <script><![CDATA[function getElapsedTime(startTime) { var numMilliseconds = new Date().getTime(); return numMilliseconds - startTime; }]]></script> <property name="universals" value="help" /> <var name="audium_vxmlLog" expr="''" /> <var name="audium_element_start_time_millisecs" expr="0" /> <var name="cisco_vxml_error_count" expr="0" /> <var name="audium_type" /> <catch event="vxml.session.error"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="telephone.disconnect.transfer"> <var name="audium_action" expr="'call_transfer'" /> <assign name="audium_type" expr="'telephone.disconnect.transfer'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action audium_vxmlLog" /> </catch> <catch event="telephone.disconnect.hangup"> <var name="audium_action" expr="'hangup'" /> <assign name="audium_type" expr="'telephone.disconnect'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action audium_vxmlLog" /> </catch> <catch event="telephone.disconnect"> <var name="audium_action" expr="'hangup'" /> <assign name="audium_type" expr="'telephone.disconnect'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action audium_vxmlLog" /> </catch> <catch event="help"> <throw event="nomatch" /> </catch> <catch event="error.unsupported.object"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.unsupported.language"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.unsupported.format"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.unsupported.element"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.unsupported.builtin"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.unsupported"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.semantic"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.noauthorization"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.eventhandler.notfound"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.connection.noroute"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.connection.noresource"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.connection.nolicense"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.connection.noauthorization"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.connection.baddestination"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.condition.baddestination"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.resource.failure.tts"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.resource.failure.asr"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.media.resource.unavailable"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.handoff.failure"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.callhandoff.failure"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.aaa.authorize.failure"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.com.cisco.aaa.authenticate.failure"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.badfetch.https"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.badfetch.http"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error.badfetch"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="error"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="disconnect.com.cisco.handoff"> <if cond=" ( cisco_vxml_error_count >= 3 ) "> <var name="caller_input" expr="'system_unavailable'" /> <return namelist="caller_input" /> </if> <var name="audium_action" expr="'error'" /> <assign name="audium_type" expr="_event" /> <var name="audium_message" expr="_message" /> <assign name="cisco_vxml_error_count" expr="cisco_vxml_error_count + 1" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_message audium_action audium_vxmlLog" /> </catch> <catch event="connection.disconnect.transfer"> <var name="audium_action" expr="'call_transfer'" /> <assign name="audium_type" expr="'connection.disconnect.transfer'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action audium_vxmlLog" /> </catch> <catch event="connection.disconnect.hangup"> <var name="audium_action" expr="'hangup'" /> <assign name="audium_type" expr="'connection.disconnect'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action audium_vxmlLog" /> </catch> <catch event="connection.disconnect"> <var name="audium_action" expr="'hangup'" /> <assign name="audium_type" expr="'connection.disconnect'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action audium_vxmlLog" /> </catch> <catch event="com.audium.vxml.event"> <var name="audium_action" expr="'vxml_event'" /> <var name="audium_error" expr="_message" /> <assign name="audium_type" expr="_message" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_error audium_action" /> </catch> <catch event="com.audium.error"> <var name="audium_action" expr="'custom_disconnect'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action" /> </catch> <catch event="com.audium.disconnect"> <var name="audium_action" expr="'custom_disconnect'" /> <assign name="audium_type" expr="'disconnect.audium'" /> <submit next="/CVP/Server" method="post" namelist="audium_type audium_action" /> </catch> </vxml
256695: Oct 23 10:10:36.914 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: http://10.66.75.48:7000/CVP/Server 256696: Oct 23 10:10:36.914 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Setting cookie : JSESSIONID=32868A579F1F48F50A6CC362EBF3F256; HttpOnly=
数据包捕获: [PSH,ACK] VVB到CVP(7000端口)
POST /CVP/Server HTTP/1.1 User-Agent: Cisco Voice Browser/1.0 Accept: text/vxml, application/vxml, application/vxml+xml, *; q=.2, */*; q=.2 Content-Type: application/x-www-form-urlencoded Cookie: JSESSIONID=32868A579F1F48F50A6CC362EBF3F256; HttpOnly= Host: 10.66.75.48:7000 Connection: keep-alive Content-Length: 15
CVP发送VVB 200 OK
数据包捕获: [PSH,ACK] CVP到VVB
audium_vxmlLog=HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=UTF-8 Transfer-Encoding: chunked Date: Sun, 22 Oct 2017 23:35:55 GM
CVP向VVB内容发送POST查询结果,其中包含音频文件名和源路径。
<audio src="https://www.cisco.com/CVP/audio/helloworld_audio.wav">You have successfully installed the Cisco Unified V X M L server.</audio>
VVB日志:
256714: Oct 23 10:10:36.919 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Successfully fetched bytes: 0, duration(s): 0.005, URI: http://10.66.75.48:7000/CVP/Server 256716: Oct 23 10:10:36.919 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Content of POST query: audium_vxmlLog= 256717: Oct 23 10:10:36.920 AEST %MIVR-SS_VB-7-UNK:Content of VXML Document: <?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" application="/CVP/Server?audium_root=true&calling_into=HelloWorld"> <form id="audium_start_form"> <block> <assign name="audium_vxmlLog" expr="''" /> <assign name="audium_element_start_time_millisecs" expr="new Date().getTime()" /> <goto next="#start" /> </block> </form> <form id="start"> <block> <prompt bargein="true"> <audio src="https://www.cisco.com/CVP/audio/helloworld_audio.wav">You have successfully installed the Cisco Unified V X M L server.</audio> </prompt> <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 'initial_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" /> <submit next="/CVP/Server" method="post" namelist="audium_vxmlLog" /> </block> </form> </vxml>
If-None-Match:带“68192-1468638242000”(来自数据包捕获)
VVB日志:
256798: Oct 23 10:10:36.923 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: http://10.66.75.48:7000/CVP/audio/helloworld_audio.wav
数据包捕获: [PSH,ACK] VVB到CVP(7000端口)
GET /CVP/audio/helloworld_audio.wav HTTP/1.1 Cookie: JSESSIONID=32868A579F1F48F50A6CC362EBF3F256; HttpOnly= User-Agent: Cisco Voice Browser/1.0 (Cache activated) Accept: *, */* If-None-Match: W/"68192-1468638242000" Cache-Control: max-age=0 Host: 10.66.75.48:7000 Connection: keep-alive If-Modified-Since: Sat, 16 Jul 2016 03:04:02 GMT
数据包: CVP到VVB确认音频文件未修改
HTTP/1.1 304 Not Modified (from packet capture) HTTP Response is from Cache (VVB log )
VVB日志:
256800: Oct 23 10:10:36.931 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: HTTP 200 OK 256801: Oct 23 10:10:36.931 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Browser.processHttpResponse() hc is CachedHttpURLConnection 256802: Oct 23 10:10:36.931 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: HTTP Response is from Cache
数据包捕获: [PSH,ACK] CVP到VVB
HTTP/1.1 304 Not Modified Server: Apache-Coyote/1.1 ETag: W/"68192-1468638242000" Date: Sun, 22 Oct 2017 23:35:55 GMT
256805: Oct 23 10:10:36.931 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Play: http://10.66.75.48:7000/CVP/audio/helloworld_audio.wav
256828: Oct 23 10:10:36.933 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Browser.makeRequest(): else branch 256829: Oct 23 10:10:36.934 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: http://10.66.75.48:7000/CVP/Server
数据包捕获: [PSH,ACK]VVB到CVP(7000端口)
POST /CVP/Server HTTP/1.1 User-Agent: Cisco Voice Browser/1.0 Accept: text/vxml, application/vxml, application/vxml+xml, *; q=.2, */*; q=.2 Content-Type: application/x-www-form-urlencoded Cookie: JSESSIONID=32868A579F1F48F50A6CC362EBF3F256; HttpOnly= Host: 10.66.75.48:7000 Connection: keep-alive Content-Length: 74 audium_vxmlLog=%7C%7C%7Caudio_group%24%24%24initial_audio_group%5E%5E%5E11
CVP发送到VVB 200 OK
数据包捕获:[PSH,ACK] CVP(7000端口)到VVB
200 OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=UTF-8 Transfer-Encoding: chunked Date: Sun, 22 Oct 2017 23:35:55 GMT
256846: Oct 23 10:10:36.937 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Fetch: HTTP 200 OK 256848: Oct 23 10:10:36.937 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Successfully fetched bytes: 0, duration(s): 0.004, URI: http://10.66.75.48:7000/CVP/Server 256849: Oct 23 10:10:36.938 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] fetchVxmlDoc :: Closing output stream
CVP发送到VVB: CVP返回POST查询内容:
256850: Oct 23 10:10:36.938 AEST %MIVR-SS_VB-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] Content of POST query: audium_vxmlLog=%7C%7C%7Caudio_group%24%24%24initial_audio_group%5E%5E%5E11 256851: Oct 23 10:10:36.938 AEST %MIVR-SS_VB-7-UNK:Content of VXML Document: <?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" application="/CVP/Server?audium_root=true&calling_into=HelloWorld"> <catch event="error.com.cisco.callhandoff.failure"> <cisco-typeaheadflush /> <submit next="/CVP/Server" method="post" namelist="audium_vxmlLog" /> </catch> <form id="audium_start_form"> <block> <assign name="audium_vxmlLog" expr="''" /> <assign name="audium_element_start_time_millisecs" expr="new Date().getTime()" /> <goto next="#start" /> </block> </form> <form id="start"> <object name="dummyobj" classid="builtin://com.cisco.callhandoff"> <param name="return" expr="true" valuetype="data" /> <param name="app-uri" expr="'builtin://dummyobj'" valuetype="data" /> <filled> <submit next="/CVP/Server" method="post" namelist="audium_vxmlLog" /> </filled> </object> </form> </vxml>
256921: Oct 23 10:10:43.139 AEST %MIVR-JASMIN-7-UNK:[CALLID=B42C468000010000000000650851430A-150871535521622] SIP-ltp92-88881111*, State=CONNECTED: Processing BYE from remote party.