Voix : Routage des appels/Plan de composition

Flux d'appels d'une passerelle XML voix IOS vers CVP à l'aide de MRCPv1 ASR / TTS

18 octobre 2016 - Traduction automatique
Autres versions: PDFpdf | Anglais (22 août 2015) | Commentaires


Contenu


Introduction

Le langage XML de Voix (VXML) est une norme définie par World Wide Web Consortium (W3C). VXML est conçu pour créer les dialogues sonores qui fournissent le discours synthétisé, la reconnaissance des mots parlés, la reconnaissance des chiffres DTMF et les enregistrements de l'audio parlé. Le serveur et les clients VXML emploient le protocole HTTP réputé pour permuter des documents et des pages VXML.

Le port voix de Cisco (CVP) fournit les applications intelligentes et de la réponse vocale interactive (RVI) qui peuvent être accédées à au-dessus du téléphone. Il y a trois types de déploiements CVP :

  • Service autonome

  • Contrôle d'appel CVP

  • File d'attente et transfert d'appel

Des fonctionnalités synthétisées de la parole, de reconnaissance des mots parlés ou de chiffre DTMF sont fournies par des serveurs de la reconnaissance vocale texte-voix (TTS) et automatique (ASR). La passerelle du ½ VXML du ¿  de Cisco IOSï communique avec les serveurs TTS et ASR utilisant le protocole de contrôle des ressources média (MRCP). Il y a deux versions de MRCP (RFC 4463), à savoir MRCPv1 (MRCP au-dessus de RTSP) et MRCPv2 (MRCP au-dessus de SIP).

Ce document décrit l'écoulement d'appel d'une passerelle de la Voix XML de Cisco IOS à l'appel CVP dans un déploiement autonome de service qui utilise des serveurs MRCPv1 TTS ou ASR. Une application de pharmacie témoin a été déployée au serveur CVP VXML.

Conditions préalables

Conditions requises

Aucune spécification déterminée n'est requise pour ce document.

Composants utilisés

Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :

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

  • Serveur VXML : CVP 4.0

  • Serveur ASR/TTS : Nuance ASR v8.5 et TTS v4.0.6

Les informations contenues dans ce document ont été créées à partir des périphériques d'un environnement de laboratoire spécifique. Tous les périphériques utilisés dans ce document ont démarré avec une configuration effacée (par défaut). Si votre réseau est opérationnel, assurez-vous que vous comprenez l'effet potentiel de toute commande.

Conventions

Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.

Configurez

Cette section vous fournit des informations pour configurer les fonctionnalités décrites dans ce document.

Remarque: Utilisez l'outil Command Lookup Tool (clients enregistrés seulement) pour trouver plus d'informations sur les commandes utilisées dans ce document.

Diagramme du réseau

Ce document utilise la configuration réseau suivante :

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

Configurations

Ce document utilise la configuration suivante :

Configuration de passerelle 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

Exemple d'écoulement d'appel

Cette section décrit l'écoulement d'appel ce des résultats de cet exemple de configuration.

  1. Un appel RNIS arrive au PSTN/au VXML Gatway à travers le T1 PRI 3/0.

  2. La passerelle IOS apparie l'homologue de numérotation POTS 1 en tant qu'homologue de numérotation en entrée pour cet appel.

  3. La passerelle IOS remet outre du Contrôle d'appel au service de pharmacie qui est le cadran-pair associé 1.

  4. Le script CVP VXML/TCL associé avec le service de pharmacie envoie une requête HTTP GET au serveur VXML.

  5. Le serveur VXML renvoie une réponse de 200 OKS. Cette réponse contient un document ou la page VXML.

  6. La passerelle IOS exécute le document VXML.

  7. Si le document VXML spécifie un URL pour une demande d'audio, la passerelle IOS télécharge le fichier audio et lit la demande.

  8. Si le document VXML spécifie un texte pour une demande d'audio, la passerelle IOS établit une session de RTSP avec rtsp://10.86.177.39/synthesizer (serveur TTS). Après que la session de RTSP soit établie, la passerelle et des messages de l'échange MRCP de serveur TTS comme PARLENT, SPEAK-COMPLETE à l'aide du RTSP ANNONCENT la demande.

    Le serveur TTS envoie le flux audio de RTP G.711ulaw à l'adresse IP et au numéro de port UDP fournis par la passerelle dans l'en-tête de « transport » de la demande de configuration de RTSP.

  9. Si les specifes de document VXML la passerelle pour identifier des chiffres DTMF et des mots parlés, passerelle IOS établit une session de RTSP avec rtsp://10.86.177.39/recognizer (serveur ASR). Après que la session de RTSP soit établie, les messages de l'échange MRCP de passerelle et de serveur ASR comme DÉFINISSENT LA GRAMMAIRE, TERMINEZ-VOUS, RECONNAISSEZ, RECOGNITION-COMPLETE à l'aide du RTSP ANNONCENT la demande.

    La passerelle IOS VXML envoie le flux audio de RTP G.711ulaw à l'adresse IP et au numéro de port UDP fournis par l'ASR dans le SDP de la réponse d'OK du RTSP 200. La passerelle IOS VXML envoie les chiffres écrits par l'utilisateur PSTN comme événements RTP-NTE au serveur ASR.

  10. Après l'exécution du document VXML, la passerelle envoie une demande de POST de HTTP (avec un ensemble de paramètres) comme spécifié dans la balise de <submit> du document ou de la page VXML.

  11. Étapes 6 ? 10 se produisent pour chaque document VXML envoyé par le serveur.

  12. Quand l'application VXML termine le service fourni à l'appelant, elle envoie un document VXML avec juste une balise <exit/> dans l'élément de <form>.

  13. La passerelle IOS déconnecte les sessions MRCPv1 établies avec les serveurs TTS et ASR.

  14. La passerelle IOS déconnecte le faire appel au côté RNIS.

Vérifiez

Référez-vous à cette section pour vous assurer du bon fonctionnement de votre configuration.

L'Outil Interpréteur de sortie (clients enregistrés uniquement) (OIT) prend en charge certaines commandes show. Utilisez l'OIT pour afficher une analyse de la sortie de la commande show .

  • brief de show call active voice

    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
  • détail de show mrcp client session active

    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
    ############################################################
  • show voip rtp connections

    VoIP RTP active connections :
    No. CallId     dstCallId  LocalRTP RmtRTP LocalIP         RemoteIP       
    1   66         63         17704    1224   172.18.110.77   10.86.177.39
  • 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     119524      31           1271        0       
    url: http://172.18.110.75/Welcome-1.wav

Dépannez

Utilisez cette section pour dépanner votre configuration.

Commandes de débogage

Configurez la passerelle IOS pour se connecter met au point dans son tampon de journalisation et désactive le logging console.

Remarque: Référez-vous aux informations importantes sur les commandes de débogage avant d'utiliser les commandes de débogage.

Ce sont les commandes utilisées pour configurer la passerelle afin d'enregistrer met au point dans le tampon de journalisation de la passerelle :

  1. les horodateurs de service mettent au point la milliseconde date-heure

  2. entretenez l'ordre

  3. no logging console

  4. le logging buffered 5000000 mettent au point

  5. clear log

  • debug isdn q931

  • debug voip ccapi inout

  • par défaut de debug voip application vxml

  • vidage mémoire de debug voip application vxml

  • debug rtsp all

  • debug mrcp tout

  • debug http client tout

  • nommer-événement de nte de session de debug voip rtp

Sorties de débogage

Cette section fournit des sorties de débogage pour cet écoulement d'appel d'échantillon :

  1. La passerelle reçoit un appel entrant du PSTN

  2. La passerelle apparie l'homologue de numérotation en entrée 1

  3. L'appel est remis hors fonction au service de pharmacie

  4. L'appel obtient connecté du côté RNIS

  5. La passerelle commence l'exécution du script de VoiceXML CVPSelfServiceBootstrap.vxml

  6. La passerelle envoie une requête HTTP GET au serveur VXML

  7. La passerelle reçoit un message de 200 OKS du serveur VXML

  8. La passerelle envoie une requête HTTP GET au serveur multimédia de télécharger le fichier Welcome-1.wav

  9. La passerelle reçoit un OK 200 du serveur multimédia et reçoit le contenu du Welcome-1.wav au corps du message de HTTP

  10. La passerelle envoie une demande de POST de HTTP au serveur comme défini dans « soumettez » l'option du document VXML (1)

  11. La passerelle reçoit l'OK 200 pour sa demande de POST de HTTP

  12. La passerelle envoie une demande de POST de HTTP comme définie dans l'option de soumission du document VXML (2)

  13. La passerelle reçoit la réponse de 200 OKS pour la demande de POST de HTTP

  14. La passerelle crée les grammaires à utiliser pour DTMF/reconnaissance vocale

  15. La passerelle envoie une demande de configuration de RTSP au serveur ASR

  16. La passerelle reçoit une réponse de 200 OKS du serveur ASR

  17. La passerelle envoie demande MRCP la « DEFINE-GRAMMAR » au serveur ASR encastré dans le RTSP ANNONCENT la demande (juste une demande est affichée ici)

  18. La passerelle reçoit la réponse 200 COMPLÈTE pour sa demande DEFINE-GRAMMAR

  19. La passerelle envoie MRCP « IDENTIFIENT » la demande au serveur ASR

  20. Le serveur ASR envoie la réponse EN COURS à la demande de RECONNAISSANCE

  21. La passerelle termine le téléchargement du fichier multimédia Welcome-1.wav, lit la demande à l'appelant et l'enregistre dans le cache

  22. La passerelle envoie une demande de configuration de RTSP au serveur TTS

  23. La passerelle reçoit une réponse de 200 OKS du serveur TTS pour la demande de configuration de RTSP

  24. La passerelle envoie MRCP « PARLENT » la demande au serveur TTS de lire « bonjour et de vous remercier la demande d'appeler d'Audium pharmacie »

  25. Le serveur TTS envoie la réponse « EN COURS » pour la demande de PARLER

  26. Après que la demande soit lue, le serveur TTS envoie réponse MRCP la « SPEAK-COMPLETE » à la passerelle

  27. Le serveur ASR détecte le début de la parole et informe la passerelle utilisant réponse MRCP la « START-OF-SPEECH »

  28. La passerelle envoie la réponse de 200 OKS à MRCP annoncent la demande

  29. Le serveur ASR identifie le mot « remplit » et envoie message MRCP le « RECOGNITION-COMPLETE » à la passerelle

  30. Après réception d'une notification réussie de reconnaissance du serveur ASR, la passerelle VXML envoie une demande de POST de HTTP comme spécifiée dans la balise de SOUMISSION du document VXML (2)

  31. Le serveur VXML envoie des pages VXML pour collecter le nombre de prescription, temps d'intrcpt et pour informer l'appelant que la prescription sera prête pour l'intrcpt. La passerelle exécute ces pages en interagissant avec le serveur TTS et ASR (sorties de débogage non affichées).

  32. Le document de la finale VXML envoyé par le serveur VXML contient juste la balise de sortie sous la forme

  33. La passerelle termine l'application VXML

  34. La passerelle déconnecte le faire appel au côté RNIS

  35. La passerelle déconnecte la session de RTSP établie avec le serveur ASR

  36. La passerelle déconnecte la session de RTSP établie avec le serveur TTS

Appel entrant de 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

L'homologue de numérotation en entrée 1 est apparié

*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

L'appel est remis hors fonction au service de pharmacie

*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

L'appel obtient connecté du côté RNIS

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

La passerelle commence l'exécution du script de 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)

La passerelle envoie une requête HTTP GET au serveur 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

La passerelle reçoit un message de 200 OKS du serveur VXML

Le corps du message de cette réponse contient un document VXML (1). Le document VXML indique la passerelle lire Welcome-1.wav appelé par fichier multimédia situé dans un serveur multimédia

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

La passerelle envoie une requête HTTP GET au serveur multimédia de télécharger le fichier 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

La passerelle reçoit un OK 200 du serveur multimédia et reçoit le contenu du Welcome-1.wav au corps du message de 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

La passerelle envoie une demande de HTTP de POST au serveur comme défini dans « soumettez » l'option du 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

La passerelle reçoit l'OK 200 pour sa demande de HTTP de POST

Le corps du message contient un document VXML (2). Le document VXML indique la passerelle lire « bonjour et vous remercier d'appeler la pharmacie d'Audium.

Remarque: Cette demande doit être synthétisée par un serveur texte-voix.

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

La passerelle envoie une demande de POST de HTTP comme définie dans l'option de soumission du document 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

La passerelle reçoit la réponse de 200 OKS pour la demande de POST de HTTP

Le corps du message contient le document VXML (3). Ce document VXML définit un menu prompt qui indique l'appelant pour écrire 1 ou pour dire des recharges, pour écrire 2 ou pour dire le pharmacien. Les demandes sont synthétisées par un serveur TTS. Les entrées (la parole/dtmf) sont identifiées utilisant 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>

La passerelle crée les grammaires à utiliser pour DTMF/reconnaissance vocale

Ces grammaires sont alors envoyées au serveur ASR une fois que la passerelle établit une session de RTSP avec le serveur 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

La passerelle envoie une demande de configuration de RTSP au serveur 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

La passerelle reçoit une réponse de 200 OKS du serveur ASR

Le SDP de la réponse de 200 OKS contient l'adresse IP et le numéro de port UDP du serveur ASR auxquels la passerelle doit envoyer des paquets de 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

La passerelle envoie demande MRCP la « DEFINE-GRAMMAR » au serveur ASR encastré dans le RTSP ANNONCENT la demande

Seulement une demande est affichée ici :

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

La passerelle reçoit la réponse 200 COMPLÈTE pour sa demande 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

La passerelle envoie MRCP « IDENTIFIENT » la demande au serveur 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

Le serveur ASR envoie la réponse EN COURS à la demande de RECONNAISSANCE

*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

La passerelle termine le téléchargement du fichier multimédia Welcome-1.wav, lit la demande à l'appelant et l'enregistre dans le cache

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

La passerelle envoie une demande de configuration de RTSP au serveur 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

La passerelle reçoit une réponse de 200 OKS du serveur TTS pour la demande de configuration de 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

La passerelle envoie MRCP « PARLENT » la demande au serveur TTS de lire « bonjour et de vous remercier la demande d'appeler d'Audium pharmacie »

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

Le serveur TTS envoie la réponse « EN COURS » pour PARLENT la demande

*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

Après que la demande soit lue, le serveur TTS envoie réponse MRCP la « SPEAK-COMPLETE » à la passerelle

*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

Le serveur ASR détecte le début de la parole et informe la passerelle utilisant la réponse 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

La passerelle envoie la réponse de 200 OKS à MRCP annoncent la demande

*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

Le serveur ASR identifie le mot « remplit » et envoie message MRCP un « RECOGNITION-COMPLETE » à la passerelle

*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

Après réception d'une notification réussie de reconnaissance du serveur ASR, la passerelle VXML envoie une demande de POST de HTTP comme spécifiée dans la balise de SOUMISSION du document VXML (2)

Cette demande de POST informe le serveur VXML que l'utilisateur a sélectionné « remplit » l'option.

*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

Le dernier document VXML envoyé par le serveur VXML contient juste la balise de sortie sous la forme

Ceci indique la passerelle terminer la session 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>

La passerelle termine l'application 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)

La passerelle déconnecte le faire appel au côté RNIS

*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

La passerelle déconnecte la session de RTSP avec le serveur 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

La passerelle déconnecte la session de RTSP avec le serveur 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

Informations connexes


Document ID: 97213