目錄

簡介

必要條件

採用元件

背景資訊

VVB消息

步驟1. VVB從CVP接收SIP INVITE並完成交換SIP消息。

步驟2. VVB從本地讀取bootstrap.vxml。

步驟3. VVB將CALL_NEW傳送到CVP。

步驟4.新的TCP將VVB連線到CVP VXML伺服器，並呼叫CVP應用程式。

步驟5. VVB呼叫應用程式，獲取VXML文檔。

步驟6. VVB傳送音訊檔案的POST查詢。

步驟7. VVB讀取音訊檔案並檢查音訊檔案是否被修改。

步驟8. VVB播放音訊檔案。

步驟9. VVB在成功獲取音訊檔案後傳送POST查詢並關閉此TCP會話。

步驟10. VVB從CVP接收BYE並完成此呼叫。

簡介

本檔案介紹思科虛擬化語音瀏覽器(VVB)上的訊息流程以及全面之通話流程。

必要條件

本文件沒有特定需求。

採用元件

- VVB版本11.6

- 思科整合客戶語音入口網站(CVP)版本11.6

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響

背景資訊

呼叫流：

入口網關> CVP >智慧聯絡人管理(ICM)>返回VRU標籤> CVP > VVB

如圖所示，它是綜合呼叫流。

如圖所示，本檔案將更著重說明訊息的VVB部分。

VVB消息

步驟1. VVB從CVP接收SIP INVITE並完成交換SIP消息。

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

步驟2. VVB從本地讀取bootstrap.vxml。

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

步驟3. VVB將CALL_NEW傳送到CVP。

然後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 FOR 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>

步驟4.新的TCP將VVB連線到CVP VXML伺服器，並呼叫CVP應用程式。

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&amp;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>

步驟5. VVB呼叫應用程式，獲取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正常

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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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

步驟6. VVB傳送音訊檔案的POST查詢。

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正常

資料包捕獲：  [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&amp;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>

步驟7. VVB讀取音訊檔案並檢查音訊檔案是否被修改。

If-None-Match:W/"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

步驟8. VVB播放音訊檔案。

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

步驟9. VVB在成功獲取音訊檔案後傳送POST查詢並關閉此TCP會話。

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&amp;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>

步驟10. VVB從CVP接收BYE並完成此呼叫。

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.