Voz : Routing de llamadas/Planes de marcado

Gateway del Voice IOS XML al flujo de llamada del CVP usando MRCPv1 ASR/TTS

17 Octubre 2016 - Traducción Automática
Otras Versiones: PDFpdf | Inglés (22 Agosto 2015) | Comentarios


Contenido


Introducción

El Lenguaje de marcado extensible de la voz (VXML) es una norma establecida por el World Wide Web Consortium (W3C). El VXML se ha diseñado para crear diálogos audio que proporcionen habla sintetizada, reconocimiento de las palabras habladas, reconocimiento de dígitos DTMF y grabaciones del audio hablado. El servidor y los clientes VXML utilizan el conocido protocolo HTTP para intercambiar documentos y páginas VXML.

El portal de la Voz de Cisco (CVP) entrega las aplicaciones inteligentes y de la respuesta de voz interactiva (IVR) que se pueden acceder sobre el teléfono. Hay tres tipos de implementaciones de CVP:

  • Servicio independiente

  • Control de llamadas del CVP

  • Cola y transferencia de la llamada

El discurso sintetizado, el reconocimiento de las palabras habladas o las funciones del dígito DTMF son proporcionados por los servidores del texto a voz (TTS) y del reconocimiento automático del discurso (ASR). El gateway del ½ VXML del ¿Â de Cisco IOSï comunica con los servidores TTS y ASR usando el Control Protocol de los recursos del medio (MRCP). Hay dos versiones de MRCP (RFC 4463), a saber MRCPv1 (MRCP sobre el RTSP) y MRCPv2 (MRCP sobre el SORBO).

Este documento describe el flujo de llamada de un gateway de la voz del Cisco IOS XML a la llamada del CVP en una instrumentación del servicio independiente que utilice los servidores MRCPv1 TTS o ASR. Una aplicación de la farmacia de la muestra fue desplegada en el servidor del CVP VXML.

prerrequisitos

Requisitos

No hay requisitos específicos para este documento.

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

  • Gateway IOS VXML: Cisco AS5400XM, IOS 12.4(11)T2

  • Servidor VXML: CVP 4.0

  • Servidor ASR/TTS: Matiz ASR v8.5 y TTS v4.0.6

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si la red está funcionando, asegúrese de haber comprendido el impacto que puede tener cualquier comando.

Convenciones

Consulte Convenciones de Consejos TécnicosCisco para obtener más información sobre las convenciones del documento.

Configurar

En esta sección encontrará la información para configurar las funciones descritas en este documento.

Nota: Use la herramienta Command Lookup Tool (clientes registrados solamente) para encontrar más información sobre los comandos usados en este documento.

Diagrama de la red

En este documento, se utiliza esta configuración de red:

/image/gif/paws/97213/ios-vxml-cvpcf1.gif

Configuraciones

Este documento usa esta configuración:

Configuración de gateway VXML

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


ip host asr-en-us 10.86.177.39
ip host tts-en-us 10.86.177.39

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


ivr prompt memory 15000

 
!--- Define the RTSP URI of ASR and TTS Server.


ivr asr-server rtsp://10.86.177.39/recognizer
ivr tts-server rtsp://10.86.177.39/synthesizer

 
!--- 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 or 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 the 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

Ejemplo del flujo de llamada

Esta sección describe el flujo de llamada ese los resultados de este ejemplo de configuración.

  1. Una llamada ISDN llega el PSTN/el VXML Gatway a través del T1 PRI 3/0.

  2. El gateway del IOS hace juego al POTS dial peer 1 como el dial peer de entrada para esta llamada.

  3. El gateway del IOS da del Control de llamadas al servicio de la farmacia que se asocia al dial-peer 1.

  4. El script Del CVP VXML/TCL asociado al servicio de la farmacia envía una petición get HTTP al servidor VXML.

  5. El servidor VXML vuelve una respuesta de 200 AUTORIZACIONES. Esta respuesta contiene un documento o la página VXML.

  6. El gateway del IOS ejecuta el documento VXML.

  7. Si el documento VXML especifica un URL para un prompt de audio, el gateway del IOS descarga el archivo de audio y juega el prompt.

  8. Si el documento VXML especifica un texto para un prompt de audio, el gateway del IOS establece una sesión RTSP con rtsp://10.86.177.39/synthesizer (servidor TTS). Después de que se establezca la sesión RTSP, el gateway y los mensajes del intercambio MRCP del servidor TTS por ejemplo HABLAN, SPEAK-COMPLETE usando el RTSP ANUNCIAN la petición.

    El servidor TTS envía la secuencia de audio G.711ulaw RTP a la dirección IP y al número del puerto UDP proporcionados por el gateway en la encabezado del “transporte” del pedido de configuración RTSP.

  9. Si los specifes del documento VXML el gateway para reconocer los dígitos DTMF y las palabras habladas, gateway del IOS establecen una sesión RTSP con rtsp://10.86.177.39/recognizer (servidor ASR). Después de que se establezca la sesión RTSP, los mensajes del intercambio MRCP del gateway y del servidor ASR por ejemplo DEFINEN LA GRAMÁTICA, COMPLETE, RECONOZCA, RECOGNITION-COMPLETE usando el RTSP ANUNCIAN la petición.

    El gateway IOS VXML envía la secuencia de audio G.711ulaw RTP a la dirección IP y al número del puerto UDP proporcionados por el ASR en el SDP de la respuesta de la AUTORIZACIÓN RTSP 200. El gateway IOS VXML envía los dígitos ingresados por el usuario PSTN como eventos RTP-NTE al servidor ASR.

  10. Después de que la ejecución del documento VXML, el gateway envíe una petición post HTTP (con un conjunto de parámetros) como se especifica en la etiqueta del <submit> del documento o de la página VXML.

  11. Los pasos 6 – 10 ocurren para cada documento VXML enviado por el servidor.

  12. Cuando la aplicación VXML acaba el servicio proporcionado al llamador, envía un documento VXML con apenas una etiqueta <exit/> dentro del elemento del <form>.

  13. El gateway del IOS desconecta las sesiones MRCPv1 establecidas con los servidores TTS y ASR.

  14. El gateway del IOS desconecta la llamada en el lado ISDN.

Verificación

Use esta sección para confirmar que su configuración funciona correctamente.

La herramienta Output Interpreter Tool (clientes registrados solamente) (OIT) soporta ciertos comandos show. Utilice la OIT para ver un análisis del resultado del comando show.

  • muestre la descripción de la voz activa de la llamada

    11E7 : 63 4728960ms.1 +0 pid:1 Answer 5555 active
     dur 00:00:31 tx:920/179920 rx:880/211200
     Tele 3/0:D (63) [3/0.1] tx:4600/4600/0ms None noise:-80 acom:51  i/0:-79/-27 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
    Total call-legs: 1
  • muestre el detalle del active de la sesión de cliente del mrcp

    No Of Active MRCP Sessions: 1
    
                       Call-ID: 0x3F same: 1
                 Resource Type: Synthesizer            URL: rtsp://10.86.177.39/synthesizer
    Method In Progress: SPEAK                State: SPEAKING
    
                 Resource Type: Recognizer             URL: rtsp://10.86.177.39/recognizer
    Method In Progress: RECOGNIZE            State: RECOGNIZING
    ############################################################
  • muestre las conexiones del rtp del voip

    VoIP RTP active connections :
    No. CallId     dstCallId  LocalRTP RmtRTP LocalIP         RemoteIP       
    1   66         63         17704    1224   172.18.110.77   10.86.177.39
  • muestre el caché del cliente HTTP

    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     119524      31           1271        0       
    url: http://172.18.110.75/Welcome-1.wav

Troubleshooting

Use esta sección para resolver problemas de configuración.

Comandos de Debug

Configure el gateway del IOS para registrar los debugs en su memoria intermedia de registro y para inhabilitar la consola de registro.

Nota: Consulte Información Importante sobre Comandos de Debug antes de usar un comando debug.

Éstos son los comandos usados para configurar el gateway para salvar los debugs en memoria intermedia de registro del gateway:

  1. service timestamps debug datetime msec

  2. mantenga la secuencia

  3. ninguna consola de registro

  4. el registro mitigó el debug 5000000

  5. borre el registro

  • debug isdn q931

  • debug voip ccapi inout

  • valor por defecto del vxml de la aplicación del voip del debug

  • volcado del vxml de la aplicación del voip del debug

  • rtsp todo del debug

  • mrcp todo del debug

  • cliente todo HTTP del debug

  • Nombrado-evento del nte de la sesión del rtp del voip del debug

‘Resultados de la depuración’

Esta sección proporciona las salidas de los debugs para este flujo de llamada de la muestra:

  1. El gateway recibe una llamada entrante del PSTN

  2. El gateway hace juego al dial peer de entrada 1

  3. La llamada se da apagado al servicio de la farmacia

  4. La llamada consigue conectada en el lado ISDN

  5. El gateway comienza la ejecución del script del VoiceXML CVPSelfServiceBootstrap.vxml

  6. El gateway envía una petición get HTTP al servidor VXML

  7. El gateway recibe un mensaje de 200 AUTORIZACIONES del servidor VXML

  8. El gateway envía una petición get HTTP al servidor de medios para descargar el archivo Welcome-1.wav

  9. El gateway recibe una AUTORIZACIÓN 200 del servidor de medios y recibe el contenido del Welcome-1.wav en el cuerpo del mensaje HTTP

  10. El gateway envía una petición post HTTP al servidor como definido en “someta” la opción del documento VXML (1)

  11. El gateway recibe la AUTORIZACIÓN 200 para su petición post HTTP

  12. El gateway envía una petición post HTTP según lo definido en la opción del someter del documento VXML (2)

  13. El gateway recibe la respuesta de 200 AUTORIZACIONES para la petición post HTTP

  14. El gateway crea las gramáticas que se utilizarán para el DTMF/el reconocimiento del discurso

  15. El gateway envía un pedido de configuración RTSP al servidor ASR

  16. El gateway recibe una respuesta de 200 AUTORIZACIONES del servidor ASR

  17. El gateway envía la petición MRCP “DEFINE-GRAMMAR” al servidor ASR integrado dentro del RTSP ANUNCIA la petición (apenas una petición se muestra aquí)

  18. El gateway recibe la respuesta COMPLETA 200 para su petición DEFINE-GRAMMAR

  19. El gateway envía MRCP “RECONOCE” la petición al servidor ASR

  20. El servidor ASR envía la respuesta EN CURSO a la petición del RECONOCIMIENTO

  21. El gateway acaba la descarga del archivo de media Welcome-1.wav, juega el prompt al llamador y lo salva en el caché

  22. El gateway envía un pedido de configuración RTSP al servidor TTS

  23. El gateway recibe una respuesta de 200 AUTORIZACIONES del servidor TTS para el pedido de configuración RTSP

  24. El gateway envía MRCP “HABLA” la petición al servidor TTS de jugar “buena mañana y de agradecerle por llamar el prompt de la farmacia de Audium”

  25. El servidor TTS envía la respuesta “EN CURSO” para la petición del DISCURSO

  26. Después de que se juegue el prompt, el servidor TTS envía la respuesta MRCP “SPEAK-COMPLETE” al gateway

  27. El servidor ASR detecta el comienzo del discurso y notifica el gateway usando la respuesta MRCP “START-OF-SPEECH”

  28. El gateway envía la respuesta de 200 AUTORIZACIONES a MRCP anuncia la petición

  29. El servidor ASR reconoce la palabra “rellena” y envía el mensaje MRCP “RECOGNITION-COMPLETE” al gateway

  30. Después de recibir una notificación acertada del reconocimiento del servidor ASR, el gateway VXML envía una petición post HTTP como se especifica en la etiqueta del SOMETER del documento VXML (2)

  31. El servidor VXML envía las páginas VXML para recoger el número de la prescripción, tiempo de recogida e informar al llamador que la prescripción estará lista para la recogida. El gateway ejecuta estas páginas obrando recíprocamente con el servidor TTS y ASR (salidas de los debugs no mostradas).

  32. El documento final VXML enviado por el servidor VXML contiene apenas la etiqueta de la salida en la forma

  33. El gateway termina la aplicación VXML

  34. El gateway desconecta la llamada en el lado ISDN

  35. El gateway desconecta la sesión RTSP establecida con el servidor ASR

  36. El gateway desconecta la sesión RTSP establecida con el servidor TTS

Llamada entrante del PSTN

*Feb  4 03:24:54.111: ISDN Se3/0:23 Q931: RX <- SETUP pd = 8  callref = 0x0099 
        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
*Feb  4 03:24:54.115: //-1/972590A48011/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

Corresponden con al dial peer de entrada 1

*Feb  4 03:24:54.115: //-1/972590A48011/CCAPI/cc_api_call_setup_ind_common:
  Interface=0x66C30F98, 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

La llamada se da apagado al servicio de la farmacia

*Feb  4 03:24:54.115: //63/972590A48011/CCAPI/cc_process_call_setup_ind:
  >>>>CCAPI handed cid 63 with tag 1 to app "_ManagedAppProcess_Pharmacy"
*Feb  4 03:24:54.115: //63/972590A48011/CCAPI/ccCallSetupAck:
  Call Id=63

La llamada consigue conectada en el lado ISDN

*Feb  4 03:24:54.119: ISDN Se3/0:23 Q931: TX -> CONNECT pd = 8  callref = 0x8099
*Feb  4 03:24:54.119: //63/972590A48011/CCAPI/ccCallHandoff:
  Silent=FALSE, Application=0x67569410, Conference Id=0xFFFFFFFF
*Feb  4 03:24:54.119: //63//VXML:/Open_CallHandoff:

El gateway comienza la ejecución del script del VoiceXML CVPSelfServiceBootstrap.vxml

*Feb  4 03:24:54.131: //63/972590A48011/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>:
*Feb  4 03:24:54.175: //63/972590A48011/VXML:/vxml_expr_eval:  
<var>: namep=handoffstring expr=session.handoff_string
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var handoffstring=session.handoff_string) 
<var>: namep=application expr=getValue('APP')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var application=getValue('APP')) 
<var>: namep=port expr=getValue('PORT')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var port=getValue('PORT')) 
<var>: namep=callid expr=getValue('CALLID')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var callid=getValue('CALLID')) 
<var>: namep=servername expr=getValue('PRIMARY')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var servername=getValue('PRIMARY')) 
<var>: namep=var1 expr=getValue('var1')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var var1=getValue('var1')) 
<var>: namep=var2 expr=getValue('var2')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var var2=getValue('var2')) 
<var>: namep=var3 expr=getValue('var3')
*Feb  4 03:24:54.243: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var var3=getValue('var3')) 
<var>: namep=var4 expr=getValue('var4')
*Feb  4 03:24:54.247: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var var4=getValue('var4')) 
<var>: namep=var5 expr=getValue('var5')
*Feb  4 03:24:54.247: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var var5=getValue('var5')) 
<var>: namep=status expr=getValue('status')
*Feb  4 03:24:54.247: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var status=getValue('status')) 
<var>: namep=prevapp expr=getValue('prevapp')
*Feb  4 03:24:54.247: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var prevapp=getValue('prevapp')) 
<var>: namep=survive expr=getValue('survive')
*Feb  4 03:24:54.247: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var survive=getValue('survive')) 
<var>: namep=handoffExit
*Feb  4 03:24:54.247: //63/972590A48011/VXML:/vxml_expr_eval:  
  expr=(var handoffExit)

El gateway envía una petición get HTTP al servidor VXML

*Feb  4 03:24:54.255: //63//HTTPC:/httpc_write_stream: Client write buffer fd(0):
GET /CVP/Server?application=GoodPrescriptionRefillApp7&callid=972590A4-185511D6-80110013-
803E8C8E&session.connection.remote.uri=5555
&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, text/html, audio/basic, audio/wav, multipart/form-data, 
application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

El gateway recibe un mensaje de 200 AUTORIZACIONES del servidor VXML

El cuerpo del mensaje de esta respuesta contiene un documento VXML (1). El documento VXML dice el gateway jugar el archivo de media Welcome-1.wav llamado situado en un servidor de medios

*Feb  4 03:24:54.263: processing server rsp msg: msg(63AC8784)
URL:http://172.18.110.75:7000/CVP/Server?application=GoodPrescriptionRefillApp7&
callid=972590A4-185511D6-80110013-803E8C8E&session.connection.remote.uri=
5555&session.connection.local.uri=5555, fd(0):
*Feb  4 03:24:54.263: Request msg: GET /CVP/Server?application=GoodPrescriptionRefillApp7&
callid=972590A4-185511D6-80110013-803E8C8E
&session.connection.remote.uri=5555&session.connection.local.uri=5555 HTTP/1.1
*Feb  4 03:24:54.263: Message Response Code: 200
*Feb  4 03:24:54.263: Message Rsp Decoded Headers:
*Feb  4 03:24:54.263: Date:Thu, 17 May 2007 15:48:31 GMT
*Feb  4 03:24:54.263: Content-Type:text/xml;charset=ISO-8859-1
*Feb  4 03:24:54.263: Connection:close
*Feb  4 03:24:54.263: Set-Cookie:JSESSIONID=6FE82FC3B0E02909CA5A9307D57F00E1; Path=/CVP
*Feb  4 03:24:54.263: headers:                                                               
*Feb  4 03:24:54.263: HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=6FE82FC3B0E02909CA5A9307D57F00E1; Path=/CVP
Content-Type: text/xml;charset=ISO-8859-1
Date: Thu, 17 May 2007 15:48:31 GMT
Connection: close

 
*Feb  4 03:24:54.263: body:
*Feb  4 03:24:54.263: <?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.getElap
 sedTime(audium_element_start_time_millisecs)" />
    <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog" />
   </block>
  </form>
 </vxml>

El gateway envía una petición get HTTP al servidor de medios para descargar el archivo Welcome-1.wav

*Feb  4 03:24:54.371: //63//HTTPC:/httpc_write_stream: Client write buffer fd(0):
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, text/html, audio/basic, audio/wav, multipart/form-data, 
application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

El gateway recibe una AUTORIZACIÓN 200 del servidor de medios y recibe el contenido del Welcome-1.wav en el cuerpo del mensaje HTTP

*Feb  4 03:24:54.391: read data from the socket 0 : first 400 bytes of data: 
HTTP/1.1 200 OK
Content-Length: 76152
Content-Type: audio/wav
Last-Modified: Thu, 03 May 2007 19:47:43 GMT
Accept-Ranges: bytes
ETag: "b27d69eabb8dc71:2eb"
Server: Microsoft-IIS/6.0
Date: Thu, 17 May 2007 15:48:31 GMT
Connection: close

RIFFo)(Unprintable char...)1057415645666D7420120007010401F00401F00108000666163744
000529106461746152910FFFFFFFFFFFFFFFF7AFFFFFFFD7E7E

El gateway envía un pedido de HTTP del POSTE al servidor como definido en “someta” la opción del VXML Document(1)

*Feb  4 03:24:54.371: //63//HTTPC:/httpc_write_stream: Client write buffer fd(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=6FE82FC3B0E02909CA5A9307D57F00E1; $Path=/CVP
Connection: close
Accept: text/vxml, text/x-vxml, application/vxml, application/x-vxml, application/voicexml, 
application/x-voicexml, text/plain, text/html, audio/basic, audio/wav, multipart/form-data, 
application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

El gateway recibe la AUTORIZACIÓN 200 para su pedido de HTTP del POSTE

El cuerpo del mensaje contiene un documento VXML (2). El documento VXML dice el gateway jugar la “buena mañana y agradecerle por llamar la farmacia de Audium.

Nota: Este prompt necesita ser sintetizado por un servidor del texto a voz.

*Feb  4 03:24:54.379: processing server rsp msg: msg(63AC8D3C)
URL:http://172.18.110.75:7000/CVP/Server, fd(1):
*Feb  4 03:24:54.379: Request msg: POST /CVP/Server HTTP/1.1
*Feb  4 03:24:54.379: Message Response Code: 200
*Feb  4 03:24:54.379: Message Rsp Decoded Headers:
*Feb  4 03:24:54.379: Date:Thu, 17 May 2007 15:48:31 GMT
*Feb  4 03:24:54.379: Content-Type:text/xml;charset=ISO-8859-1
*Feb  4 03:24:54.379: Connection:close
*Feb  4 03:24:54.379: headers:
*Feb  4 03:24:54.379: HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=ISO-8859-1
Date: Thu, 17 May 2007 15:48:31 GMT
Connection: close

 
*Feb  4 03:24:54.379: body:
*Feb  4 03:24:54.379: <?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">Good morning and thank you for calling Audium pharmacy.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'initial_audio_group' + '^^^' + application.getElap
sedTime(audium_element_start_time_millisecs)" />
   <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog" />
  </block>
 </form>
</vxml>

El gateway envía una petición post HTTP según lo definido en la opción del someter del documento VXML (2)

*Feb  4 03:24:54.399: //63//HTTPC:/httpc_write_stream: Client write buffer fd(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=6FE82FC3B0E02909CA5A9307D57F00E1; $Path=/CVP
Connection: close
Accept: text/vxml, text/x-vxml, application/vxml, application/x-vxml, application/voicexml, 
application/x-voicexml, text/plain, text/html, audio/basic, audio/wav, multipart/form-data, 
application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

El gateway recibe la respuesta de 200 AUTORIZACIONES para la petición post HTTP

El cuerpo del mensaje contiene el documento VXML (3). Este documento VXML define un prompt del menú que diga al llamante para ingresar 1 o para decir los repuestos, para ingresar 2 o para decir al farmacéutico. Los prompts son sintetizados por un servidor TTS. Las entradas (discurso/dtmf) se reconocen usando un ASR.

*Feb  4 03:24:54.415: processing server rsp msg: msg(63AC8F24)
URL:http://172.18.110.75:7000/CVP/Server, fd(1):
*Feb  4 03:24:54.415: Request msg: POST /CVP/Server HTTP/1.1
*Feb  4 03:24:54.415: Message Response Code: 200
*Feb  4 03:24:54.415: Message Rsp Decoded Headers:
*Feb  4 03:24:54.415: Date:Thu, 17 May 2007 15:48:31 GMT
*Feb  4 03:24:54.415: Content-Type:text/xml;charset=ISO-8859-1
*Feb  4 03:24:54.415: Connection:close
*Feb  4 03:24:54.415: headers:
*Feb  4 03:24:54.415: HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=ISO-8859-1
Date: Thu, 17 May 2007 15:48:31 GMT
Connection: close

 
*Feb  4 03:24:54.415: body:
*Feb  4 03:24:54.415: ... Buffer too large - truncated to (4096) len.
*Feb  4 03:24:54.415: <?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.getElap
sedTime(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="
*Feb  4 03:24:54.435: 
*Feb  4 03:24:54.435: //63//AFW_:/vapp_bgpost_done: status=http OK
*Feb  4 03:24:54.435: //63//HTTPC:/httpc_socket_cleanup: fd=-1, bytes_sent=531
*Feb  4 03:24:54.435: //63//AFW_:/vapp_driver: evtID: 194 vapp record state: 0
*Feb  4 03:24:54.435: //63//AFW_:/vapp_bgpost_done_event: 
*Feb  4 03:24:54.435: //63/972590A48011/VXML:/vxml_bgload_post_done:  
  vxmlhandle=6767ECFC status=0 async_status=400000000
*Feb  4 03:24:54.435: //63/972590A48011/VXML:/vxml_bgload_post_done:  
  Loading file with url (http://172.18.110.75:7000/CVP/Server)
*Feb  4 03:24:54.435: //63/972590A48011/VXML:/vxml_bgload_post_done: Script Content
<?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.getElap
sedTime(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.getElap
sedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||inputmode$$$' + 
choice_fld$.inputmode + '^^^' + application.getElap
sedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||interpretation$$$' + 
choice_fld + '^^^' + application.getElapsedTime(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>

El gateway crea las gramáticas que se utilizarán para el DTMF/el reconocimiento del discurso

Estas gramáticas entonces se envían al servidor ASR una vez que el gateway establece una sesión RTSP con el servidor ASR.

*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_change_server:  
asr_server=rtsp://10.86.177.39/recognizer
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_change_url: sess-id: 17, 
url=rtsp://10.86.177.39/recognizer
*Feb  4 03:24:54.447: //-1//RTSP:/rtsplib_pmh_parse_url:  
*Feb  4 03:24:54.447: //-1//RTSP:/rtsplib_pmh_parse_url: Input-Url: 
rtsp://10.86.177.39/recognizer
*Feb  4 03:24:54.447: //-1//RTSP:/rtsplib_pmh_parse_url: Hostname: 
10.86.177.39Port    : 554Path    : recognizer
*Feb  4 03:24:54.447: //-1//RTSP:/rtsplib_pmh_parse_url:  
*Feb  4 03:24:54.447: //-1//RTSP:/rtsplib_pmh_parse_url: Input-Url: 
rtsp://10.86.177.39/recognizer
*Feb  4 03:24:54.447: //-1//RTSP:/rtsplib_pmh_parse_url: Hostname: 
10.86.177.39Port    : 554Path    : recognizer
*Feb  4 03:24:54.447: //63//MRCP:/mrcp_change_url: fsm (674DA1E4) already defined
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option322@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> prescription</rule></grammar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option323@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" mode="dtmf" root="root"><rule id="root" 
scope="public">1</rule></grammar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option324@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> refills</rule></grammar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option325@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> prescription refills</rule></gram
mar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option326@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> refill my prescription</rule></gr
ammar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option327@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="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>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option328@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> refills please</rule></grammar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option329@field.grammar
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.447: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> Pharmacist</rule></grammar>
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.447: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option330@field.grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" mode="dtmf" root="root"><rule id="root" 
scope="public">2</rule></grammar>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option331@field.grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="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>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:option332@field.grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public"> pharmacist please</rule></grammar> 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:link333@document.grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar xmlns="http://www.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>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:link334@document.grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar xmlns="http://www.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>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:help@grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=1
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public">help</rule></grammar>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr: grammar_id=session:option322@field.grammar
grammar_id=session:option323@field.grammar
grammar_id=session:option324@field.grammar
grammar_id=session:option325@field.grammar
grammar_id=session:option326@field.grammar
grammar_id=session:option327@field.grammar
grammar_id=session:option328@field.grammar
grammar_id=session:option329@field.grammar
grammar_id=session:option330@field.grammar
grammar_id=session:option331@field.grammar
grammar_id=session:option332@field.grammar
grammar_id=session:link333@document.grammar
grammar_id=session:link334@document.grammar
grammar_id=session:help@grammar

El gateway envía un pedido de configuración RTSP al servidor ASR

*Feb  4 03:24:54.475: ########################################
*Feb  4 03:24:54.475: Request
*Feb  4 03:24:54.475: SETUP rtsp://10.86.177.39/recognizer RTSP/1.0
CSeq:  0
Transport: rtp/avp;unicast;client_port=17704;mode=record

El gateway recibe una respuesta de 200 AUTORIZACIONES del servidor ASR

El SDP de la respuesta de 200 AUTORIZACIONES contiene la dirección IP del servidor ASR y el número del puerto UDP a los cuales el gateway necesita enviar los paquetes RTP.

*Feb  4 03:24:54.531: //-1//RTSP:/rtsp_process_single_svr_resp: 
*Feb  4 03:24:54.531: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 0
Session: 27b1560a_00000748_464c95e8_000b_0000
Transport: RTP/AVP;unicast;client_port=17704;server_port=1224-1225;mode=record
Content-Length: 233
Content-Type: application/sdp

v=0
o=- 3388413032 3388413032 IN IP4 10.86.177.39
s=Nuance Media Server/1.0.0 SP10 (Windows 2000)
c=IN IP4 10.86.177.39
t=0 0
m=audio 1224 RTP/AVP 0 101
a=rtpmap:0 pcmu/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

El gateway envía la petición MRCP “DEFINE-GRAMMAR” al servidor ASR integrado dentro del RTSP ANUNCIA la petición

Solamente una petición se muestra aquí:

*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: rtsp_partial_socket_send: (fd:0 len:163) 400 bytes of data: 
ANNOUNCE rtsp://10.86.177.39/recognizer RTSP/1.0
CSeq:  1
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Type: application/mrcp
Content-Length:  390

*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: (socket:0) (bytes-sent:163)
*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: rtsp_partial_socket_send: (fd:0 len:28) 400 bytes of data: 
DEFINE-GRAMMAR  3 MRCP/1.0

*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: (socket:0) (bytes-sent:28)
*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: rtsp_partial_socket_send: (fd:0 len:70) 400 bytes of data: 
Speech-Language: en-us
Content-Base: http://172.18.110.75:7000/CVP/

*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: (socket:0) (bytes-sent:70)
*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: rtsp_partial_socket_send: (fd:0 len:99) 400 bytes of data: 
Content-Type: application/grammar+xml
Content-Id: option322@field.grammar
Content-Length: 193

*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: (socket:0) (bytes-sent:99)
*Feb  4 03:24:54.535: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.535: rtsp_partial_socket_send: (fd:0 len:193) 400 bytes of data: 
<?xml version="1.0" encoding="UTF-8"?><grammar version="1.0" 
xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root">
<rule id="root" scope="public"> prescription</rule></grammar>

El gateway recibe la respuesta COMPLETA 200 para su petición DEFINE-GRAMMAR

*Feb  4 03:24:54.555: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 1
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Length: 27
Content-Type: application/mrcp

MRCP/1.0 3 200 COMPLETE

El gateway envía MRCP “RECONOCE” la petición al servidor ASR

*Feb  4 03:24:54.619: rtsp_partial_socket_send: (fd:0 len:24) 400 bytes of data: 
RECOGNIZE  17 MRCP/1.0

*Feb  4 03:24:54.619: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.619: (socket:0) (bytes-sent:24)
*Feb  4 03:24:54.619: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.619: rtsp_partial_socket_send: (fd:0 len:347) 400 bytes of data: 
Speech-Language: en-us
Confidence-Threshold: 40
Sensitivity-Level: 50
Speed-Vs-Accuracy: 50
Dtmf-Interdigit-Timeout: 10000
Dtmf-Term-Timeout: 0
Dtmf-Term-Char: #
No-Input-Timeout: 60000
N-Best-List-Length: 1
Logging-Tag: 63:63
Accept-Charset: charset: utf-8
Content-Base: http://172.18.110.75:7000/CVP/
Recognizer-Start-Timers: false
 
*Feb  4 03:24:54.619: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.619: (socket:0) (bytes-sent:347)
*Feb  4 03:24:54.619: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.619: rtsp_partial_socket_send: (fd:0 len:52) 400 bytes of data: 
Content-Type: text/uri-list
Content-Length: 453

 
*Feb  4 03:24:54.619: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.619: (socket:0) (bytes-sent:52)
*Feb  4 03:24:54.619: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.619: rtsp_partial_socket_send: (fd:0 len:256) 400 bytes of data: 
session:option322@field.grammar
session:option323@field.grammar
session:option324@field.grammar
session:option325@field.grammar
session:option326@field.grammar
session:option327@field.grammar
session:option328@field.grammar
session:option329@field.grammar
*Feb  4 03:24:54.623: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.623: (socket:0) (bytes-sent:256)
*Feb  4 03:24:54.623: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:24:54.623: rtsp_partial_socket_send: (fd:0 len:197) 400 bytes of data: 
session:option330@field.grammar
session:option331@field.grammar
session:option332@field.grammar
session:link333@document.grammar
session:link334@document.grammar
session:help@grammar

El servidor ASR envía la respuesta EN CURSO a la petición del RECONOCIMIENTO

*Feb  4 03:24:54.875: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 15
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Length: 31
Content-Type: application/mrcp

MRCP/1.0 17 200 IN-PROGRESS

El gateway acaba la descarga del archivo de media Welcome-1.wav, juega el prompt al llamador y lo salva en el caché

*Feb  4 03:25:07.811: //63//HTTPC:/httpc_is_cached: HTTPC_FILE_IS_CACHED
*Feb  4 03:25:07.811: //-1//HTTPC:/httpc_set_cache_revoke_cb: 
Registering revoke_callback(0x61D9672C)+pcontext(0x6767A9FC) for cache p(0x672DA9C8)
*Feb  4 03:25:07.811: //63//AFW_:/vapp_driver: evtID: 145 vapp record state: 0
*Feb  4 03:25:07.811: //63//AFW_:/vapp_play_done: evID=145 reason=13, protocol=2, 
status_code=0, dur=9504, rate=0
*Feb  4 03:25:07.811: //63/972590A48011/VXML:/vxml_media_done:

El gateway envía un pedido de configuración RTSP al servidor TTS

*Feb  4 03:25:07.811: //-1//RTSP:/rtsplib_send_setup: 
*Feb  4 03:25:07.811: ########################################
*Feb  4 03:25:07.811: Request
*Feb  4 03:25:07.811: SETUP rtsp://10.86.177.39/synthesizer RTSP/1.0
CSeq:  16
Session: 27b1560a_00000748_464c95e8_000b_0000
Transport: rtp/avp;unicast;source=172.18.110.77;destination=172.18.110.77;
client_port=17704-17705

El gateway recibe una respuesta de 200 AUTORIZACIONES del servidor TTS para el pedido de configuración RTSP

*Feb  4 03:25:07.831: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 16
Session: 27b1560a_00000748_464c95e8_000b_0000
Transport: RTP/AVP;unicast;client_port=17704;server_port=1224-1225

El gateway envía MRCP “HABLA” la petición al servidor TTS de jugar “buena mañana y de agradecerle por llamar el prompt de la farmacia de Audium”

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:165) 400 bytes of data: 
ANNOUNCE rtsp://10.86.177.39/synthesizer RTSP/1.0
CSeq:  17
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Type: application/mrcp
Content-Length:  307

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: (socket:0) (bytes-sent:165)
*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:19) 400 bytes of data: 
SPEAK  2 MRCP/1.0

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: (socket:0) (bytes-sent:19)
*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:114) 400 bytes of data: 
Kill-On-Barge-In: true
Speech-Language: en-us
Logging-Tag: 63:63
Content-Base: http://172.18.110.75:7000/CVP/

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: (socket:0) (bytes-sent:114)
*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:65) 400 bytes of data: 
Content-Type: application/synthesis+ssml
Content-Length: 109

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: (socket:0) (bytes-sent:65)
*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:109) 400 bytes of data: 
<?xml version="1.0" encoding="UTF-8"?><speak> Good morning and thank you for calling Audium 
pharmacy.</speak>

El servidor TTS envía la respuesta “EN CURSO” para HABLA la petición

*Feb  4 03:25:08.031: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 17
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Length: 30
Content-Type: application/mrcp

MRCP/1.0 2 200 IN-PROGRESS

Después de que se juegue el prompt, el servidor TTS envía la respuesta MRCP “SPEAK-COMPLETE” al gateway

*Feb  4 03:25:11.911: rtsp_process_single_svr_resp: 400 bytes of data: 
ANNOUNCE rtsp://10.86.177.39/synthesizer RTSP/1.0
CSeq: 1
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Length: 68
Content-Type: application/mrcp

SPEAK-COMPLETE 2 COMPLETE MRCP/1.0
Completion-Cause: 000 normal

El servidor ASR detecta el comienzo del discurso y notifica el gateway usando la respuesta START-OF-SPEECH

*Feb  4 03:25:19.711: //-1//RTSP:/rtsp_process_single_svr_resp: 
*Feb  4 03:25:19.711: rtsp_process_single_svr_resp: 400 bytes of data: 
ANNOUNCE rtsp://10.86.177.39/recognizer RTSP/1.0
CSeq: 3
Session: 27b1560a_00000748_464c95e8_000b_0000
Content-Length: 61
Content-Type: application/mrcp

START-OF-SPEECH 17 IN-PROGRESS MRCP/1.0
Proxy-Sync-Id: 1

El gateway envía la respuesta de 200 AUTORIZACIONES a MRCP anuncia la petición

*Feb  4 03:25:19.711: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:25:19.711: rtsp_partial_socket_send: (fd:0 len:76) 400 bytes of data: 
RTSP/1.0 200 OK
CSeq:  3
Session: 27b1560a_00000748_464c95e8_000b_0000

El servidor ASR reconoce la palabra “rellena” y envía un mensaje MRCP “RECOGNITION-COMPLETE” al gateway

*Feb  6 00:58:17.960: rtsp_process_single_svr_resp: 400 bytes of data: 
ANNOUNCE rtsp://10.86.177.39/recognizer RTSP/1.0
CSeq: 4
Session: 27b1560a_00000748_464f166e_000f_0000
Content-Length: 848
Content-Type: application/mrcp

RECOGNITION-COMPLETE 17 COMPLETE MRCP/1.0
Completion-Cause: 000 success
Content-Type: application/x-nlsml
Content-Length: 716

<?xml version="1.0" encoding="UTF-8"?>
<result grammar="session:option420@field.grammar">
  <interpreta
*Feb  4 03:25:20.867: //-1//RTSP:/rtsp_pmh_parse_svr_response:  
*Feb  4 03:25:20.867: //-1//RTSP:/rtsp_pmh_parse_svr_response: 
just one response(may be partial): 849

Después de recibir una notificación acertada del reconocimiento del servidor ASR, el gateway VXML envía una petición post HTTP como se especifica en la etiqueta del SOMETER del documento VXML (2)

Esta petición post informa al servidor VXML que el usuario ha seleccionado “rellena” la opción.

*Feb  4 03:25:20.963: //63/972590A48011/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%5
E%5E4%7C%7C%7Cutterance$$$refills%5E%5E%5E26516%7C%7C%7Cinputmode$$$voice%5E%5E%5E26516%
7C%7C%7Cinterpretation$$$refills%5E%5E%5E265
16%7C%7C%7Cconfidence$$$0.55%5E%5E%5E26516&confidence=0.55&choice_fld=refills 
len 271maxage -1 maxstale -1
*Feb  4 03:25:20.963: //63//AFW_:/vapp_bgpost: url=http://172.18.110.75:7000/CVP/Server; 
mime_type=application/x-www-form-urlencoded; len=271; iov_base=audium_vxmlLog=%7C%7C%
7Caudio_group$$$initial_audio_group%5E%5E%5E4%7C%7C%7Cutterance$$$refills%5E%5E%5E26516%7C
%7C%7Cinputmode$$$voice%5E%5E%5E26516%7C%7C%7Cinterpretation$$$refills%5E%5E%5E26516%7C%7C%
7Cconfidence$$$0.55%5E%5E%5E26516&confide
nce=0.55&choice_fld=refills 

 
*Feb  4 03:25:21.039: //63//HTTPC:/httpc_socket_send: 
*Feb  4 03:25:21.039: about to send data to the socket 0 : first 400 bytes of data: 
POST /CVP/Server HTTP/1.1
Host: 172.18.110.75:7000
Content-Length: 271
Content-Type: application/x-www-form-urlencoded
Cookie: $Version=0; JSESSIONID=6FE82FC3B0E02909CA5A9307D57F00E1; $Path=/CVP
Connection: close
Accept: text/vxml, text/x-vxml, application/vxml, application/x-vxml, application/voicexml, 
application/x-voicexml, text/plain, text/html, audio/basic, audio/wav, multipart/form-dat

El documento del último VXML enviado por el servidor VXML contiene apenas la etiqueta de la salida en la forma

Esto dice el gateway terminar la sesión VXML.

*Feb  4 03:26:20.623: processing server rsp msg: msg(63ABB204)
URL:http://172.18.110.75:7000/CVP/Server, fd(0):
*Feb  4 03:26:20.623: Request msg: POST /CVP/Server HTTP/1.1
*Feb  4 03:26:20.623: Message Response Code: 200
*Feb  4 03:26:20.623: Message Rsp Decoded Headers:
*Feb  4 03:26:20.623: Date:Thu, 17 May 2007 15:49:57 GMT
*Feb  4 03:26:20.623: Content-Type:text/xml;charset=ISO-8859-1
*Feb  4 03:26:20.623: Connection:close
*Feb  4 03:26:20.623: Set-Cookie:JSESSIONID=NULL; Expires=Thu, 01-Jan-1970 00:00:10 GMT; 
Path=/CVP
*Feb  4 03:26:20.623: headers:
*Feb  4 03:26:20.623: 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: Thu, 17 May 2007 15:49:57 GMT
Connection: close

 
*Feb  4 03:26:20.627: body:
*Feb  4 03:26:20.627: <?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>

El gateway termina la aplicación VXML

*Feb  4 03:26:28.803: //63/972590A48011/VXML:/vxml_vapp_terminate:  
  vapp_status=0 ref_count 0
*Feb  4 03:26:28.803: //63//AFW_:/vapp_terminate: 
*Feb  4 03:26:28.803: //63//AFW_:/vapp_session_exit_event_name: Exit Event vxml.session.complete
*Feb  4 03:26:28.803: //63//AFW_:/AFW_M_VxmlModule_Terminate: 
*Feb  4 03:26:28.803: //63//AFW_:/vapp_checksessionstate: 
*Feb  4 03:26:28.803: //63//AFW_:/vapp_checkifdone: Object: 1, Leg: 1
*Feb  4 03:26:28.803: //63/972590A48011/VXML:/pop_exec_stack:  

*Feb  4 03:26:28.803: pop_exec_stack: sidp->vxmlp->urip=http://172.18.110.75:7000/CVP/Server
*Feb  4 03:26:28.803: //63/972590A48011/VXML:/vxml_leave_scope:  
  scope=application
*Feb  4 03:26:28.803: vxml_tree_delete:mem_mgr_mempool_free: mem_refcnt(6848EE98)=
0 - mempool cleanup
*Feb  4 03:26:28.803: vxml_tree_delete:mem_mgr_mempool_free: mem_refcnt(6848CD00)=
0 - mempool cleanupnls_mem_free
*Feb  4 03:26:28.803: nls_mem_free:mem_mgr_mempool_free: mem_refcnt(67651498)=
0 - mempool cleanup
*Feb  4 03:26:28.803: //63/972590A48011/VXML:/vxml_session_delete:  

*Feb  4 03:26:28.803: vxml_session_delete:mem_mgr_mempool_free: mem_refcnt(6848CD54)=
0 - mempool cleanup
*Feb  4 03:26:28.803: //63//AFW_:/vapp_checksessionstate: 
*Feb  4 03:26:28.803: //63//AFW_:/vapp_checkifdone: Object: 0, Leg: 0
*Feb  4 03:26:28.807: //63/972590A48011/CCAPI/ccCallDisconnect:
  Cause Value=16, Tag=0x0, Call Entry(Previous Disconnect Cause=0, Disconnect Cause=0)
*Feb  4 03:26:28.807: //63/972590A48011/CCAPI/ccCallDisconnect:
  Cause Value=16, Call Entry(Responsed=TRUE, Cause Value=16)

El gateway desconecta la llamada en el lado ISDN

*Feb  4 03:26:28.807: ISDN Se3/0:23 Q931: TX -> DISCONNECT pd = 8  callref = 0x8099 
       Cause i = 0x8090 - Normal call clearing
*Feb  4 03:26:28.819: ISDN Se3/0:23 Q931: RX <- RELEASE pd = 8  callref = 0x0099
*Feb  4 03:26:28.819: ISDN Se3/0:23 Q931: TX -> RELEASE_COMP pd = 8  callref = 0x8099

El gateway desconecta la sesión RTSP con el servidor ASR

*Feb  4 03:26:28.823: //-1//RTSP:/rtsplib_send_teardown: 
*Feb  4 03:26:28.823: ########################################
*Feb  4 03:26:28.823: Request
*Feb  4 03:26:28.823: TEARDOWN rtsp://10.86.177.39/recognizer RTSP/1.0
CSeq:  62
Session: 27b1560a_00000748_464c95e8_000b_0000

 
*Feb  4 03:26:28.975: //-1//RTSP:/rtsp_process_single_svr_resp: 
*Feb  4 03:26:28.975: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 62
Session: 27b1560a_00000748_464c95e8_000b_0000

El gateway desconecta la sesión RTSP con el servidor TTS

*Feb  4 03:26:28.823: //-1//RTSP:/rtsp_partial_socket_send: 
*Feb  4 03:26:28.823: rtsp_partial_socket_send: (fd:0 len:111) 400 bytes of data: 
TEARDOWN rtsp://10.86.177.39/synthesizer RTSP/1.0
CSeq:  63
Session: 27b1560a_00000748_464c95e8_000b_0000


*Feb  4 03:26:28.979: rtsp_process_single_svr_resp: 400 bytes of data: 
RTSP/1.0 200 OK
CSeq: 63
Session: 27b1560a_00000748_464c95e8_000b_0000

Información Relacionada


Document ID: 97213