目錄

簡介

必要條件

需求

採用元件

慣例

設定

網路圖表

組態

呼叫流示例

驗證

疑難排解

Debug指令

調試輸出

相關資訊

簡介

語音可擴展標籤語言(VXML)是由全球資訊網聯盟(W3C)定義的標準。 它旨在建立音訊對話，提供合成語音、口語識別、DTMF數字識別以及錄製的口語音訊。VXML伺服器和客戶端使用公認的HTTP協定交換VXML文檔/頁面。

Cisco Voice Portal(CVP)提供可通過電話訪問的智慧互動式語音響應(IVR)應用。CVP部署分為三種型別：

1. 獨立服務

2. CVP通話控制

3. 呼叫隊列和轉接

合成語音和口語/DTMF數字功能由文本到語音轉換(TTS)和自動語音識別伺服器(ASR)提供。 IOS® VXML網關通過媒體資源控制協定(MRCP)與TTS/ASR伺服器通訊。 MRCP(RFC 4463)有兩個版本，即MRCPv1(MRCP over RTSP)和MRCPv2(MRCP over SIP)。

本文檔介紹使用MRCPv2 TTS/ASR伺服器的獨立服務部署中IOS語音XML網關到CVP呼叫的呼叫流程。在CVP VXML伺服器上部署了一個示例藥房應用程式。

必要條件

需求

本文件沒有特定需求。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- IOS VXML網關：Cisco AS5400XM，IOS 12.4(15)T1

- VXML伺服器：CVP 4.0

- ASR/TTS伺服器：倫琴多語音套件7.0

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

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

設定

本節提供用於設定本文件中所述功能的資訊。

註：使用Command Lookup Tool(僅供已註冊客戶使用)可獲取本節中使用的命令的詳細資訊。

網路圖表

本檔案會使用以下網路設定：

組態

本檔案會使用以下設定：

VXML網關配置

!--- Define Hostname to IP Address !---- mapping for ASR and TTS servers

ip host asr-en-us 172.18.110.76

ip host tts-en-us 172.18.110.76

!--- Define the Voice class URI to match !---- the SIP URI of ASR Server in the dial-peer

voice class uri  TTS sip

pattern tts@172.18.110.76

!--- Define the Voice class URI to match !---- the SIP URI of TTS server in the dial-peer

voice class uri  ASR sip

pattern asr@172.18.110.76

!--- Define the amount of maximum memory !---- to used for downloaded prompts

ivr prompt memory 15000

!--- Define the SIP URI of ASR !---- and TTS Server

ivr asr-server sip:asr@172.18.110.76

ivr tts-server sip:tts@172.18.110.76

!--- Configure an application service for !---- CVP VXML CVPSelfServiceBootstrap.vxml

application

service CVPSelfService flash:

CVPSelfServiceBootstrap.vxml

paramspace english language en

paramspace english index 0

paramspace english location flash:

paramspace english prefix en

!--- Configure an application service for !---- CVP VXML CVPSelfService.tcl Script !--- CVPSelfService-app parameter specifies !---- the name of the VXML Application !--- CVPPrimary parameter specifies the !---- IP address of the VXML server

service Pharmacy flash:CVPSelfService.tcl

paramspace english index 0

paramspace english language en

paramspace english location flash:

param CVPSelfService-port 7000

param CVPSelfService-app

GoodPrescriptionRefillApp7

paramspace english prefix en

param CVPPrimaryVXMLServer 172.18.110.75

!--- Specifies the Gateway’s RTP !---- stream to the ASR / TTS to go around the !---- Content Service Switch !---- instead of through the CSS.

mrcp client rtpsetup enable

!--- Specify the maximum memory size !---- for the HTTP Client Cache

http client cache memory pool 15000

!--- Specify the maximum number of file !---- that can be stored in the !---- HTTP Client Cache

http client cache memory file 500

!--- Disable Persistent !---- HTTP Connections

no http client connection persistent

!--- Configure the T1 PRI

controller T1 3/0

framing esf

linecode b8zs

pri-group timeslots 1-24

!--- Configure the ISDN switch !---- type and incoming-voice !---- under the D-channel interface

interface Serial3/0:23

no ip address

encapsulation hdlc

isdn switch-type primary-net5

isdn incoming-voice modem

no cdp enable

! --- Configure a POTS !---- dial-peer that will be used !---- as inbound dial-peer for calls coming ! --- in across the T1 PRI line. !---- The “pharmacy”service !---- is applied under this dial-peer.

dial-peer voice 1 pots

service pharmacy

destination-pattern 5555

direct-inward-dial

port 3/0:D

forward-digits all

!--- Configure a SIP Voip !---- dial-peer that will be used !---- as an outbound dial-peer when the !---Gateway initiates a MRCP overc SIP !---- session to the ASR server. !---- Codec = G711ulaw, DTMF-Relay !---- = RTP-NTE, No Vad

dial-peer voice 5 voip

session protocol sipv2

destination uri ASR

dtmf-relay rtp-nte

codec g711ulaw

no vad

!--- Configure a SIP Voip !---- dial-peer that will be used !---- as an outbound dial-peer when the !---Gateway initiates a MRCP !---- overc SIP session to the TTS server !--- Codec = G711ulaw, DTMF-Relay = RTP-NTE, !---- No Vad

dial-peer voice 6 voip

session protocol sipv2

destination uri TTS

dtmf-relay rtp-nte

codec g711ulaw

no vad

呼叫流示例

本節介紹此配置示例產生的呼叫流。

1. ISDN呼叫通過T1 PRI 3/0到達PSTN/VXML網關。

2. IOS網關將POTS撥號對等體1匹配為此呼叫的入站撥號對等體。

3. IOS網關將呼叫控制交給與撥號對等體1關聯的藥房服務。

4. 與藥房服務關聯的CVP VXML/TCL指令碼向VXML伺服器傳送HTTP GET請求。

5. VXML伺服器返回200 OK響應。此響應包含VXML文檔/頁面。

6. IOS網關執行VXML文檔。

7. 如果VXML文檔指定了音訊提示的URL，則IOS網關將下載音訊檔案並播放提示。

8. 如果VXML文檔指定了音訊提示的文本，則IOS網關使用撥號對等體5與tts@172.18.110.76（TTS伺服器）建立SIP會話。建立SIP會話後，使用SIP INVITE的SDP 200 OK響應中提供的TCP埠號開啟與TTS伺服器的TCP連線。此TCP連線用於在IOS網關和TTS伺服器之間交換MRCP消息，例如SPEAK、SPEAK-COMPLETE。

TTS伺服器將G.711ulaw RTP音訊流傳送到網關在SIP INVITE的SDP中提供的IP地址和UDP埠號。

9. 如果VXML文檔指定網關以識別DTMF數字和/或口語，則IOS網關會使用撥號對等體6與asr@172.18.110.76（ASR伺服器）建立SIP會話。建立SIP會話後，它會使用SIP INVITE的200 OK響應的SDP中提供的TCP埠號開啟與ASR伺服器的TCP連線。此TCP連線用於在IOS網關和ASR伺服器之間交換MRCP消息，例如DEFINE GRAMMAR、COMPLETE、RECOGNITION和RECOGNITION-COMPLETE。

IOS VXML網關將G.711ulaw RTP音訊流傳送到ASR在SIP 200 OK響應的SDP中提供的IP地址和UDP埠號。IOS VXML網關將PSTN使用者輸入的數字作為RTP-NTE事件傳送到ASR伺服器。

10. 執行VXML文檔後，網關將傳送HTTP POST請求（包含一組引數），如VXML文檔/頁面的<submit>標籤中所指定。

11. 對於伺服器傳送的每個VXML文檔，都會執行步驟6 - 10。

12. 當VXML應用程式完成向呼叫方提供的服務時，它會傳送一個VXML文檔，該文檔在<form>元素中僅包含<exit/>標籤。

13. IOS網關斷開與TTS和ASR伺服器建立的MRCPv2會話的連線。

14. IOS網關會斷開ISDN端的呼叫。

驗證

使用本節內容，確認您的組態是否正常運作。

輸出直譯器工具(僅供已註冊客戶使用)(OIT)支援某些show命令。使用OIT檢視show命令輸出的分析。

- 顯示呼叫活動語音簡介

11F8 : 160 333356110ms.

1 +10 pid:1 Answer 5555 active

dur 00:00:54 tx:1740/300598 rx:364/85472

Tele 3/0:D (160) [3/0.1]

tx:15145/15145/0ms None noise:-52

acom:6  i/0:-32/-64 dBm

Telephony call-legs: 1

SIP call-legs: 0

H323 call-legs: 0

Call agent controlled call-legs: 0

SCCP call-legs: 0

Multicast call-legs: 0

Media call-legs: 0

Total call-legs: 1

- 顯示呼叫活動媒體簡介

11F8 : 163 333360880ms.1

+60 pid:6 Originate

sip:tts@172.18.110.76:5060 active

dur 00:00:44 tx:0/0 rx:2212/353545

IP 172.18.110.76:10000 SRTP:

off rtt:0ms pl:

4485/0ms lost:0/1/0 delay:65/65/65ms

g711ulaw TextRelay: off

media inactive detected:n

media contrl rcvd:

n/a timestamp:n/a

long duration call detected:n

long duration

call duration:n/a timestamp:n/a11F8 :

164 333360890ms.1 +20 pid:5 Originate

sip:asr@172.18.110.76:5060 active

dur 00:00:44 tx:1687/297152 rx:0/0

IP 172.18.110.76:10002 SRTP:

off rtt:0ms

pl:6550/30ms lost:0/2/0 delay:65/65/65ms

g711ulaw TextRelay: off

media inactive detected:n media contrl

rcvd:n/a timestamp:n/a

long duration call detected:n

long duration

call duration:n/a timestamp:n/a

Telephony call-legs: 0

SIP call-legs: 0

H323 call-legs: 0

Call agent controlled call-legs: 0

SCCP call-legs: 0

Multicast call-legs: 0

Media call-legs: 2

Total call-legs: 2

- Show mrcp client session active detail

No Of Active MRCP Sessions: 1

Call-ID: 0xA0 same: 0

--------------------------------------------

Resource Type: Synthesizer

URL: sip:tts@172.18.110.76

Method In Progress: SPEAK

State: S_SYNTH_SPEAKING

Associated CallID: 0xA3

MRCP version: 2.0

Control Protocol: TCP Server IP Address:

172.18.110.76  Port: 51000

Data Protocol: RTP Server IP Address:

172.18.110.76  Port: 10000

Signalling URL: sip:tts@172.18.110.76:5060

Packets Transmitted: 0 (0 bytes)

Packets Received: 2265 (361968 bytes)

ReceiveDelay: 65     LostPackets: 0

--------------------------------------------

--------------------------------------------

Resource Type: Recognizer

URL: sip:asr@172.18.110.76

Method In Progress: RECOGNIZE

State: S_RECOG_RECOGNIZING

Associated CallID: 0xA4

MRCP version: 2.0

Control Protocol: TCP Server IP Address:

172.18.110.76  Port: 51001

Data Protocol: RTP Server IP Address:

172.18.110.76  Port: 10002

Packets Transmitted: 1791 (313792 bytes)

Packets Received: 0 (0 bytes)

ReceiveDelay: 60     LostPackets: 0

- Show voip rtp connections

VoIP RTP active connections :

No. CallId     dstCallId  LocalRTP

RmtRTP LocalIP

RemoteIP

1   163        160        18964

10000  14.1.16.25

172.18.110.76

2   164        160        23072

10002  14.1.16.25

172.18.110.76

Found 2 active RTP connections

- Show http client cache

HTTP Client cached information

==============================

Maximum memory pool allowed for

HTTP Client caching

= 15000 K-bytes

Maximum file size allowed for caching

= 500 K-bytes

Total memory used up for Cache

= 410 Bytes

Message response timeout = 10 secs

Total cached entries     = 1

Total non-cached entries = 0

Cached entries

==============

entry 114,  1 entries

Ref   FreshTime   Age          Size

context

---   ---------   ---          ----

-------

1     86400       48           1505

0

url: http://172.18.110.75/Welcome-1.wav

疑難排解

本節提供的資訊可用於對組態進行疑難排解。

Debug指令

配置IOS網關以在其日誌緩衝區中記錄調試並禁用「日誌控制檯」。

附註：使用 debug 指令之前，請先參閱有關 Debug 指令的重要資訊。

注意：以下命令用於配置網關，以便將調試儲存在網關的日誌緩衝區中：

- service timestamps debug datetime msec

- 服務序列

- 無日誌控制檯

- logging buffered 5000000 debug

- 清除日誌

以下是用於對配置進行故障排除的debug命令：

- debug isdn q931

- debug voip ccapi inout

- debug voip application vxml default

- debug voip application vxml dump

- debug ccsip message

- debug mrcp detail

- debug http client all

- debug voip rtp session nte named-event

調試輸出

本節提供此呼叫流程示例的調試輸出：

1. 網關收到來自PSTN的入站呼叫。

2. 網關與入站撥號對等體1匹配。

3. 該呼叫將被轉接至藥房服務。

4. 呼叫在ISDN端連線。

5. 網關開始執行CVPSelfServiceBootstrap.vxml VoiceXML指令碼。

6. 網關向VXML伺服器傳送HTTP GET請求。

7. 網關收到來自VXML伺服器的200 OK消息。此響應的消息正文包含VXML文檔(1)。 此VXML文檔告知位於媒體伺服器中的網關播放媒體檔案Welcome-1.wav。

8. 網關向媒體伺服器傳送HTTP GET請求以下載Welcome-1.wav檔案。

9. 網關從媒體伺服器收到200 OK並接收HTTP消息正文中Welcome-1.wav的內容。

10. 網關將POST HTTP請求傳送到VXML文檔(1)的「提交」選項中定義的伺服器。

11. 網關收到其POST HTTP請求的200 OK。郵件正文包含VXML文檔(2)。 此VXML文檔告知網關播放「感謝您致電海航藥店」。 請注意，此提示需要由Text to Speech Server合成。

12. 網關按照VXML文檔(2)的「提交」選項中的定義傳送HTTP POST請求。

13. 網關收到HTTP POST請求的200 OK響應。郵件正文包含VXML文檔(3)。 此VXML文檔定義了一個選單提示，告訴呼叫者輸入1或說重新填寫2或說藥劑師。提示由文本到語音伺服器合成。使用自動語音識別器識別輸入（語音/DTMF）。

14. 網關建立用於DTMF/語音識別的語法。一旦網關與ASR伺服器建立會話，這些語法就會傳送到ASR伺服器。

15. 網關執行撥號對等查詢以設定與文本到語音伺服器的SIP會話。出站撥號對等體6匹配。

16. 網關向TTS伺服器傳送SIP邀請。INVITE消息的SDP包含音訊流和MRCPv2應用（語音合成通道）的媒體資訊。

17. 網關執行撥號對等查詢以設定與自動語音識別伺服器的SIP會話。出站撥號對等體5已匹配。

18. 網關向ASR伺服器傳送SIP INVITE。SDP包含音訊流、DTMF中繼和MRCPv2應用（語音錄製通道）的媒體資訊。

19. 網關收到來自ASR伺服器的200 OK響應（針對SIP INVITE）。SIP INVITE消息的SDP指定了以下內容：

- 音訊流的G711ulaw編解碼器、IP地址和RTP埠號

- 此RTP流的direction屬性："recvonly"

- 基於RTP-NTE的DTMF中繼

- 網關用於與ASR伺服器建立MRCPv2會話的TCP埠號(51001)

20. 網關將SIP ACK傳送到ASR伺服器，並在網關和ASR伺服器之間建立用於自動語音識別的SIP會話。

21. 網關向ASR伺服器傳送「DEFINE-GRAMMER」MRCP請求。（此處只顯示一個請求。）

22. 網關收到其DEFINE-GRAMMAR請求的200 COMPLETE響應。

23. 網關收到來自TTS伺服器的200 OK響應（針對SIP INVITE）。SIP INVITE消息的SDP指定了以下內容：

- 音訊流的G711ulaw編解碼器、IP地址和RTP埠號

- 此RTP流的方向屬性："sendonly"

- 基於RTP-NTE的DTMF中繼

- 網關用於與TTS伺服器建立MRCPv2會話的TCP埠號(51000)

24. 網關將SIP ACK傳送到TTS伺服器，並且在網關和TTS伺服器之間建立用於文本到語音的SIP會話。

25. 網關向ASR伺服器傳送「識別」MRCP請求，以開始識別DTMF/口語。

26. ASR伺服器向網關傳送「正在進行」響應（用於識別請求）。

27. Gateway完成Welcome-1.wav媒體檔案的下載，將其儲存在快取中，並向呼叫者播放提示。

28. 網關向TTS伺服器傳送「SPEAK」 MRCP請求以播放「感謝呼叫」提示。

29. TTS伺服器向SPEAK請求傳送「進行中」響應。

30. TTS伺服器在發出「感謝呼叫」提示後傳送一則「SPEAK-COMPLETE」消息。

31. 網關向TTS伺服器傳送「SPEAK」 MRCP請求以播放「選單」提示（輸入1或說Refil/輸入2或說pharmacist）。（未顯示調試輸出。）

32. TTS伺服器傳送IN-PROGRESS， SPEAK-COMPLETE消息並完成提示播放。（未顯示調試輸出。）

33. PSTN呼叫者輸入「1」以選擇重新填寫。網關將此數字作為RTP-NTE事件傳送到ASR伺服器。

34. ASR伺服器向網關傳送「識別完成」消息，通知網關它識別到了所請求的一個事件（在本例中為數字1）。

35. 在從ASR伺服器接收到成功的識別通知後，VXML網關傳送一個HTTP POST請求，如VXML文檔的SUBMIT標籤中所指定(3)。 此POST請求通知VXML伺服器PSTN呼叫方輸入了數字1。

36. 然後VXML伺服器傳送另一個VXML文檔，要求呼叫者在此處輸入處方。（未顯示調試輸出。）

37. 網關向TTS傳送MRCP消息以發出提示。（未顯示調試輸出，但它們類似於步驟28-30。）

38. 網關向ASR傳送MRCP消息，以檢測使用者所說的4位處方編號。（未顯示調試輸出，但是它們類似於步驟25-26。）

39. ASR識別4位處方編號，並向IOS VXML網關傳送「RECOGNITION-COMPLETE」 MRCP消息。

40. 網關通過傳送HTTP POST請求將處方編號通知給VXML伺服器。（未顯示調試輸出，但是它們類似於步驟35。）

41. VXML伺服器傳送VXML頁面以收集取貨時間並通知呼叫方處方已準備好取貨。網關通過與TTS和ASR伺服器的互動執行這些頁面。（未顯示調試輸出。）

42. VXML伺服器傳送的最終VXML文檔僅包含<form>中的<exit\>標籤。這將通知網關終止VXML會話。

43. 網關終止VXML應用程式。

44. 網關斷開與ASR伺服器建立的SIP會話的連線。

45. 網關斷開與TTS伺服器建立的SIP會話的連線。

46. 網關斷開ISDN端呼叫。

來自PSTN的入站呼叫

*Jan 18 03:34:52.735: ISDN Se3/0:23

Q931: RX <- SETUP pd = 8  callref = 0x005A

Bearer Capability i = 0x8090A2

Standard = CCITT

Transfer Capability = Speech

Transfer Mode = Circuit

Transfer Rate = 64 kbit/s

Channel ID i = 0xA98381

Exclusive, Channel 1

Called Party Number i = 0x81, '5555'

Plan:ISDN, Type:Unknown

*Jan 18 03:34:52.735: //-1/2AEE8C2A801C/

CCAPI/cc_api_display_ie_subfields:

cc_api_call_setup_ind_common:

cisco-username=

----- ccCallInfo IE subfields -----

cisco-ani=

cisco-anitype=0

cisco-aniplan=0

cisco-anipi=0

cisco-anisi=0

dest=5555

cisco-desttype=0

cisco-destplan=1

cisco-rdie=FFFFFFFF

cisco-rdn=

cisco-rdntype=-1

cisco-rdnplan=-1

cisco-rdnpi=-1

cisco-rdnsi=-1

cisco-redirectreason=-1   fwd_final_type =0

final_redirectNumber =

hunt_group_timeout =0

入站撥號對等體1已匹配

*Jan 18 03:34:52.735:

//-1/2AEE8C2A801C/

CCAPI/cc_api_call_setup_ind_common:

Interface=0x664B4BA4, Call Info(

Calling Number=,(Calling Name=)(TON=Unknown,

NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

Called Number=5555(TON=Unknown, NPI=ISDN),

Calling Translated=FALSE, Subscriber

Type Str=RegularLine,

FinalDestinationFlag=TRUE,

Incoming Dial-peer=1, Progress

Indication=NULL(0),

Calling IE Present=FALSE,

Source Trkgrp Route Label=,

Target Trkgrp Route Label=,

CLID Transparent=FALSE),

Call Id=-1

呼叫已轉接至藥房服務

*Jan 18 03:34:52.739:

//127/2AEE8C2A801C/CCAPI

/cc_process_call_setup_ind:

>>>>CCAPI handed cid 127 with tag 1 to app

"_ManagedAppProcess_Pharmacy"

*Jan 18 03:34:52.739:

//127/2AEE8C2A801C/CCAPI/ccCallSetupAck:

Call Id=127

呼叫在ISDN端連線

*Jan 18 03:34:52.739:

ISDN Se3/0:23 Q931: TX ->

CONNECT pd = 8  callref =

0x805A

*Jan 18 03:34:52.739:

//127/2AEE8C2A801C/CCAPI/ccCallHandoff:

Silent=FALSE, Application=0x663106C4,

Conference Id=0xFFFFFFFF

*Jan 18 03:34:52.743: //127//VXML:/Open_CallHandoff:

網關開始執行CVPSelfServiceBootstrap.vxml VoiceXML指令碼

*Jan 18 03:34:52.755:

//127/2AEE8C2A801C/VXML:

/vxml_vxml_proc:

<vxml>

URI(abs):flash:

CVPSelfServiceBootstrap.vxml

scheme=flash

path=CVPSelfServiceBootstrap.vxml

base=

URI(abs):flash:

CVPSelfServiceBootstrap.vxml

scheme=flash

path=CVPSelfServiceBootstrap.vxml

lang=none version=2.0

<script>:

*Jan 18 03:34:52.799: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

*Jan 18 03:34:52.863: //127/2AEE8C2A801C/VXML

:/vxml_jse_global_switch:

switch to scope(application)

<var>: namep=handoffstring

expr=session.handoff_string

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var handoffstring=session.

handoff_string)

<var>: namep=application expr=getValue('APP')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var application=getValue('APP'))

<var>: namep=port expr=getValue('PORT')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var port=getValue('PORT'))

<var>: namep=callid expr=getValue('CALLID')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var callid=getValue('CALLID'))

<var>: namep=servername expr=getValue('PRIMARY')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var servername=getValue('PRIMARY'))

<var>: namep=var1 expr=getValue('var1')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var var1=getValue('var1'))

<var>: namep=var2 expr=getValue('var2')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var var2=getValue('var2'))

<var>: namep=var3 expr=getValue('var3')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var var3=getValue('var3'))

<var>: namep=var4 expr=getValue('var4')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var var4=getValue('var4'))

<var>: namep=var5 expr=getValue('var5')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var var5=getValue('var5'))

<var>: namep=status expr=getValue('status')

*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var status=getValue('status'))

<var>: namep=prevapp expr=getValue('prevapp')

*Jan 18 03:34:52.871: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var prevapp=getValue('prevapp'))

<var>: namep=survive expr=getValue('survive')

*Jan 18 03:34:52.871: //127/2AEE8C2A801C/VXML

:/vxml_expr_eval:

expr=(var survive=getValue('survive'))

<var>: namep=handoffExit

網關向VXML伺服器傳送HTTP GET請求

*Jan 18 03:34:52.875:

//127//HTTPC:/httpc_write_stream:

Client write buffer fd(3):

GET /CVP/Server?application=

GoodPrescriptionRefillApp7&callid=

2AEE8C2A-0AFB11D6-801C0013-

803E8C8E&session.connection.remote.uri=555

5&session.connection.local.uri=5555 HTTP/1.1

Host: 172.18.110.75:7000

Content-Type: application/x-www-form-urlencoded

Connection: close

Accept: text/vxml, text/x-vxml, application/vxml,

application/x-vxml, application/voicexml,

application/x-voicexml, text/plain, tex

t/html, audio/basic, audio/wav,

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

網關收到來自VXML伺服器的200 OK消息

此響應的消息正文包含VXML文檔(1)。 VXML文檔告知位於媒體伺服器中的網關播放媒體檔案Welcome-1.wav。

*Jan 18 03:34:52.883: processing server

rsp msg: msg(67CA63A8)

URL:http://172.18.110.75:7000/CVP/

Server?application=GoodPrescription

RefillApp7&callid=2AEE8C2A-0AFB11D6-801C0013

-803E8C8E&session.connection.

remote.uri=5555&session.connection.local.

uri=5555, fd(3):

*Jan 18 03:34:52.883: Request msg:

GET /CVP/Server?application=

GoodPrescriptionRefillApp7&callid=

2AEE8C2A-0AFB11D6-801C0013-803E8C8

E&session.connection.remote.

uri=5555&session

.connection.local.uri=5555 HTTP/1.1

*Jan 18 03:34:52.883:

Message Response Code: 200

*Jan 18 03:34:52.883:

Message Rsp Decoded Headers:

*Jan 18 03:34:52.883:

Date:Mon, 30 Apr 2007 16:58:39 GMT

*Jan 18 03:34:52.883:

Content-Type:text/xml;

charset=ISO-8859-1

*Jan 18 03:34:52.883:

Connection:close

*Jan 18 03:34:52.883:

Set-Cookie:JSESSIONID=

BBCE0F948ADFDB720497F587A7997538;

Path=/CVP

*Jan 18 03:34:52.883: headers:

*Jan 18 03:34:52.883: HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=BBCE0F948ADF

DB720497F587A7997538; Path=/CVP

Content-Type: text/xml;charset=ISO-8859-1

Date: Mon, 30 Apr 2007 16:58:39 GMT

Connection: close

*Jan 18 03:34:52.883: body:

*Jan 18 03:34:52.883: <?xml version="1.0"

encoding="UTF-8"?>

<vxml version="2.0" application=

"/CVP/Server?audium_root=true&amp;

calling_into=GoodPrescriptionRefillApp7"

xml:lang="en-us">

<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="http://172.18.110.75/

Welcome-1.wav" />

</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'initial_audio_group'

+ '^^^'

+ application.getEla

psedTime(audium_element_start_time_millisecs)" />

<submit next="/CVP/Server" method="post"

namelist=" audium_vxmlLog" />

</block>

</form>

</vxml>

網關向媒體伺服器傳送HTTP GET請求以下載Welcome-1.wav檔案

GET /Welcome-1.wav HTTP/1.1

Host: 172.18.110.75

Content-Type:

application/x-www-form-urlencoded

Connection: close

Accept: text/vxml,

text/x-vxml, application/vxml,

application/x-vxml,

application/voicexml,

application/x-voicexml,

text/plain, tex

t/html, audio/basic, audio/wav,

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

網關從媒體伺服器收到200 OK並接收HTTP消息正文中Welcome-1.wav的內容

*Jan 18 03:34:55.647:

//127//HTTPC:/httpc_socket_read:

*Jan 18 03:34:55.647:

read data from the socket 3

: first 400 bytes of data:

HTTP/1.1 200 OK

Content-Length: 26450

Content-Type: audio/wav

Last-Modified:

Mon, 30 Apr 2007 15:36:51 GMT

Accept-Ranges: bytes

ETag: "e0c1445f3d8bc71:2d6"

Server: Microsoft-IIS/6.0

Date: Mon, 30 Apr 2007 16:58:42 GMT

Connection: close

RIFFJg(Unprintable char...)

0057415645666D7420120001010401

F00401F00108000666163744000176700

64617461176700FFFFFF807

FFFFFFF80FFFFFF80F

(other hex information not shown).

網關按照VXML文檔的「提交」選項中的定義向伺服器傳送POST HTTP請求(1)

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 67

Content-Type:

application/x-www-form-urlencoded

Cookie: $Version=0; JSESSIONID=BBCE0F948

ADFDB720497F587A7997538; $Path=/CVP

Connection: close

Accept: text/vxml, text/x-vxml,

application/vxml,

application/x-vxml,

application/voicexml,

application/x-voicexml,

text/plain, tex

t/html, audio/basic, audio/wav,

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

網關收到其POST HTTP請求的200 OK

郵件正文包含VXML文檔(2)。 VXML文檔告知網關播放「感謝您致電海航藥店」。 請注意，此提示需要由Text to Speech Server合成。

*Jan 18 03:34:55.651:

processing server rsp msg:

msg(67CA6960)URL:

http://172.18.110.75:

7000/CVP/Server, fd(4):

*Jan 18 03:34:55.651: Request msg:

POST /CVP/Server HTTP/1.1

*Jan 18 03:34:55.651:

Message Response Code: 200

*Jan 18 03:34:55.651:

Message Rsp Decoded Headers:

*Jan 18 03:34:55.651:

Date:Mon, 30 Apr 2007 16:58:42 GMT

*Jan 18 03:34:55.651:

Content-Type:text/xml;

charset=ISO-8859-1

*Jan 18 03:34:55.651: Connection:close

*Jan 18 03:34:55.651: headers:

*Jan 18 03:34:55.651: HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: text/xml;charset=ISO-8859-1

Date: Mon, 30 Apr 2007 16:58:42 GMT

Connection: close

*Jan 18 03:34:55.655: body:

*Jan 18 03:34:55.655: <?xml version="1.0"

encoding="UTF-8"?>

<vxml version="2.0" application=

"/CVP/Server?audium_root=true&amp;

calling_into=GoodPrescriptionRefillApp7"

xml:lang="en-us">

<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">

Thank you for calling Audium pharmacy.

</prompt>

<assign name="audium_vxmlLog" expr=

"audium_vxmlLog + '|||audio_group$$$'

+ 'initial_audio_group'

+ '^^^' + application.getEla

psedTime(audium_element_start_time_millisecs)" />

<submit next="/CVP/Server" method="post"

namelist=" audium_vxmlLog" />

</block>

</form>

</vxml>

網關按照VXML文檔提交選項中的定義傳送HTTP POST請求(2)

*Jan 18 03:34:55.667:

//127//HTTPC:/httpc_write_stream:

Client write buffer fd(4):

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 67

Content-Type:

application/x-www-form-urlencoded

Cookie: $Version=0; JSESSIONID=

BBCE0F948ADFDB720497F587A7997538;

$Path=/CVP

Connection: close

Accept: text/vxml, text/x-vxml,

application/vxml,

application/x-vxml, application/voicexml,

application/x-voicexml, text/plain, tex

t/html, audio/basic, audio/wav,

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

網關收到HTTP POST請求的200 OK響應

郵件正文包含VXML文檔(3)。 此VXML文檔定義了一個選單提示，告訴呼叫者輸入1或說重新填寫，或輸入2或說藥劑師。提示由文本到語音伺服器合成。輸入（語音/DTMF）通過自動語音識別器識別。

*Jan 18 03:34:57.499:

processing server rsp msg:

msg(67CA6B48)URL:

http://172.18.110.75:7000/CVP/Server, fd(4):

*Jan 18 03:34:57.499: Request msg:

POST /CVP/Server HTTP/1.1

*Jan 18 03:34:57.499:

Message Response Code: 200

*Jan 18 03:34:57.499:

Message Rsp Decoded Headers:

*Jan 18 03:34:57.499:

Date:Mon, 30 Apr 2007 16:58:42 GMT

*Jan 18 03:34:57.499:

Content-Type:text/xml;charset=ISO-8859-1

*Jan 18 03:34:57.499: Connection:close

*Jan 18 03:34:57.499: headers:

*Jan 18 03:34:57.499: HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: text/xml;charset=ISO-8859-1

Date: Mon, 30 Apr 2007 16:58:42 GMT

Connection: close

*Jan 18 03:34:57.499: body:

*Jan 18 03:34:57.499: ... Buffer too large

- truncated to (4096) len.

*Jan 18 03:34:57.499: <?xml version="1.0"

encoding="UTF-8"?>

<vxml version="2.0" application=

"/CVP/Server?audium_root=true&amp;

calling_into=GoodPrescriptionRefillApp7"

xml:lang="en-us">

<property name="timeout" value="60s" />

<property name="confidencelevel" value="0.40" />

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

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'initial_audio_group' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<goto nextitem="choice_fld" />

</block>

<field name="choice_fld" modal="false">

<property name="inputmodes" value="dtmf voice" />

<prompt bargein="true">Say refills or press 1.

Or.

Say pharmacist or press 2.</prompt>

<catch event="nomatch">

<prompt bargein="true">Sorry.

I did not understand that.

Say refills or press 1.

Say pharmacist or press 2.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||nomatch$$$' + '1' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'nomatch_audio_group'

+ '^^^' + application.getElapsedTime(

audium_element_start_time_millisecs)" />

</catch>

<catch event="nomatch" count="2">

<prompt bargein="true">

Sorry, I still did not get that.

If you are using a speaker phone.

Please use the phone keypad to make

your selection.

Press 1 for refills.

Press 2 to speak to a pharmacist.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||nomatch$$$' + '2' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'nomatch_audio_group'

+ '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

</catch>

<catch event="nomatch" count="3">

<prompt bargein="true">Gee.

Looks like we are having some trouble.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||nomatch$$$' + '3' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'nomatch_audio_group'

+ '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<var name="maxNoMatch" expr="'yes'" />

<submit next="/CVP/Server" method="post"

namelist="

audium_vxmlLog maxNoMatch" />

</catch>

<catch event="noinput">

<prompt bargein="true">Sorry.

I did not hear that.

Say refills or press 1.

Say pharmacist or press 2.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||noinput$$$' + '1' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'noinput_audio_group'

+ '^^^' + application.getElapsedTime

(audium_element_start_time_millisecs)" />

</catch>

<catch event="noinput" count="2">

<prompt bargein="true">I am sorry.

I still did not hear that.

If you are using a speaker phone.

Please use the phone keypad

to make your selection.

Press 1 for refills.

Press 2 to speak to a pharmacist.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||noinput$$$' + '2' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'noinput_

audio_group' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

</catch>

<catch event="noinput" count="3">

<prompt bargein="true">Gee.

Looks like we are having some trouble.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||noinput$$$' + '3' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||audio_group$$$' + 'noinput_

audio_group' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<var name="maxNoInput" expr="'yes'" />

<submit next="/CVP/Server" method="post"

namelist=" audium_vxmlLog maxNoInput" />

</catch>

<option value="refills" dtmf="1">

prescription</option>

<option value="refills">refills</option>

<option value="refills">

prescription refills</option>

<option value="refills">

refill my prescription</option>

<option value="refills">

I want to refill my prescription</option>

<option value="refills">

refills please</option>

<option value="Pharmacist"

dtmf="2">Pharmacist</option>

<option value="Pharmacist">

I want to speak to a pharmacist</option>

<option value="Pharmacist">

pharmacist please</option>

<filled>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||utterance$$$' + choice_fld$.

utterance + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||inputmode$$$' + choice_fld$.

inputmode + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||interpretation$$$' + choice_fld + '^^^'

+ application.getElapsedTim

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

+ '|||confidence$$$' + choice_fld$.

confidence + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<var name="confidence"

expr="choice_fld$.confidence" />

<submit next="/CVP/Server" method="post"

namelist=" audium_vxmlLog confidence choice_fld" />

</filled>

</field>

</form>

</vxml>

網關建立用於DTMF/語音識別的語法

一旦網關與ASR伺服器建立會話，這些語法就會傳送到ASR伺服器。

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_change_server:

asr_server=sip:asr@172.18.110.76

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option485@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0" encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root" scope="public">

prescription</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=339,

Event=0x63ACCCF0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option486@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

mode="dtmf" root=

"root"><rule id="root" scope=

"public">1</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:

/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=340,

Event=0x63ACCAE8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option487@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root" scope="public">

refills</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP

:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=341,

Event=0x63ACBC88

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option488@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0" encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root" scope="public">

prescription refills</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=342,

Event=0x63ACBCB0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option489@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar" xml:

lang="en-us" root="root">

<rule id="root" scope="public">

refill my prescription</rule><

/grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94,

Count=343, Event=0x63ACBCD8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option490@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0" encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us" root="root">

<rule id="root" scope="public">

I want to refill my prescription

</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=344,

Event=0x63ACBD00

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option491@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0" encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root" scope="public">

refills please</rule></grammar

>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=345,

Event=0x63ACBD28

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option492@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root"

scope="public"> Pharmacist

</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=346,

Event=0x63ACBB20

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option493@field.grammar

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

mode="dtmf" root="root">

<rule id="root" scope=

"public">2</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94,

Count=347, Event=0x63ACBD50

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:

option494@field.grammar

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root" scope="public">

I want to speak to a pharmacist

</rule></grammar>

*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94,

Count=348, Event=0x63ACBFF8

*Jan 18 03:34:57.523: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527: //127//AFW_

:/vapp_asr_define_grammar:

grammar_id=session:option495@field.grammar

*Jan 18 03:34:57.527: //127//AFW_

:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527: //127//AFW_

:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527: //127//AFW_

:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.527: //127//AFW_

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root" scope="public">

pharmacist please

</rule></grammar>

*Jan 18 03:34:57.527:

//-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94,

Count=349, Event=0x63ACC048

*Jan 18 03:34:57.527: //127//AFW_

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:link496@document.grammar

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar xmlns="http://ww

w.w3.org/2001/06/grammar" mode="voice"

version="1.0"

root="Hotlink_02_VOICE" xml:lang="en-us">

<rule id="Hotlink_02_VOICE" scope="public">

<one-of>

<item>operator</item>

<item>agent</item>

<item>pharmacist</item>

</one-of>

</rule>

</grammar>

*Jan 18 03:34:57.527: //-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=350,

Event=0x63ACC098

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:link497@document.grammar

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://ww

w.w3.org/2001/06/grammar" mode="voice" version="1.0"

root="Hotlink_01_VOICE" xml:lang="en-us">

<rule id="Hotlink_01_VOICE" scope="public">

<one-of>

<item>operator</item>

<item>agent</item>

<item>pharmacist</item>

</one-of>

</rule>

</grammar>

*Jan 18 03:34:57.527:

//-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=351,

Event=0x63ACC0C0

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:help@grammar

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=1

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

lns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us"

root="root"><rule id="root"

scope="public">

help</rule></grammar>

*Jan 18 03:34:57.527:

//-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94, Count=352,

Event=0x63ACBEE0

*Jan 18 03:34:57.527: //127//AFW_:/vapp_asr:

grammar_id=session:option485@field.grammar

grammar_id=session:option486@field.grammar

grammar_id=session:option487@field.grammar

grammar_id=session:option488@field.grammar

grammar_id=session:option489@field.grammar

grammar_id=session:option490@field.grammar

grammar_id=session:option491@field.grammar

grammar_id=session:option492@field.grammar

grammar_id=session:option493@field.grammar

grammar_id=session:option494@field.grammar

grammar_id=session:option495@field.grammar

grammar_id=session:link496@document.grammar

grammar_id=session:link497@document.grammar

grammar_id=session:help@grammar

網關執行撥號對等查詢以設定與文本到語音伺服器的SIP會話

出站撥號對等體6匹配。

*Jan 18 03:34:57.527:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

Destination Pattern=,

Called Number=sip:tts@172.18.110.76,

Digit Strip=FALSE

*Jan 18 03:34:57.527:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

Calling Number=5555(TON=Unknown, NPI=Unknown,

Screening=Not Screened,

Presentation=Allowed),

Called Number=sip:tts@172.18.110.76(TON=Unknown,

NPI=ISDN),

Redirect Number=, Display Info=

Account Number=, Final Destination Flag=TRUE,

Guid=2AEE8C2A-0AFB-11D6-801C-0013803E8C8E,

Outgoing Dial-peer=6

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/cc

_api_display_ie_subfields:

ccCallSetupRequest:

cisco-username=

----- ccCallInfo IE subfields -----

cisco-ani=5555

cisco-anitype=0

cisco-aniplan=0

cisco-anipi=0

cisco-anisi=0

dest=sip:tts@172.18.110.76

cisco-desttype=0

cisco-destplan=1

cisco-rdie=FFFFFFFF

cisco-rdn=

cisco-rdntype=-1

cisco-rdnplan=-1

cisco-rdnpi=-1

cisco-rdnsi=-1

cisco-redirectreason=-1   fwd_final_type =0

final_redirectNumber =

hunt_group_timeout =0

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/

ccIFCallSetupRequestPrivate:

Interface=0x662CE538, Interface Type=3,

Destination=, Mode=0x0,

Call Params(Calling Number=5555,

(Calling Name=)(TON=Unknown,

NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

Called Number=sip:tts@172.18.110.76

(TON=Unknown, NPI=ISDN),

Calling Translated=FALSE,

Subscriber Type Str=RegularLine,

FinalDestinationFlag=TRUE,

Outgoing Dial-peer=6, Call Count On=FALSE,

Source Trkgrp Route Label=,

Target Trkgrp Route Label=,

tg_label_flag=0, Application Call Id=)

網關向TTS伺服器傳送SIP邀請

INVITE消息的SDP包含音訊流和MRCPv2應用（語音合成通道）的媒體資訊。

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

INVITE sip:tts@172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:

5060;branch=z9hG4bK931F1D

Remote-Party-ID: <sip:5555@14.1.16.25>;

party=calling;screen=no;privacy=off

From: <sip:5555@14.1.16.25>

;tag=E54D43C-1EC4

To: sip:tts@172.18.110.76

Date: Fri, 18 Jan 2002 03:34:57 GMT

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30

-3585E95A@14.1.16.25

Supported: 100rel,timer,

resource-priority,replaces

Min-SE:  1800

Cisco-Guid: 720276522-184226262

-2149318675-2151582862

User-Agent: Cisco-SIPGateway/IOS-12.x

Allow: INVITE, OPTIONS, BYE,

CANCEL, ACK, PRACK, UPDATE,

REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER

CSeq: 101 INVITE

Max-Forwards: 70

Timestamp: 1011324897

Contact: <sip:5555@14.1.16.25:5060>

Expires: 180

Allow-Events: telephone-event

Content-Type: application/sdp

Content-Disposition:

session;handling=required

Content-Length: 358

v=0

o=CiscoSystemsSIP-GW-UserAgent

6021 4611 IN IP4 14.1.16.25

s=SIP Call

c=IN IP4 14.1.16.25

t=0 0

m=audio 16984 RTP/AVP 0 101

c=IN IP4 14.1.16.25

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

a=ptime:20

a=recvonly

a=mid:1

m=application 9 TCP/MRCPv2

a=setup:active

a=connection:new

a=resource:speechsynth

a=cmid:1

網關執行撥號對等查詢以與ASR伺服器建立SIP會話

出站撥號對等體5已匹配。

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

Destination Pattern=,

Called Number=sip:asr@172.18.110.76,

Digit Strip=FALSE

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

Calling Number=5555(TON=Unknown, NPI=Unknown,

Screening=Not Screened, Presentation=Allowed),

Called Number=sip:asr@172.18.110.76

(TON=Unknown, NPI=ISDN),

Redirect Number=, Display Info=

Account Number=, Final Destination Flag=TRUE,

Guid=2AEE8C2A-0AFB-11D6-801C-0013803E8C8E,

Outgoing Dial-peer=5

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/cc_api

_display_ie_subfields:

ccCallSetupRequest:

cisco-username=

----- ccCallInfo IE subfields -----

cisco-ani=5555

cisco-anitype=0

cisco-aniplan=0

cisco-anipi=0

cisco-anisi=0

dest=sip:asr@172.18.110.76

cisco-desttype=0

cisco-destplan=1

cisco-rdie=FFFFFFFF

cisco-rdn=

cisco-rdntype=-1

cisco-rdnplan=-1

cisco-rdnpi=-1

cisco-rdnsi=-1

cisco-redirectreason=-1

fwd_final_type =0

final_redirectNumber =

hunt_group_timeout =0

*Jan 18 03:34:57.535:

//-1/xxxxxxxxxxxx/CCAPI

/ccIFCallSetupRequestPrivate:

Interface=0x662CE538, Interface Type=3,

Destination=, Mode=0x0,

Call Params(Calling Number=5555,

(Calling Name=)(TON=Unknown,

NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

Called Number=sip:asr@172.18.110.76

(TON=Unknown, NPI=ISDN),

Calling Translated=FALSE,

Subscriber Type Str=RegularLine,

FinalDestinationFlag=TRUE,

Outgoing Dial-peer=5, Call Count On=FALSE,

Source Trkgrp Route Label=,

Target Trkgrp Route Label=,

tg_label_flag=0, Application Call Id=)

網關向ASR伺服器傳送SIP邀請

SDP包含音訊流DTMF中繼的媒體資訊。和MRCPv2應用程式（speechrecog通道）。

*Jan 18 03:34:57.535:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

INVITE sip:asr@172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP

14.1.16.25:5060;branch=z9hG4bK94C0B

Remote-Party-ID: <sip:5555@14.1.16.25>;

party=calling;screen=no;privacy=off

From: <sip:5555@14.1.16.25>;tag=E54D440-1CDB

To: sip:asr@172.18.110.76

Date: Fri, 18 Jan 2002 03:34:57 GMT

Call-ID: 2DCAF817-AFB11D6

-80D5DC30-3585E95A@14.1.16.25

Supported: 100rel,timer,

resource-priority,replaces

Min-SE:  1800

Cisco-Guid: 720276522-184226262-

2149318675-2151582862

User-Agent: Cisco-SIPGateway/IOS-12.x

Allow: INVITE, OPTIONS, BYE, CANCEL,

ACK, PRACK, UPDATE,

REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER

CSeq: 101 INVITE

Max-Forwards: 70

Timestamp: 1011324897

Contact: <sip:5555@14.1.16.25:5060>

Expires: 180

Allow-Events: telephone-event

Content-Type: application/sdp

Content-Disposition:

session;handling=required

Content-Length: 358

v=0

o=CiscoSystemsSIP-GW-UserAgent

6805 2057 IN IP4 14.1.16.25

s=SIP Call

c=IN IP4 14.1.16.25

t=0 0

m=audio 19994 RTP/AVP 0 101

c=IN IP4 14.1.16.25

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

a=ptime:20

a=sendonly

a=mid:1

m=application 9 TCP/MRCPv2

a=setup:active

a=connection:new

a=resource:speechrecog

a=cmid:1

網關從ASR伺服器收到200 OK響應（針對SIP INVITE）

1. 音訊流的G711ulaw編解碼器、IP地址和RTP埠號。

2. 此RTP流的方向屬性為「recvonly」。

3. 基於RTP-NTE的DTMF中繼。

4. 網關用於與ASR伺服器建立MRCPv2會話的TCP埠號(51001)。

*Jan 18 03:34:57.559:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP 14.1.16.25:5060;

branch=z9hG4bK94C0B

To: <sip:asr@172.18.110.76>;tag=a99d0500

From: <sip:5555@14.1.16.25>;tag=E54D440-1CDB

Call-ID: 2DCAF817-AFB11D6-80D5DC30-

3585E95A@14.1.16.25

CSeq: 101 INVITE

Contact: <sip:172.18.110.76:5060>

Content-Type: application/sdp

Content-Length: 342

v=0

o=MRCPv2Server 3386937590 3386937590

IN IP4 172.18.110.76

s=SIP Call

c=IN IP4 172.18.110.76

t=3386937590 0

m=audio 10002 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=recvonly

m=application 51001 TCP/MRCPv2

a=connection:new

a=setup:passive

a=model:besteffort

a=channel:000023B846361276@speechrecog

網關將SIP ACK傳送到ASR伺服器

ASR的SIP會話在網關和ASR伺服器之間建立。

*Jan 18 03:34:57.563:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

ACK sip:172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:5060;branch=z9hG4bK9520FA

From: <sip:5555@14.1.16.25>;tag=E54D440-1CDB

To: <sip:asr@172.18.110.76>;tag=a99d0500

Date: Fri, 18 Jan 2002 03:34:57 GMT

Call-ID: 2DCAF817-AFB11D6-80D5DC30-3585E95A@14.1.16.25

Max-Forwards: 70

CSeq: 101 ACK

Allow-Events: telephone-event

Content-Length: 0

網關將「DEFINE-GRAMMER」MRCP請求傳送到ASR伺服器

此處只顯示一個請求。

MRCP/2.0 446      DEFINE-GRAMMAR  1

Channel-Identifier: 000023B846361276@speechrecog

:

Speech-Language: en-us

Content-Base: http://172.18.110.75:7000/CVP/

:

Content-Type: application/srgs+xml

Content-Id: option485@field.grammar

Content-Length: 193

:

<?xml version="1.0" encoding="UTF-8"?>

<grammar version="1.0"

mlns="http://www.w3.org/2001/06/grammar"

xml:lang="en-us" root="root"

><rule id="root" scope="public">

prescription</rule></grammar>

網關收到其DEFINE-GRAMMAR請求的200個完整響應

*Jan 18 03:34:57.587: //-1//MRCP:/hash_get:

Table=mrcpv2_socket_connect_table, Key=0:

MRCP/2.0 80 1 200 COMPLETE

Channel-Identifier: 000023B846361276@speechrecog

網關收到來自TTS伺服器的200 OK響應（針對SIP INVITE）

SIP INVITE消息的SDP指定了以下內容：

1. 音訊流的G711ulaw編解碼器、IP地址和RTP埠號。

2. 此RTP流的direction屬性為「sendonly」。

3. 基於RTP-NTE的DTMF中繼

4. 網關用於與TTS伺服器建立MRCPv2會話的TCP埠號(51000)。

*Jan 18 03:34:57.591:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP 14.1.16.25:5060;

branch=z9hG4bK931F1D

To: <sip:tts@172.18.110.76>;tag=c1160600

From: <sip:5555@14.1.16.25>;tag=E54D43C-1EC4

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30-

3585E95A@14.1.16.25

CSeq: 101 INVITE

Contact: <sip:172.18.110.76:5060>

Content-Type: application/sdp

Content-Length: 342

v=0

o=MRCPv2Server 3386937590 3386937590

IN IP4 172.18.110.76

s=SIP Call

c=IN IP4 172.18.110.76

t=3386937590 0

m=audio 10000 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=sendonly

m=application 51000 TCP/MRCPv2

a=connection:new

a=setup:passive

a=model:besteffort

a=channel:000023EC46361276@speechsynth

網關向TTS伺服器傳送SIP ACK

文本到語音的SIP會話在網關和TTS伺服器之間建立。

*Jan 18 03:34:57.595:

//-1/xxxxxxxxxxxx/SIP/

Msg/ccsipDisplayMsg:

Sent:

ACK sip:172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:5060;

branch=z9hG4bK9626BC

From: <sip:5555@14.1.16.25>;tag=E54D43C-1EC4

To: <sip:tts@172.18.110.76>;tag=c1160600

Date: Fri, 18 Jan 2002 03:34:57 GMT

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30

-3585E95A@14.1.16.25

Max-Forwards: 70

CSeq: 101 ACK

Allow-Events: telephone-event

Content-Length: 0

網關向ASR伺服器傳送「識別」MRCP請求

MRCP/2.0 987

RECOGNIZE  15

Channel-Identifier:

000023B846361276@speechrecog

:

Speech-Language: en-us

Confidence-Threshold: 0.40

Sensitivity-Level: 0.50

Speed-Vs-Accuracy: 0.50

Cancel-If-Queue: false

Dtmf-Interdigit-Timeout: 10000

Dtmf-Term-Timeout: 0

Dtmf-Term-Char: #

No-Input-Timeout: 60000

N-Best-List-Length: 1

Logging-Tag: 127:127

Accept-Charset: charset: utf-8

Content-Base:

http://172.18.110.75:7000/CVP/

Media-Type: audio/basic

Start-Input-Timers: false

:

Content-Type: text/uri-list

Content-Length: 453

:

session:option485@field.grammar

session:option486@field.grammar

session:option487@field.grammar

session:option488@field.grammar

session:option489@field.grammar

session:option490@field.grammar

session:option491@field.grammar

session:option492@field.grammar

session:option493@field.grammar

session:option494@field.grammar

session:option495@field.grammar

session:link496@document.grammar

session:link497@document.grammar

session:help@grammar

ASR伺服器向網關傳送「正在進行」響應（用於識別請求）

MRCP/2.0 84 15 200 IN-PROGRESS

Channel-Identifier:

000023B846361276@speechrecog

網關完成Welcome-1.wav媒體檔案的下載

將其儲存在快取中，並向呼叫方播放提示。

*Jan 18 03:35:04.335:

//127//HTTPC:/httpc_is_cached:

HTTPC_FILE_IS_CACHED

*Jan 18 03:35:04.335: //-1//HTTPC:

/httpc_set_cache_revoke_cb:

Registering revoke_callback(0x61CDD948)

+pcontext(0x63A7AAA8) for cach

ep(0x68734930)

*Jan 18 03:35:04.335: //127//AFW_:/vapp_driver:

evtID: 146 vapp record state: 0

*Jan 18 03:35:04.335: //127//AFW_:/vapp_play_done:

evID=146 reason=17,

protocol=5, status_code=0, dur=3291, rate=0

*Jan 18 03:35:04.335: //127/2AEE8C2A801C/VXML:

/vxml_media_done:

網關將「SPEAK」MRCP請求傳送到TTS伺服器以播放感謝提示

MRCP/2.0 376      SPEAK  1

Channel-Identifier:

000023EC46361276@speechsynth

:

Kill-On-Barge-In: true

Speech-Language: en-us

Logging-Tag: 127:127

Content-Base:

http://172.18.110.75:7000/CVP/

:

Content-Type: application/ssml+xml

Content-Length: 123

:

<?xml version="1.0" encoding="UTF-8"?>

<speak version="1.0" xml:lang="en-us">

Thank you for calling Audium pharmacy.</speak>

TTS伺服器傳送SPEAK請求的「進行中」響應

MRCP/2.0 83 1 200 IN-PROGRESS

Channel-Identifier:

000023EC46361276@speechsynth

TTS伺服器在說出感謝提示後傳送「SPEAK-COMPLETE」消息

MRCP/2.0 141 SPEAK-COMPLETE 1 COMPLETE

Channel-Identifier:

000023EC46361276@speechsynth

Completion-Cause: 000 normal

Speech-Marker: ""

PSTN呼叫者輸入「1」以選擇重新填寫

網關將此數字作為RTP-NTE事件傳送到ASR伺服器。

*Jan 18 03:35:12.583:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9B timestamp 0x2FADCC60

*Jan 18 03:35:12.583:          Pt:101    Evt:1

Pkt:03 00 00  <Snd>>>

*Jan 18 03:35:12.587:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9C timestamp 0x2FADCC60

*Jan 18 03:35:12.587:          Pt:101    Evt:1

Pkt:03 00 00  <Snd>>>

*Jan 18 03:35:12.631:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9E timestamp 0x2FADCC60

*Jan 18 03:35:12.631:          Pt:101    Evt:1

Pkt:03 01 90  <Snd>>>

*Jan 18 03:35:12.683:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9F timestamp 0x2FADCC60

*Jan 18 03:35:12.683:          Pt:101    Evt:1

Pkt:03 03 20  <Snd>>>

*Jan 18 03:35:12.703:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1EA0 timestamp 0x2FADCC60

*Jan 18 03:35:12.703:          Pt:101    Evt:1

Pkt:83 03 38  <Snd>>>

*Jan 18 03:35:12.707:          s=DSP d=VoIP payload

0x65 ssrc 0x15 sequence 0x1EA1 timestamp 0x2FADCC60

*Jan 18 03:35:12.707:          Pt:101    Evt:1

Pkt:83 03 38  <Snd>>>

*Jan 18 03:35:12.711:          s=DSP d=VoIP payload

0x65 ssrc 0x15 sequence

0x1EA2 timestamp 0x2FADCC60

*Jan 18 03:35:12.711:          Pt:101    Evt:1

Pkt:83 03 38  <Snd>>>

ASR伺服器向網關傳送「識別完成」消息

這將通知網關它已識別其中一個請求的事件（在本例中為數字1）。

MRCP/2.0 513

RECOGNITION-COMPLETE 15 COMPLETE

Channel-Identifier:

000023B846361276@speechrecog

Proxy-Sync-Id: 0B82553000000027

Completion-Cause: 000 success

Content-Type: application/nlsml+xml

Content-Length: 292

<?xml version="1.0" encoding="UTF-8"?>

<result grammar="session:option486@field.grammar">

<interpretation grammar=

"session:option486@field.grammar"

confidence="0.000000">

<instance>

1

</instance>

<input mode="dtmf"

confidence="1.000000">

1

</input>

</interpretation>

</result>

VXML網關收到來自ASR伺服器的成功識別通知

收到此通知後，VXML網關將傳送HTTP POST請求，如VXML文檔的SUBMIT標籤中所指定(3)。 此POST請求通知VXML伺服器PSTN呼叫方輸入了數字1。

*Jan 18 03:35:12.863:

//127/2AEE8C2A801C/VXML:/vxml_vapp_bgpost:

url http://172.18.110.75:7000/CVP/Server

cachable 1 timeout

0 body audium_vxmlLog=%7C%7C%7Caudio

_group$$$initial_audio_group%5E%

5E%5E4%7C%7C%7Cutterance$$$1%5E%5E%5E153

40%7C%7C%7Cinputmode

$$$dtmf%5E%5E%5E15344%7C%7C%7C

interpretation$$$refills%5E%5E%5E15344%7C

%7C%7Cconfidence$$$0%5E%5E%5E15344&confidence=

0&choice_fld=refills

len 258maxage -1 maxstale -1

*Jan 18 03:35:12.863: //127//AFW_:/vapp_bgpost:

url=http://172.18.110.75:7000/CVP/Server;

mime_type=application/x-www-form-urlencod

ed; len=258; iov_base=audium_vxmlLog=%7C%7C%7Caudio_

group$$$initial_audio_group

%5E%5E%5E4%7C%7C%7Cutterance

$$$1%5E%5E%5E15340%7C%7C

%7Cinputmode$$$dtmf%5E%5E%5E15344%

7C%7C%7Cinterpretation$$$refills

%5E%5E%5E15344%7C%7C%7Cconfidence$$$0

%5E%5E%5E15344&confidence=0&

choice_fld=refills

*Jan 18 03:35:12.931:

about to send data to the socket 3

: first 400 bytes of data:

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 258

Content-Type: application/x-www-form-urlencoded

Cookie: $Version=0; JSESSIONID=

BBCE0F948ADFDB720497F587A7997538;

$Path=/CVP

Connection: close

Accept: text/vxml, text/x-vxml, application/vxml,

application/x-vxml,

application/voicexml, application/x-voicexml,

text/plain, tex

t/html, audio/basic, audio/wav, multipart/form-dat

ASR識別4位處方編號

ASR向IOS VXML網關傳送識別完成MRCP消息。

MRCP/2.0 533

RECOGNITION-COMPLETE 21 COMPLETE

Channel-Identifier:

000023B846361276@speechrecog

Proxy-Sync-Id: 0B82553000000028

Completion-Cause: 000 success

Content-Type: application/nlsml+xml

Content-Length: 312

<?xml version="1.0" encoding="UTF-8"?>

<result grammar=

"session:field498@field.grammar">

<interpretation grammar=

"session:field498@field.grammar"

confidence="0.738968">

<instance>

1234

</instance>

<input mode="speech"

confidence="0.752155">

one two three four

</input>

</interpretation>

</result>

The final VXML document sent by the

VXML server contains just the

<exit\> tag in the <form>

This tells the Gateway to

terminate the VXML session

VXML伺服器傳送的最後一個VXML文檔僅包含表單中的退出標籤

這將通知網關終止VXML會話

*Jan 18 03:36:07.159:

processing server rsp msg:

msg(67CA85F8)URL:

http://172.18.110.75:7000/CVP/Server, fd(3):

*Jan 18 03:36:07.159: Request msg:

POST /CVP/Server HTTP/1.1

*Jan 18 03:36:07.159:

Message Response Code: 200

*Jan 18 03:36:07.159:

Message Rsp Decoded Headers:

*Jan 18 03:36:07.159: D

ate:Mon, 30 Apr 2007 16:59:53 GMT

*Jan 18 03:36:07.159:

Content-Type:text/xml;charset=ISO-8859-1

*Jan 18 03:36:07.159: Connection:close

*Jan 18 03:36:07.159: Set-Cookie:

JSESSIONID=NULL;

Expires=Thu, 01-Jan-1970

00:00:10 GMT; Path=/CVP

*Jan 18 03:36:07.159: headers:

*Jan 18 03:36:07.159: HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=NULL; Expires=Thu,

01-Jan-1970 00:00:10 GMT; Path=/CVP

Content-Type: text/xml;charset=ISO-8859-1

Date: Mon, 30 Apr 2007 16:59:53 GMT

Connection: close

*Jan 18 03:36:07.159: body:

*Jan 18 03:36:07.159: <?xml version="1.0"

encoding="UTF-8"?>

<vxml version="2.0" xml:lang="en-us">

<catch event="vxml.session.error">

<exit />

</catch>

<catch event="telephone.disconnect.hangup">

<exit />

</catch>

<catch event="telephone.disconnect">

<exit />

</catch>

<catch event="error.unsupported.object">

<exit />

</catch>

<catch event="error.unsupported.language">

<exit />

</catch>

<catch event="error.unsupported.format">

<exit />

</catch>

<catch event="error.unsupported.element">

<exit />

</catch>

<catch event="error.unsupported.builtin">

<exit />

</catch>

<catch event="error.unsupported">

<exit />

</catch>

<catch event="error.semantic">

<exit />

</catch>

<catch event="error.noresource">

<exit />

</catch>

<catch event="error.noauthorization">

<exit />

</catch>

<catch event="error.eventhandler.notfound">

<exit />

</catch>

<catch event="error.connection.noroute">

<exit />

</catch>

<catch event="error.connection.noresource">

<exit />

</catch>

<catch event="error.connection.nolicense">

<exit />

</catch>

<catch event="error.connection.noauthorization">

<exit />

</catch>

<catch event="error.connection.baddestination">

<exit />

</catch>

<catch event="error.condition.baddestination">

<exit />

</catch>

<catch event="error.com.cisco.

media.resource.unavailable">

<exit />

</catch>

<catch event=

"error.com.cisco.handoff.failure">

<exit />

</catch>

<catch event=

"error.com.cisco.callhandoff.failure">

<exit />

</catch>

<catch event=

"error.com.cisco.aaa.authorize.failure">

<exit />

</catch>

<catch event=

"error.com.cisco.aaa.authenticate.failure">

<exit />

</catch>

<catch event="error.badfetch.https">

<exit />

</catch>

<catch event="error.badfetch.http">

<exit />

</catch>

<catch event="error.badfetch">

<exit />

</catch>

<catch event="error">

<exit />

</catch>

<catch event="disconnect.com.cisco.handoff">

<exit />

</catch>

<catch event="connection.disconnect.hangup">

<exit />

</catch>

<catch event="connection.disconnect">

<exit />

</catch>

<form>

<block>

<exit />

</block>

</form>

</vxml>

網關終止VXML應用程式

*Jan 18 03:36:14.155:

//127/2AEE8C2A801C/VXML:/vxml_vapp_terminate:

vapp_status=0 ref_count 0

*Jan 18 03:36:14.155:

//127//AFW_:/vapp_terminate:

*Jan 18 03:36:14.155: //127//AFW_

:/vapp_session_exit_event_name:

Exit Event vxml.session.complete

*Jan 18 03:36:14.155:

//127//AFW_:/AFW_M_VxmlModule_Terminate:

*Jan 18 03:36:14.155:

//131/2AEE8C2A801C/CCAPI/ccCallDisconnect:

Cause Value=16, Tag=0x0, Call Entry

(Previous Disconnect Cause=0,

Disconnect Cause=0)

*Jan 18 03:36:14.155:

//131/2AEE8C2A801C/CCAPI/ccCallDisconnect:

Cause Value=16, Call Entry(Responsed=TRUE,

Cause Value=16)

網關斷開與ASR伺服器建立的SIP會話的連線

*Jan 18 03:36:14.159:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

BYE sip:172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:

5060;branch=z9hG4bK971131

From: <sip:5555@14.1.16.25>;tag=E54D440-1CDB

To: <sip:asr@172.18.110.76>;tag=a99d0500

Date: Fri, 18 Jan 2002 03:34:57 GMT

Call-ID: 2DCAF817-AFB11D6-80D5DC30-

3585E95A@14.1.16.25

User-Agent: Cisco-SIPGateway/IOS-12.x

Max-Forwards: 70

Timestamp: 1011324974

CSeq: 102 BYE

Reason: Q.850;cause=16

Content-Length: 0

*Jan 18 03:36:14.607:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP 14.1.16.25:

5060;branch=z9hG4bK971131

To: <sip:asr@172.18.110.76>;tag=a99d0500

From: <sip:5555@14.1.16.25>;tag=E54D440-1CDB

Call-ID: 2DCAF817-AFB11D6-80D5DC30-

3585E95A@14.1.16.25

CSeq: 102 BYE

Contact: <sip:172.18.110.76:5060>

Content-Length: 0

網關斷開與TTS伺服器建立的SIP會話的連線

*Jan 18 03:36:14.159:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

BYE sip:172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:5060;branch=z9hG4bK981487

From: <sip:5555@14.1.16.25>;tag=E54D43C-1EC4

To: <sip:tts@172.18.110.76>;tag=c1160600

Date: Fri, 18 Jan 2002 03:34:57 GMT

Call-ID: 2DCA5BEF-AFB11D6-

80D3DC30-3585E95A@14.1.16.25

User-Agent: Cisco-SIPGateway/IOS-12.x

Max-Forwards: 70

Timestamp: 1011324974

CSeq: 102 BYE

Reason: Q.850;cause=16

Content-Length: 0

*Jan 18 03:36:14.215:

//-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP

14.1.16.25:5060;branch=z9hG4bK981487

To: <sip:tts@172.18.110.76>;tag=c1160600

From: <sip:5555@14.1.16.25>;tag=E54D43C-1EC4

Call-ID:

2DCA5BEF-AFB11D6-80D3DC30-3585E95A@14.1.16.25

CSeq: 102 BYE

Contact: <sip:172.18.110.76:5060>

Content-Length: 0

網關斷開ISDN端呼叫

*Jan 18 03:36:14.611: ISDN Se3/0:23 Q931: TX ->

DISCONNECT pd = 8  callref = 0x805A

Cause i = 0x8090 - Normal call clearing

*Jan 18 03:36:14.623: ISDN Se3/0:23 Q931:

RX <- RELEASE pd = 8  callref = 0x005A

*Jan 18 03:36:14.623: ISDN Se3/0:23 Q931:

TX -> RELEASE_COMP pd = 8  callref = 0x805A

相關資訊

- 語音技術支援

- 語音和整合通訊產品支援

- Cisco IP電話故障排除

- 技術支援與文件 - Cisco Systems