语音 : 呼叫路由/拨号方案

IOS语音XML网关到CVP呼叫流使用MRCPv2 ASR/TTS

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

语音扩展标记语言(VXML)是万维网联盟定义的标准(W3C)。它设计创建提供被综合的语音,所说的话识别, DTMF位的识别的音频对话和记录的发言的音频。VXML服务器和客户端使用著名的HTTP协议交换VXML文档/页。

思科语音门户(CVP)提供可以在电话访问的智能和交互语音应答(IVR)应用程序。有三种CVP配置类型:

  1. 独立服务

  2. CVP呼叫控制

  3. 呼叫队列和转移

Text-to-Speech (TTS)和自动语音识别服务器提供被综合的语音和所说的话/DTMF位功能的识别(ASR)。IOS� VXML网关与TTS/ASR服务器联络通过梅迪亚资源控制协议(MRCP)。有两个版本MRCP (RFC 4463)即, MRCPv1 (在RTSP的MRCP)和MRCPv2 (在SIP的MRCP)。

本文描述IOS语音XML网关的呼叫流对在使用MRCPv2 TTS/ASR服务器的独立服务部署的CVP呼叫。示例药房应用程序被实施了在CVP VXML服务器。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于以下软件和硬件版本:

  • IOS VXML网关:思科AS5400XM, IOS 12.4(15)T1

  • VXML服务器:CVP 4.0

  • ASR/TTS服务器:Loquendo语音套件7.0

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

配置

本部分提供有关如何配置本文档所述功能的信息。

注意: 使用命令查找工具仅限注册用户)可获取有关本部分所使用命令的详细信息。

网络图

本文档使用以下网络设置:

index-ios-1.gif

配置

本文档使用以下配置:

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呼叫到达在T1PRI 3/0间的PSTN/VXML网关。

  2. IOS网关匹配POTS拨号对等1作为此呼叫的呼入拨号对端。

  3. IOS网关递交呼叫控制对关联给dial-peer 1.的药房服务。

  4. CVP VXML/TCL写脚本关联与药房服务发送HTTP GET请求到VXML服务器。

  5. VXML服务器返回200 OK答复。此答复包含VXML文档/页。

  6. IOS网关执行VXML文档。

  7. 如果VXML文档指定音频提示的URL, IOS网关下载音频文件并且示出提示符。

  8. 如果VXML文档指定音频提示的一个文本, IOS网关建立有tts@172.18.110.76的(TTS服务器)一个SIP会话使用dial-peer 5.。在SIP会话建立后,它打开对TTS服务器的一TCP连接使用在SIP的200 OK答复SDP提供的TCP端口号邀请。此TCP连接用于交换MRCP消息例如发言,在IOS网关和TTS服务器之间的SPEAK-COMPLETE。

    TTS服务器发送G.711ulaw RTP音频流对IP地址,并且在SIP的SDP的网关提供的UDP端口号邀请。

  9. 如果VXML文档指定网关认可DTMF位和所说的话, IOS网关建立有asr@172.18.110.76的(ASR服务器)一个SIP会话与dial-peer 6。在SIP会话建立后,它打开对ASR服务器的一TCP连接使用在SIP的200 OK答复SDP提供的TCP端口号邀请。此TCP连接用于交换MRCP消息例如定义了语法,完成,识别和在IOS网关和ASR服务器之间的RECOGNITION-COMPLETE。

    IOS VXML网关发送G.711ulaw RTP音频流到在SIP 200 OK答复的SDP的ASR和UDP端口号提供的IP地址。IOS VXML网关由PSTN用户发送输入的数字作为RTP-NTE事件到ASR服务器。

  10. 在VXML文档的执行,网关在VXML文档/页的<submit>标记上指定发送HTTP POST请求(与一套参数)后。

  11. 步骤6 – 10为服务器寄发的每个VXML文档发生。

  12. 当VXML应用程序完成为呼叫方时提供的服务,寄发与一<exit/>标记的一个VXML文档在<form>元素内。

  13. IOS网关断开用TTS和ASR服务器建立的MRCPv2会话。

  14. IOS网关断开在ISDN侧的呼叫。

验证

使用本部分可确认配置能否正常运行。

命令输出解释程序仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。

  • Show call active voice brief

    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
    
  • Show call active media摘要

    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
    
  • 显示mrcp客户端会话活动详细信息

    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网关记录在其操作日志缓冲区的调试和禁用“logging console”。

注意: 使用 debug 命令之前,请参阅有关 Debug 命令的重要信息

注意: 这些命令用于配置网关,来将debug存储在网关的操作日志缓冲区中:

  • service timestamps debug datetime msec

  • 服务顺序

  • no logging console

  • logging buffered 5000000 debug

  • clear log

下列是用于的调试指令排除故障配置:

  • debug isdn q931

  • debug voip ccapi inout

  • 调试voip应用程序vxml默认

  • 调试voip应用程序vxml转储

  • 调试ccsip消息

  • debug mrcp详细信息

  • 调试http客户端全部

  • debug voip rtp会话nte named-event

调试输出

此部分为此示例呼叫流提供debug输出:

  1. 网关收到从PSTN的一呼入呼叫。

  2. 网关匹配呼入拨号对端1。

  3. 呼叫被递交对药房服务。

  4. 呼叫在ISDN侧得到连接。

  5. 网关开始CVPSelfServiceBootstrap.vxml VoiceXML脚本的执行。

  6. 网关发送HTTP GET请求到VXML服务器。

  7. 网关收到从VXML服务器的一个200 OK消息。此答复消息主题包含VXML文档(1)。此VXML文档告诉网关作用媒体文件在媒体服务器查找的呼叫的Welcome-1.wav。

  8. 网关发送HTTP GET请求对媒体服务器下载Welcome-1.wav文件。

  9. 网关在HTTP消息主题中接收从媒体服务器的200 OK并且接收Welcome-1.wav的内容。

  10. 网关发送POST HTTP请求到服务器如对定义“提交” VXML Document(1)的选项。

  11. 网关接收200其POST HTTP请求的OK。消息主题包含VXML文档(2)。此VXML文档告诉网关播放“感谢您呼叫Audium药房”。注意此提示符需要由一个文本到发音的服务器综合。

  12. 网关发送HTTP POST请求如对VXML文档定义(2)的提交选项。

  13. 网关收到HTTP POST请求的200 OK答复。消息主题包含VXML文档(3)。告诉呼叫方输入1或说替换物的此VXML文档定义了菜单提示符, 2或说药剂师。提示符由一个文本到语音服务器综合。输入(语音/DTMF)使用一台自动语音识别器,被认可。

  14. 网关创建将用于DTMF语法/语音识别。一旦网关建立一个会话用ASR服务器,这些语法然后发送到ASR服务器。

  15. 网关执行dial-peer查找设置一SIP会话用文本到语音服务器。呼出拨号对端6匹配。

  16. 网关发送SIP邀请对TTS服务器。邀请消息的SDP包含音频流和MRCPv2应用程序的(speechsynth信道)媒体信息。

  17. 网关执行dial-peer查找设置一SIP会话用自动语音识别服务器。呼出拨号对端5匹配。

  18. 网关发送SIP邀请到ASR服务器。SDP包含音频流、DTMF中继和MRCPv2应用程序的(speechrecog信道)媒体信息。

  19. 网关收到200 OK答复(对于SIP请邀请)从ASR服务器。SIP的SDP邀请消息指定这些:

    • G711ulaw编码、IP地址和RTP端口号音频流的

    • 此RTP数据流方向属性:“recvonly”

    • RTP-NTE根据DTMF中继

    • 网关(51001)将使用的TCP端口号建立一个MRCPv2会话用ASR服务器

  20. 网关发送SIP ACK到ASR服务器,并且自动语音识别的SIP会话被设立在网关和ASR服务器之间。

  21. 网关发送“DEFINE-GRAMMER” MRCP请求到ASR服务器。(一请求显示此处。)

  22. 网关收到其DEFINE-GRAMMAR请求的200完整答复。

  23. 网关收到200 OK答复(对于SIP请邀请)从TTS服务器。SIP的SDP邀请消息指定这些:

    • G711ulaw编码、IP地址和RTP端口号音频流的

    • 此RTP数据流方向属性:“sendonly”

    • RTP-NTE根据DTMF中继

    • 网关(51000)将使用的TCP端口号建立一个MRCPv2会话用TTS服务器

  24. 网关发送SIP ACK到TTS服务器,并且文本到语音的SIP会话被设立在网关和TTS服务器之间。

  25. 网关发送“认可” MRCP请求到ASR服务器开始DTMF/所说的话的识别。

  26. ASR服务器发送一“进展中”答复(RECOGNIZE请求)对网关。

  27. 网关完成Welcome-1.wav媒体文件下载,在缓存存储它,并且示出提示符给呼叫方。

  28. 网关发送“发言” MRCP请求对TTS服务器播放“感谢你为呼叫”提示符。

  29. TTS服务器发送对发言请求的一“进展中”答复。

  30. 在发言“感谢你为呼叫”提示符后, TTS服务器传送“SPEAK-COMPLETE”信息。

  31. 网关发送“发言” MRCP请求对TTS服务器播放“菜单”提示符(输入1或说Refil/输入2或说药剂师)。(debug输出没有显示。)

  32. TTS服务器发送播放提示符的一个进展中, SPEAK-COMPLETE消息和完成。(debug输出没有显示。)

  33. PSTN主叫方输入“1"选择替换物。网关发送此位作为RTP-NTE事件到ASR服务器。

  34. ASR服务器传送“RECOGNITION-COMPLETE”信息到网关通知网关认可了其中一个请求的事件(在这种情况下位1)。

  35. 在它接收从ASR服务器后的一个成功的识别通知, VXML网关在提交标记VXML文档上指定发送HTTP POST请求(3)。此POST请求通知VXML服务器位1由PSTN主叫方进入。

  36. VXML服务器然后寄发要求呼叫方输入处方此处的另一个VXML文档。(debug输出没有显示。)

  37. 网关传送MRCP信息对TTS发言提示符。(debug输出没有显示,但是他们类似于步骤28-30。)

  38. 网关传送MRCP信息对ASR由用户检测发言的4个位处方编号。(debug输出没有显示,但是他们类似于步骤25-26。)

  39. ASR认可4个位处方编号并且传送“RECOGNITION-COMPLETE” MRCP信息到IOS VXML网关。

  40. 网关通知处方编号到VXML服务器通过发送HTTP POST请求。(debug输出没有显示,但是他们类似于步骤35。)

  41. 收集运送时间和通知呼叫方的VXML服务器发送VXML页处方将是为pickup准备。网关由交互作用执行这些页用TTS和ASR服务器。(debug输出没有显示。)

  42. VXML服务器寄发的最终VXML文档包含<exit \ >在<form>的标记。这通知网关终止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

网关发送HTTP GET请求到VXML服务器

*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

网关在HTTP消息主题中接收从媒体服务器的200 OK并且接收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).

网关发送POST HTTP请求到服务器如对定义“提交” VXML Document(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文档告诉网关播放“感谢您呼叫Audium药房”。注意此提示符需要由一个文本到发音的服务器综合。

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

网关发送HTTP POST请求如对VXML文档定义(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)。告诉呼叫方输入1或说替换物的此VXML文档定义了菜单提示符,或者输入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

网关执行Dial-peer查找设置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=)

 

网关发送SIP邀请对TTS服务器

邀请消息的SDP包含音频流和MRCPv2应用程序的(speechsynth信道)媒体信息。

 

*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

网关执行Dial-peer查找设置SIP会话用ASR服务器

呼出拨号对端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=)

网关发送SIP邀请到ASR服务器

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

网关收到200 OK答复(对于SIP请邀请)从ASR服务器

  1. G711ulaw编码、IP地址和RTP端口号音频流的。

  2. 此RTP数据流方向属性是“recvonly”。

  3. RTP-NTE根据DTMF中继。

  4. 网关(51001)将使用的TCP端口号建立一个MRCPv2会话用ASR服务器。

*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

网关收到200 OK答复(对于SIP请邀请)从TTS服务器

SIP的SDP邀请消息指定这些:

  1. G711ulaw编码、IP地址和RTP端口号音频流的。

  2. 此RTP数据流方向属性是“sendonly”。

  3. RTP-NTE根据DTMF中继

  4. 网关(51000)将使用的TCP端口号建立一个MRCPv2会话用TTS服务器。

*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

网关发送SIP ACK到TTS服务器

文本到语音的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

网关发送“认可” MRCP请求到ASR服务器

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: 

网关发送“发言” 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服务器发送发言请求的“进展中"答复

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服务器传送“RECOGNITION-COMPLETE”信息到网关

这通知网关认可了其中一个请求的事件(在这种情况下位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网关在提交标记VXML文档上指定发送HTTP POST请求(3)后。此POST请求通知VXML服务器位1由PSTN主叫方进入。

*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认可四位数字的处方编号

ASR传送RECOGNITION-COMPLETE MRCP信息到IOS VXML网关。

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

相关信息


Document ID: 98582