Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Convenzioni

Configurazione

Esempio di rete

Configurazioni

Esempio di flusso di chiamata

Verifica

Risoluzione dei problemi

Comandi debug

Output di debug

Informazioni correlate

Introduzione

VXML (Voice Extensible Markup Language) è uno standard definito dal World Wide Web Consortium (W3C). È progettato per creare dialoghi audio che forniscono sintesi vocale, riconoscimento delle parole pronunciate, riconoscimento delle cifre DTMF e registrazione dell'audio parlato. Il server e i client VXML utilizzano il noto protocollo HTTP per scambiare documenti/pagine VXML.

Cisco Voice Portal (CVP) offre applicazioni IVR (Voice Response) intelligenti e interattive a cui è possibile accedere telefonicamente. Esistono tre tipi di distribuzione CVP:

1. Servizio autonomo

2. Controllo delle chiamate CVP

3. Coda di chiamata e trasferimento

La sintesi vocale e il riconoscimento delle parole pronunciate / funzionalità delle cifre DTMF sono fornite da TTS (Text-to-Speech) e ASR (Automatic Speech Recognition Server). IOS® VXML Gateway comunica con il server TTS / ASR attraverso il protocollo MRCP (Media Resource Control Protocol). MRCP è disponibile in due versioni: MRCPv1 (MRCP over RTSP) e MRCPv2 (MRCP over SIP).

Questo documento descrive il flusso di chiamate da un gateway XML voce IOS a una chiamata CVP in una distribuzione di servizi standalone che utilizza server MRCPv2 TTS / ASR. Un'applicazione farmaceutica di esempio è stata distribuita nel server VXML CVP.

Prerequisiti

Requisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:

- IOS VXML Gateway: Cisco AS5400XM, IOS 12.4(15)T1

- Server VXML: CVP 4.0

- Server ASR/TTS: Loquendo Speech Suite 7.0

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Convenzioni

Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.

Configurazione

In questa sezione vengono presentate le informazioni necessarie per configurare le funzionalità descritte più avanti nel documento.

Nota: per ulteriori informazioni sui comandi menzionati in questa sezione, usare lo strumento di ricerca dei comandi (solo utenti registrati).

Esempio di rete

Nel documento viene usata questa impostazione di rete:

Configurazioni

Nel documento vengono usate queste configurazioni:

Configurazione di VXML Gateway

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

ip host asr-en-us 172.18.110.76

ip host tts-en-us 172.18.110.76

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

voice class uri  TTS sip

pattern tts@172.18.110.76

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

voice class uri  ASR sip

pattern asr@172.18.110.76

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

ivr prompt memory 15000

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

ivr asr-server sip:asr@172.18.110.76

ivr tts-server sip:tts@172.18.110.76

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

application

service CVPSelfService flash:

CVPSelfServiceBootstrap.vxml

paramspace english language en

paramspace english index 0

paramspace english location flash:

paramspace english prefix en

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

service Pharmacy flash:CVPSelfService.tcl

paramspace english index 0

paramspace english language en

paramspace english location flash:

param CVPSelfService-port 7000

param CVPSelfService-app

GoodPrescriptionRefillApp7

paramspace english prefix en

param CVPPrimaryVXMLServer 172.18.110.75

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

mrcp client rtpsetup enable

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

http client cache memory pool 15000

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

http client cache memory file 500

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

no http client connection persistent

!--- Configure the T1 PRI

controller T1 3/0

framing esf

linecode b8zs

pri-group timeslots 1-24

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

interface Serial3/0:23

no ip address

encapsulation hdlc

isdn switch-type primary-net5

isdn incoming-voice modem

no cdp enable

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

dial-peer voice 1 pots

service pharmacy

destination-pattern 5555

direct-inward-dial

port 3/0:D

forward-digits all

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

dial-peer voice 5 voip

session protocol sipv2

destination uri ASR

dtmf-relay rtp-nte

codec g711ulaw

no vad

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

dial-peer voice 6 voip

session protocol sipv2

destination uri TTS

dtmf-relay rtp-nte

codec g711ulaw

no vad

Esempio di flusso di chiamata

In questa sezione viene descritto il flusso di chiamate risultante da questo esempio di configurazione.

1. Una chiamata ISDN arriva al gateway PSTN/VXML in T1 PRI 3/0.

2. Il gateway IOS corrisponde al dial-peer POTS 1 come dial-peer in ingresso per questa chiamata.

3. Il gateway IOS consegna il controllo delle chiamate al servizio Pharmacy associato al dial-peer 1.

4. Lo script VXML/TCL CVP associato al servizio Pharmacy invia una richiesta HTTP GET al server VXML.

5. Il server VXML restituisce 200 OK come risposta. La risposta contiene un documento/pagina VXML.

6. Il gateway IOS esegue il documento VXML.

7. Se il documento VXML specifica un URL per un prompt audio, il gateway IOS scarica il file audio e riproduce il prompt.

8. Se nel documento VXML viene specificato un testo per un prompt audio, il gateway IOS stabilisce una sessione SIP con tts@172.18.110.76 (server TTS) utilizzando il dial-peer 5. Dopo aver stabilito la sessione SIP, apre una connessione TCP al server TTS utilizzando il numero di porta TCP fornito nella risposta SDP di 200 OK dell'INVITE SIP. Questa connessione TCP viene utilizzata per lo scambio di messaggi MRCP, ad esempio TALK, TALK-COMPLETE tra il gateway IOS e il server TTS.

Il server TTS invia il flusso audio RTP G.711ulaw all'indirizzo IP e al numero di porta UDP forniti dal gateway nel SDP di SIP INVITE.

9. Se nel documento VXML viene specificato il gateway in modo che riconosca le cifre DTMF e/o le parole pronunciate, il gateway IOS stabilisce una sessione SIP con asr@172.18.110.76 (server ASR) con dial-peer 6. Dopo aver stabilito la sessione SIP, apre una connessione TCP al server ASR utilizzando il numero di porta TCP fornito nel SDP di 200 OK risposta di SIP INVITE. Questa connessione TCP viene utilizzata per scambiare messaggi MRCP come DEFINE GRAMMAR, COMPLETE, RECOGNITION e RECOGNITION-COMPLETE tra il gateway IOS e il server ASR.

Il gateway VXML di IOS invia il flusso audio RTP G.711ulaw all'indirizzo IP e al numero di porta UDP forniti dall'ASR nel SDP della risposta SIP 200 OK. IOS VXML Gateway invia le cifre immesse dall'utente PSTN come eventi RTP-NTE al server ASR.

10. Dopo l'esecuzione del documento VXML, il gateway invia una richiesta POST HTTP (con un set di parametri) come specificato nel tag <submit> del documento/pagina VXML.

11. I passaggi da 6 a 10 si verificano per ogni documento VXML inviato dal server.

12. Quando l'applicazione VXML completa il servizio fornito al chiamante, invia un documento VXML con un semplice tag <exit/> all'interno dell'elemento <form>.

13. Il gateway IOS disconnette le sessioni MRCPv2 stabilite con i server TTS e ASR.

14. Il gateway IOS disconnette la chiamata sul lato ISDN.

Verifica

Per verificare che la configurazione funzioni correttamente, consultare questa sezione.

Lo strumento Output Interpreter (solo utenti registrati) (OIT) supporta alcuni comandi show. Usare l'OIT per visualizzare un'analisi dell'output del comando show.

- Mostra descrizione chiamata attiva

11F8 : 160 333356110ms.

1 +10 pid:1 Answer 5555 active

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

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

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

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

Telephony call-legs: 1

SIP call-legs: 0

H323 call-legs: 0

Call agent controlled call-legs: 0

SCCP call-legs: 0

Multicast call-legs: 0

Media call-legs: 0

Total call-legs: 1

- Mostra descrizione breve chiamata attiva

11F8 : 163 333360880ms.1

+60 pid:6 Originate

sip:tts@172.18.110.76:5060 active

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

IP 172.18.110.76:10000 SRTP:

off rtt:0ms pl:

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

g711ulaw TextRelay: off

media inactive detected:n

media contrl rcvd:

n/a timestamp:n/a

long duration call detected:n

long duration

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

164 333360890ms.1 +20 pid:5 Originate

sip:asr@172.18.110.76:5060 active

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

IP 172.18.110.76:10002 SRTP:

off rtt:0ms

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

g711ulaw TextRelay: off

media inactive detected:n media contrl

rcvd:n/a timestamp:n/a

long duration call detected:n

long duration

call duration:n/a timestamp:n/a

Telephony call-legs: 0

SIP call-legs: 0

H323 call-legs: 0

Call agent controlled call-legs: 0

SCCP call-legs: 0

Multicast call-legs: 0

Media call-legs: 2

Total call-legs: 2

- Mostra dettagli attivi sessione client mrcp

No Of Active MRCP Sessions: 1

Call-ID: 0xA0 same: 0

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

Resource Type: Synthesizer

URL: sip:tts@172.18.110.76

Method In Progress: SPEAK

State: S_SYNTH_SPEAKING

Associated CallID: 0xA3

MRCP version: 2.0

Control Protocol: TCP Server IP Address:

172.18.110.76  Port: 51000

Data Protocol: RTP Server IP Address:

172.18.110.76  Port: 10000

Signalling URL: sip:tts@172.18.110.76:5060

Packets Transmitted: 0 (0 bytes)

Packets Received: 2265 (361968 bytes)

ReceiveDelay: 65     LostPackets: 0

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

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

Resource Type: Recognizer

URL: sip:asr@172.18.110.76

Method In Progress: RECOGNIZE

State: S_RECOG_RECOGNIZING

Associated CallID: 0xA4

MRCP version: 2.0

Control Protocol: TCP Server IP Address:

172.18.110.76  Port: 51001

Data Protocol: RTP Server IP Address:

172.18.110.76  Port: 10002

Packets Transmitted: 1791 (313792 bytes)

Packets Received: 0 (0 bytes)

ReceiveDelay: 60     LostPackets: 0

- Mostra connessioni voip rtp

VoIP RTP active connections :

No. CallId     dstCallId  LocalRTP

RmtRTP LocalIP

RemoteIP

1   163        160        18964

10000  14.1.16.25

172.18.110.76

2   164        160        23072

10002  14.1.16.25

172.18.110.76

Found 2 active RTP connections

- Mostra cache client 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     86400       48           1505

0

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

Risoluzione dei problemi

Le informazioni contenute in questa sezione permettono di risolvere i problemi relativi alla configurazione.

Comandi debug

Configurare il gateway IOS in modo che registri i debug nel relativo buffer di registrazione e disabilitare la "console di registrazione".

Nota: consultare le informazioni importanti sui comandi di debug prima di usare i comandi di debug.

Nota: questi sono i comandi usati per configurare il gateway in modo da memorizzare i debug nel buffer di registrazione del gateway:

- timestamp servizio debug datetime msec

- sequenza di servizio

- nessuna console di registrazione

- registrazione con buffer 500000 debug

- cancella registro

Di seguito sono riportati i comandi di debug utilizzati per risolvere i problemi relativi alla configurazione:

- debug isdn q931

- debug voip ccapi inout

- debug voip application vxml predefinito

- debug voip application vxml dump

- messaggio debug ccsip

- dettagli mrcp di debug

- debug http client all

- debug voip rtp session note named-event

Output di debug

In questa sezione vengono forniti gli output di debug per questo flusso di chiamate di esempio:

1. Il gateway riceve una chiamata in ingresso da PSTN.

2. Il gateway corrisponde al Dial-Peer 1 in entrata.

3. La chiamata viene consegnata al servizio farmacia.

4. La chiamata viene connessa sul lato ISDN.

5. Il gateway avvia l'esecuzione dello script VoiceXML CVPSelfServiceBootstrap.vxml.

6. Il gateway invia una richiesta HTTP GET al server VXML.

7. Il gateway riceve un messaggio 200 OK dal server VXML. Il corpo del messaggio di questa risposta contiene il documento VXML (1). Questo documento VXML indica al file multimediale di riproduzione del gateway denominato Welcome-1.wav situato in un server multimediale.

8. Il gateway invia una richiesta GET HTTP al server multimediale per scaricare il file Welcome-1.wav.

9. Il gateway riceve il messaggio 200 OK dal server multimediale e riceve il contenuto del file Welcome-1.wav nel corpo del messaggio HTTP.

10. Il gateway invia una richiesta HTTP POST al server come definito nell'opzione "Invia" del documento VXML (1).

11. Il gateway riceve 200 OK per la richiesta HTTP POST. Il corpo del messaggio contiene il documento VXML (2). Questo documento VXML dice al Gateway di giocare "Grazie per aver chiamato la farmacia Audium." Si noti che questo prompt deve essere sintetizzato da un server di sintesi vocale.

12. Il gateway invia una richiesta POST HTTP come definito nell'opzione Invia del documento VXML (2).

13. Il gateway riceve una risposta di 200 OK per la richiesta HTTP POST. Il corpo del messaggio contiene il documento VXML (3). Questo documento VXML definisce un prompt di menu che indica al chiamante di immettere 1 o pronunciare Refill, 2 o say Pharmacist. I prompt vengono sintetizzati da un server di sintesi vocale. Gli ingressi (parlato/DTMF) vengono riconosciuti utilizzando un riconoscimento vocale automatico.

14. Gateway crea le grammatiche da utilizzare per il riconoscimento vocale / DTMF. Queste grammatiche vengono quindi inviate al server ASR quando il gateway stabilisce una sessione con il server ASR.

15. Il gateway esegue una ricerca dial-peer per configurare una sessione SIP con il server sintesi vocale. Il dial-peer in uscita 6 corrisponde.

16. Il gateway invia un INVITE SIP al server TTS. L'SDP del messaggio INVITE contiene informazioni multimediali per il flusso audio e l'applicazione MRCPv2 (canale speechsynth).

17. Il gateway esegue una ricerca dial-peer per configurare una sessione SIP con il server di riconoscimento vocale automatico. Corrispondenza di dial-peer in uscita 5.

18. I gateway inviano un INVITE SIP al server ASR. L'SDP contiene le informazioni multimediali per lo streaming audio, il relay DTMF e l'applicazione MRCPv2 (canale speechrecog).

19. Il gateway riceve una risposta 200 OK (per SIP INVITE) dal server ASR. Il SDP del messaggio SIP INVITE specifica quanto segue:

- Il codec G711ulaw, l'indirizzo IP e i numeri delle porte RTP per lo streaming audio

- Attributo di direzione del flusso RTP: "recvonly"

- Il relay DTMF basato su RTP-NTE

- Il numero della porta TCP (51001) che il gateway deve usare per stabilire una sessione MRCPv2 con il server ASR

20. Il gateway invia il SIP ACK al server ASR e la sessione SIP per il riconoscimento vocale automatico viene stabilita tra il gateway e il server ASR.

21. Il gateway invia una richiesta MRCP "DEFINE-GRAMMER" al server ASR. (qui è visualizzata una sola richiesta).

22. Il gateway riceve una risposta 200 COMPLETE per la richiesta DEFINE-GRAMMAR.

23. Il gateway riceve una risposta 200 OK (per SIP INVITE) dal server TTS. Il SDP del messaggio SIP INVITE specifica quanto segue:

- Il codec G711ulaw, l'indirizzo IP e i numeri delle porte RTP per lo streaming audio

- Attributo di direzione del flusso RTP:"sendonly"

- Il relay DTMF basato su RTP-NTE

- Il numero della porta TCP (5100) che il gateway deve usare per stabilire una sessione MRCPv2 con il server TTS

24. Il gateway invia l'ACK SIP al server TTS e la sessione SIP per la sintesi vocale viene stabilita tra il gateway e il server TTS.

25. Il gateway invia una richiesta MRCP "RECOGNITION" al server ASR per avviare il riconoscimento di DTMF / parole pronunciate.

26. Il server ASR invia una risposta "IN CORSO" (per la richiesta RECOGNITION) al gateway.

27. Il gateway completa il download del file multimediale Welcome-1.wav, lo memorizza nella cache e riproduce il prompt al chiamante.

28. Gateway invia una richiesta MRCP "SPEAK" al server TTS per riprodurre il prompt "Thank-You-for-Calling".

29. Il server TTS invia una risposta "IN CORSO" alla richiesta SPEAKER.

30. Il server TTS invia un messaggio "SPEAK-COMPLETE" dopo aver pronunciato il prompt "Grazie per aver chiamato".

31. Gateway invia una richiesta MRCP "SPEAK" al server TTS per riprodurre il prompt "Menu" (Immettere 1 o Pronunciare Rif/Immettere 2 o Pronunciare il farmacista). (Gli output del comando debug non vengono visualizzati).

32. Il server TTS invia un messaggio IN-PROGRESS, TALK-COMPLETE e termina la riproduzione del prompt. (Gli output del comando debug non vengono visualizzati).

33. Il chiamante PSTN immette "1" per scegliere Ricarica. Il gateway invia questa cifra come evento RTP-NTE al server ASR.

34. Il server ASR invia un messaggio "RECOGNITION-COMPLETE" al gateway per notificare al gateway che ha riconosciuto uno degli eventi richiesti (in questo caso, cifra 1).

35. Dopo aver ricevuto una notifica di riconoscimento dal server ASR, il gateway VXML invia una richiesta POST HTTP come specificato nel tag SUBMIT del documento VXML (3). Questa richiesta POST informa il server VXML che la cifra 1 è stata immessa dal chiamante PSTN.

36. Il server VXML invia quindi un altro documento VXML che chiede al chiamante di immettere qui la prescrizione. (Gli output del comando debug non vengono visualizzati).

37. Il gateway invia il messaggio MRCP al TTS per comunicare i prompt. (Gli output del comando debug non vengono mostrati, ma sono simili ai passaggi 28-30).

38. Gateway invia il messaggio MRCP all'ASR per rilevare il numero di prescrizione di 4 cifre parlato dall'utente. (Gli output del comando debug non vengono mostrati, ma sono simili alle fasi 25-26).

39. L'ASR riconosce il numero di prescrizione a 4 cifre e invia un messaggio MRCP "RECOGNITION-COMPLETE" al gateway VXML di IOS.

40. Il gateway comunica il numero di prescrizione al server VXML inviando una richiesta POST HTTP. (Gli output del comando debug non vengono visualizzati, ma sono simili a quelli del passaggio 35.)

41. Il server VXML invia pagine VXML per raccogliere il tempo di prelievo e informare il chiamante che la prescrizione sarà pronta per il prelievo. Il gateway esegue queste pagine tramite interazioni con il server TTS e ASR. (Gli output del comando debug non vengono visualizzati).

42. Il documento VXML finale inviato dal server VXML contiene solo il tag <exit\> nel <form>. In questo modo il gateway termina la sessione VXML.

43. Il gateway termina l'applicazione VXML.

44. Il gateway disconnette la sessione SIP stabilita con il server ASR.

45. Il gateway disconnette la sessione SIP stabilita con il server TTS.

46. Il gateway disconnette la chiamata sul lato ISDN.

Chiamata in entrata da PSTN

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

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

Bearer Capability i = 0x8090A2

Standard = CCITT

Transfer Capability = Speech

Transfer Mode = Circuit

Transfer Rate = 64 kbit/s

Channel ID i = 0xA98381

Exclusive, Channel 1

Called Party Number i = 0x81, '5555'

Plan:ISDN, Type:Unknown

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

CCAPI/cc_api_display_ie_subfields:

cc_api_call_setup_ind_common:

cisco-username=

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

cisco-ani=

cisco-anitype=0

cisco-aniplan=0

cisco-anipi=0

cisco-anisi=0

dest=5555

cisco-desttype=0

cisco-destplan=1

cisco-rdie=FFFFFFFF

cisco-rdn=

cisco-rdntype=-1

cisco-rdnplan=-1

cisco-rdnpi=-1

cisco-rdnsi=-1

cisco-redirectreason=-1   fwd_final_type =0

final_redirectNumber =

hunt_group_timeout =0

Dial-Peer 1 in entrata corrispondente

*Jan 18 03:34:52.735:

//-1/2AEE8C2A801C/

CCAPI/cc_api_call_setup_ind_common:

Interface=0x664B4BA4, Call Info(

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

NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

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

Calling Translated=FALSE, Subscriber

Type Str=RegularLine,

FinalDestinationFlag=TRUE,

Incoming Dial-peer=1, Progress

Indication=NULL(0),

Calling IE Present=FALSE,

Source Trkgrp Route Label=,

Target Trkgrp Route Label=,

CLID Transparent=FALSE),

Call Id=-1

Chiamata consegnata al servizio farmacia

*Jan 18 03:34:52.739:

//127/2AEE8C2A801C/CCAPI

/cc_process_call_setup_ind:

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

"_ManagedAppProcess_Pharmacy"

*Jan 18 03:34:52.739:

//127/2AEE8C2A801C/CCAPI/ccCallSetupAck:

Call Id=127

Connessione della chiamata sul lato ISDN

*Jan 18 03:34:52.739:

ISDN Se3/0:23 Q931: TX ->

CONNECT pd = 8  callref =

0x805A

*Jan 18 03:34:52.739:

//127/2AEE8C2A801C/CCAPI/ccCallHandoff:

Silent=FALSE, Application=0x663106C4,

Conference Id=0xFFFFFFFF

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

Il gateway avvia l'esecuzione dello script VoiceXML CVPSelfServiceBootstrap.vxml

*Jan 18 03:34:52.755:

//127/2AEE8C2A801C/VXML:

/vxml_vxml_proc:

<vxml>

URI(abs):flash:

CVPSelfServiceBootstrap.vxml

scheme=flash

path=CVPSelfServiceBootstrap.vxml

base=

URI(abs):flash:

CVPSelfServiceBootstrap.vxml

scheme=flash

path=CVPSelfServiceBootstrap.vxml

lang=none version=2.0

<script>:

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

:/vxml_expr_eval:

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

:/vxml_jse_global_switch:

switch to scope(application)

<var>: namep=handoffstring

expr=session.handoff_string

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

:/vxml_expr_eval:

expr=(var handoffstring=session.

handoff_string)

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

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

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

:/vxml_expr_eval:

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

<var>: namep=handoffExit

Il gateway invia una richiesta GET HTTP al server VXML

*Jan 18 03:34:52.875:

//127//HTTPC:/httpc_write_stream:

Client write buffer fd(3):

GET /CVP/Server?application=

GoodPrescriptionRefillApp7&callid=

2AEE8C2A-0AFB11D6-801C0013-

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

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

Host: 172.18.110.75:7000

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

Connection: close

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

application/x-vxml, application/voicexml,

application/x-voicexml, text/plain, tex

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

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

Il gateway riceve un messaggio 200 OK dal server VXML

Il corpo del messaggio di questa risposta contiene un documento VXML (1). Il documento VXML indica al file multimediale di riproduzione del gateway denominato Welcome-1.wav situato in un server multimediale.

*Jan 18 03:34:52.883: processing server

rsp msg: msg(67CA63A8)

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

Server?application=GoodPrescription

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

-803E8C8E&session.connection.

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

uri=5555, fd(3):

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

GET /CVP/Server?application=

GoodPrescriptionRefillApp7&callid=

2AEE8C2A-0AFB11D6-801C0013-803E8C8

E&session.connection.remote.

uri=5555&session

.connection.local.uri=5555 HTTP/1.1

*Jan 18 03:34:52.883:

Message Response Code: 200

*Jan 18 03:34:52.883:

Message Rsp Decoded Headers:

*Jan 18 03:34:52.883:

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

*Jan 18 03:34:52.883:

Content-Type:text/xml;

charset=ISO-8859-1

*Jan 18 03:34:52.883:

Connection:close

*Jan 18 03:34:52.883:

Set-Cookie:JSESSIONID=

BBCE0F948ADFDB720497F587A7997538;

Path=/CVP

*Jan 18 03:34:52.883: headers:

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

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=BBCE0F948ADF

DB720497F587A7997538; Path=/CVP

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

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

Connection: close

*Jan 18 03:34:52.883: body:

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

encoding="UTF-8"?>

<vxml version="2.0" application=

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

calling_into=GoodPrescriptionRefillApp7"

xml:lang="en-us">

<form id="audium_start_form">

<block>

<assign name="audium_vxmlLog" expr="''" />

<assign name="audium_element

_start_time_millisecs"

expr="new Date().getTime()" />

<goto next="#start" />

</block>

</form>

<form id="start">

<block>

<prompt bargein="true">

<audio src="http://172.18.110.75/

Welcome-1.wav" />

</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ '^^^'

+ application.getEla

psedTime(audium_element_start_time_millisecs)" />

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

namelist=" audium_vxmlLog" />

</block>

</form>

</vxml>

Il gateway invia una richiesta HTTP GET al server multimediale per scaricare il file Welcome-1.wav

GET /Welcome-1.wav HTTP/1.1

Host: 172.18.110.75

Content-Type:

application/x-www-form-urlencoded

Connection: close

Accept: text/vxml,

text/x-vxml, application/vxml,

application/x-vxml,

application/voicexml,

application/x-voicexml,

text/plain, tex

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

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

Il gateway riceve un OK 200 dal server dei contenuti multimediali e riceve il contenuto del file Welcome-1.wav nel corpo del messaggio HTTP

*Jan 18 03:34:55.647:

//127//HTTPC:/httpc_socket_read:

*Jan 18 03:34:55.647:

read data from the socket 3

: first 400 bytes of data:

HTTP/1.1 200 OK

Content-Length: 26450

Content-Type: audio/wav

Last-Modified:

Mon, 30 Apr 2007 15:36:51 GMT

Accept-Ranges: bytes

ETag: "e0c1445f3d8bc71:2d6"

Server: Microsoft-IIS/6.0

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

Connection: close

RIFFJg(Unprintable char...)

0057415645666D7420120001010401

F00401F00108000666163744000176700

64617461176700FFFFFF807

FFFFFFF80FFFFFF80F

(other hex information not shown).

Il gateway invia una richiesta HTTP POST al server come definito nell'opzione "Invia" del documento VXML (1)

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 67

Content-Type:

application/x-www-form-urlencoded

Cookie: $Version=0; JSESSIONID=BBCE0F948

ADFDB720497F587A7997538; $Path=/CVP

Connection: close

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

application/vxml,

application/x-vxml,

application/voicexml,

application/x-voicexml,

text/plain, tex

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

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

Il gateway riceve un OK 200 per la richiesta HTTP POST

Il corpo del messaggio contiene il documento VXML (2). Il documento VXML dice al Gateway di giocare "Grazie per aver chiamato la farmacia Audium." Si noti che questo prompt deve essere sintetizzato da un server di sintesi vocale.

*Jan 18 03:34:55.651:

processing server rsp msg:

msg(67CA6960)URL:

http://172.18.110.75:

7000/CVP/Server, fd(4):

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

POST /CVP/Server HTTP/1.1

*Jan 18 03:34:55.651:

Message Response Code: 200

*Jan 18 03:34:55.651:

Message Rsp Decoded Headers:

*Jan 18 03:34:55.651:

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

*Jan 18 03:34:55.651:

Content-Type:text/xml;

charset=ISO-8859-1

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

*Jan 18 03:34:55.651: headers:

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

Server: Apache-Coyote/1.1

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

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

Connection: close

*Jan 18 03:34:55.655: body:

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

encoding="UTF-8"?>

<vxml version="2.0" application=

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

calling_into=GoodPrescriptionRefillApp7"

xml:lang="en-us">

<form id="audium_start_form">

<block>

<assign name="audium_vxmlLog" expr="''" />

<assign name="audium_element

_start_time_millisecs"

expr="new Date().getTime()" />

<goto next="#start" />

</block>

</form>

<form id="start">

<block>

<prompt bargein="true">

Thank you for calling Audium pharmacy.

</prompt>

<assign name="audium_vxmlLog" expr=

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

+ 'initial_audio_group'

+ '^^^' + application.getEla

psedTime(audium_element_start_time_millisecs)" />

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

namelist=" audium_vxmlLog" />

</block>

</form>

</vxml>

Il gateway invia una richiesta POST HTTP come definito nell'opzione di invio del documento VXML (2)

*Jan 18 03:34:55.667:

//127//HTTPC:/httpc_write_stream:

Client write buffer fd(4):

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 67

Content-Type:

application/x-www-form-urlencoded

Cookie: $Version=0; JSESSIONID=

BBCE0F948ADFDB720497F587A7997538;

$Path=/CVP

Connection: close

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

application/vxml,

application/x-vxml, application/voicexml,

application/x-voicexml, text/plain, tex

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

multipart/form-data,

application/octet-stream

User-Agent: Cisco-IOS-C5400/12.4

Il gateway riceve una risposta di 200 OK per la richiesta HTTP POST

Il corpo del messaggio contiene il documento VXML (3). In questo documento VXML viene definito un prompt di menu che indica al chiamante di immettere 1, di pronunciare Refill o di immettere 2 o di dire Pharmacist. I prompt vengono sintetizzati da un server di sintesi vocale. Gli ingressi (parlato/DTMF) vengono riconosciuti con un riconoscimento vocale automatico.

*Jan 18 03:34:57.499:

processing server rsp msg:

msg(67CA6B48)URL:

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

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

POST /CVP/Server HTTP/1.1

*Jan 18 03:34:57.499:

Message Response Code: 200

*Jan 18 03:34:57.499:

Message Rsp Decoded Headers:

*Jan 18 03:34:57.499:

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

*Jan 18 03:34:57.499:

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

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

*Jan 18 03:34:57.499: headers:

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

Server: Apache-Coyote/1.1

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

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

Connection: close

*Jan 18 03:34:57.499: body:

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

- truncated to (4096) len.

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

encoding="UTF-8"?>

<vxml version="2.0" application=

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

calling_into=GoodPrescriptionRefillApp7"

xml:lang="en-us">

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

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

<form id="audium_start_form">

<block>

<assign name="audium_vxmlLog" expr="''" />

<assign name="audium_element

_start_time_millisecs"

expr="new Date().getTime()" />

<goto next="#start" />

</block>

</form>

<form id="start">

<block>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<goto nextitem="choice_fld" />

</block>

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

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

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

Or.

Say pharmacist or press 2.</prompt>

<catch event="nomatch">

<prompt bargein="true">Sorry.

I did not understand that.

Say refills or press 1.

Say pharmacist or press 2.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ '^^^' + application.getElapsedTime(

audium_element_start_time_millisecs)" />

</catch>

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

<prompt bargein="true">

Sorry, I still did not get that.

If you are using a speaker phone.

Please use the phone keypad to make

your selection.

Press 1 for refills.

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

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

</catch>

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

<prompt bargein="true">Gee.

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

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

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

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

namelist="

audium_vxmlLog maxNoMatch" />

</catch>

<catch event="noinput">

<prompt bargein="true">Sorry.

I did not hear that.

Say refills or press 1.

Say pharmacist or press 2.</prompt>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ '^^^' + application.getElapsedTime

(audium_element_start_time_millisecs)" />

</catch>

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

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

I still did not hear that.

If you are using a speaker phone.

Please use the phone keypad

to make your selection.

Press 1 for refills.

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

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

audio_group' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

</catch>

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

<prompt bargein="true">Gee.

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

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

audio_group' + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

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

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

namelist=" audium_vxmlLog maxNoInput" />

</catch>

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

prescription</option>

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

<option value="refills">

prescription refills</option>

<option value="refills">

refill my prescription</option>

<option value="refills">

I want to refill my prescription</option>

<option value="refills">

refills please</option>

<option value="Pharmacist"

dtmf="2">Pharmacist</option>

<option value="Pharmacist">

I want to speak to a pharmacist</option>

<option value="Pharmacist">

pharmacist please</option>

<filled>

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

utterance + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

inputmode + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

+ application.getElapsedTim

(audium_element_start_time_millisecs)" />

<assign name="audium_vxmlLog"

expr="audium_vxmlLog

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

confidence + '^^^'

+ application.getElapsedTime

(audium_element_start_time_millisecs)" />

<var name="confidence"

expr="choice_fld$.confidence" />

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

namelist=" audium_vxmlLog confidence choice_fld" />

</filled>

</field>

</form>

</vxml>

Gateway crea le grammatiche da utilizzare per il riconoscimento vocale / DTMF

Queste grammatiche vengono quindi inviate al server ASR quando il gateway stabilisce una sessione con il server ASR.

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_change_server:

asr_server=sip:asr@172.18.110.76

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option485@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

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

<grammar version="1.0" xm

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

xml:lang="en-us"

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

prescription</rule></grammar>

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

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

Event=0x63ACCCF0

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option486@field.grammar

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

mode="dtmf" root=

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

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

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

/mrcp_get_ev:

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

Event=0x63ACCAE8

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option487@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

xml:lang="en-us"

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

refills</rule></grammar>

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

:/mrcp_get_ev:

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

Event=0x63ACBC88

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option488@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

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

<grammar version="1.0" xm

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

xml:lang="en-us"

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

prescription refills</rule></grammar>

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

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

Event=0x63ACBCB0

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option489@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

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

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

refill my prescription</rule><

/grammar>

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

****>Caller PC=0x61BE1F94,

Count=343, Event=0x63ACBCD8

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option490@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

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

<grammar version="1.0" xm

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

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

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

I want to refill my prescription

</rule></grammar>

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

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

Event=0x63ACBD00

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option491@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

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

<grammar version="1.0" xm

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

xml:lang="en-us"

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

refills please</rule></grammar

>

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

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

Event=0x63ACBD28

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option492@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

xml:lang="en-us"

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

scope="public"> Pharmacist

</rule></grammar>

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

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

Event=0x63ACBB20

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option493@field.grammar

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

mode="dtmf" root="root">

<rule id="root" scope=

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

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

****>Caller PC=0x61BE1F94,

Count=347, Event=0x63ACBD50

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

*Jan 18 03:34:57.523:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:

option494@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

xml:lang="en-us"

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

I want to speak to a pharmacist

</rule></grammar>

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

****>Caller PC=0x61BE1F94,

Count=348, Event=0x63ACBFF8

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

:/vapp_asr_define_grammar:

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

:/vapp_asr_define_grammar:

grammar_id=session:option495@field.grammar

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

:/vapp_asr_define_grammar:

xml_lang=en-us

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

:/vapp_asr_define_grammar:

encoding_name=UTF-8

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

:/vapp_asr_define_grammar:

remoteupdate=0

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

:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

xml:lang="en-us"

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

pharmacist please

</rule></grammar>

*Jan 18 03:34:57.527:

//-1//MRCP:/mrcp_get_ev:

****>Caller PC=0x61BE1F94,

Count=349, Event=0x63ACC048

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

:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:link496@document.grammar

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar xmlns="http://ww

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

version="1.0"

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

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

<one-of>

<item>operator</item>

<item>agent</item>

<item>pharmacist</item>

</one-of>

</rule>

</grammar>

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

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

Event=0x63ACC098

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:link497@document.grammar

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=0

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

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

<grammar xmlns="http://ww

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

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

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

<one-of>

<item>operator</item>

<item>agent</item>

<item>pharmacist</item>

</one-of>

</rule>

</grammar>

*Jan 18 03:34:57.527:

//-1//MRCP:/mrcp_get_ev:

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

Event=0x63ACC0C0

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar_id=session:help@grammar

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

xml_lang=en-us

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

encoding_name=UTF-8

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

remoteupdate=1

*Jan 18 03:34:57.527:

//127//AFW_:/vapp_asr_define_grammar:

grammar=<?xml version="1.0"

encoding="UTF-8"?>

<grammar version="1.0" xm

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

xml:lang="en-us"

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

scope="public">

help</rule></grammar>

*Jan 18 03:34:57.527:

//-1//MRCP:/mrcp_get_ev:

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

Event=0x63ACBEE0

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

grammar_id=session:option485@field.grammar

grammar_id=session:option486@field.grammar

grammar_id=session:option487@field.grammar

grammar_id=session:option488@field.grammar

grammar_id=session:option489@field.grammar

grammar_id=session:option490@field.grammar

grammar_id=session:option491@field.grammar

grammar_id=session:option492@field.grammar

grammar_id=session:option493@field.grammar

grammar_id=session:option494@field.grammar

grammar_id=session:option495@field.grammar

grammar_id=session:link496@document.grammar

grammar_id=session:link497@document.grammar

grammar_id=session:help@grammar

Il gateway esegue una ricerca Dial-Peer per configurare una sessione SIP con il server sintesi vocale

Il dial-peer in uscita 6 corrisponde.

*Jan 18 03:34:57.527:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

Destination Pattern=,

Called Number=sip:tts@172.18.110.76,

Digit Strip=FALSE

*Jan 18 03:34:57.527:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

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

Screening=Not Screened,

Presentation=Allowed),

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

NPI=ISDN),

Redirect Number=, Display Info=

Account Number=, Final Destination Flag=TRUE,

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

Outgoing Dial-peer=6

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/cc

_api_display_ie_subfields:

ccCallSetupRequest:

cisco-username=

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

cisco-ani=5555

cisco-anitype=0

cisco-aniplan=0

cisco-anipi=0

cisco-anisi=0

dest=sip:tts@172.18.110.76

cisco-desttype=0

cisco-destplan=1

cisco-rdie=FFFFFFFF

cisco-rdn=

cisco-rdntype=-1

cisco-rdnplan=-1

cisco-rdnpi=-1

cisco-rdnsi=-1

cisco-redirectreason=-1   fwd_final_type =0

final_redirectNumber =

hunt_group_timeout =0

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/

ccIFCallSetupRequestPrivate:

Interface=0x662CE538, Interface Type=3,

Destination=, Mode=0x0,

Call Params(Calling Number=5555,

(Calling Name=)(TON=Unknown,

NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

Called Number=sip:tts@172.18.110.76

(TON=Unknown, NPI=ISDN),

Calling Translated=FALSE,

Subscriber Type Str=RegularLine,

FinalDestinationFlag=TRUE,

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

Source Trkgrp Route Label=,

Target Trkgrp Route Label=,

tg_label_flag=0, Application Call Id=)

Il gateway invia un INVITE SIP al server TTS

L'SDP del messaggio INVITE contiene informazioni multimediali per il flusso audio e l'applicazione MRCPv2 (canale speechsynth).

*Jan 18 03:34:57.531:

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

Sent:

INVITE sip:tts@172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:

5060;branch=z9hG4bK931F1D

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

party=calling;screen=no;privacy=off

From: <sip:5555@14.1.16.25>

;tag=E54D43C-1EC4

To: sip:tts@172.18.110.76

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

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30

-3585E95A@14.1.16.25

Supported: 100rel,timer,

resource-priority,replaces

Min-SE:  1800

Cisco-Guid: 720276522-184226262

-2149318675-2151582862

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

Allow: INVITE, OPTIONS, BYE,

CANCEL, ACK, PRACK, UPDATE,

REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER

CSeq: 101 INVITE

Max-Forwards: 70

Timestamp: 1011324897

Contact: <sip:5555@14.1.16.25:5060>

Expires: 180

Allow-Events: telephone-event

Content-Type: application/sdp

Content-Disposition:

session;handling=required

Content-Length: 358

v=0

o=CiscoSystemsSIP-GW-UserAgent

6021 4611 IN IP4 14.1.16.25

s=SIP Call

c=IN IP4 14.1.16.25

t=0 0

m=audio 16984 RTP/AVP 0 101

c=IN IP4 14.1.16.25

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

a=ptime:20

a=recvonly

a=mid:1

m=application 9 TCP/MRCPv2

a=setup:active

a=connection:new

a=resource:speechsynth

a=cmid:1

Il gateway esegue una ricerca Dial-Peer per configurare una sessione SIP con il server ASR

Il dial-peer in uscita 5 corrisponde.

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

Destination Pattern=,

Called Number=sip:asr@172.18.110.76,

Digit Strip=FALSE

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

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

Screening=Not Screened, Presentation=Allowed),

Called Number=sip:asr@172.18.110.76

(TON=Unknown, NPI=ISDN),

Redirect Number=, Display Info=

Account Number=, Final Destination Flag=TRUE,

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

Outgoing Dial-peer=5

*Jan 18 03:34:57.531:

//-1/xxxxxxxxxxxx/CCAPI/cc_api

_display_ie_subfields:

ccCallSetupRequest:

cisco-username=

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

cisco-ani=5555

cisco-anitype=0

cisco-aniplan=0

cisco-anipi=0

cisco-anisi=0

dest=sip:asr@172.18.110.76

cisco-desttype=0

cisco-destplan=1

cisco-rdie=FFFFFFFF

cisco-rdn=

cisco-rdntype=-1

cisco-rdnplan=-1

cisco-rdnpi=-1

cisco-rdnsi=-1

cisco-redirectreason=-1

fwd_final_type =0

final_redirectNumber =

hunt_group_timeout =0

*Jan 18 03:34:57.535:

//-1/xxxxxxxxxxxx/CCAPI

/ccIFCallSetupRequestPrivate:

Interface=0x662CE538, Interface Type=3,

Destination=, Mode=0x0,

Call Params(Calling Number=5555,

(Calling Name=)(TON=Unknown,

NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

Called Number=sip:asr@172.18.110.76

(TON=Unknown, NPI=ISDN),

Calling Translated=FALSE,

Subscriber Type Str=RegularLine,

FinalDestinationFlag=TRUE,

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

Source Trkgrp Route Label=,

Target Trkgrp Route Label=,

tg_label_flag=0, Application Call Id=)

I gateway inviano un INVITE SIP al server ASR

L'SDP contiene le informazioni multimediali per il flusso audio, il relè DTMF. e MRCPv2 (canale speechrecog).

*Jan 18 03:34:57.535:

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

Sent:

INVITE sip:asr@172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP

14.1.16.25:5060;branch=z9hG4bK94C0B

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

party=calling;screen=no;privacy=off

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

To: sip:asr@172.18.110.76

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

Call-ID: 2DCAF817-AFB11D6

-80D5DC30-3585E95A@14.1.16.25

Supported: 100rel,timer,

resource-priority,replaces

Min-SE:  1800

Cisco-Guid: 720276522-184226262-

2149318675-2151582862

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

Allow: INVITE, OPTIONS, BYE, CANCEL,

ACK, PRACK, UPDATE,

REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER

CSeq: 101 INVITE

Max-Forwards: 70

Timestamp: 1011324897

Contact: <sip:5555@14.1.16.25:5060>

Expires: 180

Allow-Events: telephone-event

Content-Type: application/sdp

Content-Disposition:

session;handling=required

Content-Length: 358

v=0

o=CiscoSystemsSIP-GW-UserAgent

6805 2057 IN IP4 14.1.16.25

s=SIP Call

c=IN IP4 14.1.16.25

t=0 0

m=audio 19994 RTP/AVP 0 101

c=IN IP4 14.1.16.25

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

a=ptime:20

a=sendonly

a=mid:1

m=application 9 TCP/MRCPv2

a=setup:active

a=connection:new

a=resource:speechrecog

a=cmid:1

Il gateway riceve una risposta di 200 OK (per SIP INVITE) dal server ASR

1. G711ulaw codec, indirizzo IP e numeri di porta RTP per lo streaming audio.

2. L'attributo di direzione del flusso RTP è "recvonly".

3. Relay DTMF basato su RTP-NTE.

4. Numero di porta TCP (51001) che il gateway deve usare per stabilire una sessione MRCPv2 con il server ASR.

*Jan 18 03:34:57.559:

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

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP 14.1.16.25:5060;

branch=z9hG4bK94C0B

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

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

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

3585E95A@14.1.16.25

CSeq: 101 INVITE

Contact: <sip:172.18.110.76:5060>

Content-Type: application/sdp

Content-Length: 342

v=0

o=MRCPv2Server 3386937590 3386937590

IN IP4 172.18.110.76

s=SIP Call

c=IN IP4 172.18.110.76

t=3386937590 0

m=audio 10002 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=recvonly

m=application 51001 TCP/MRCPv2

a=connection:new

a=setup:passive

a=model:besteffort

a=channel:000023B846361276@speechrecog

Il gateway invia l'ACK SIP al server ASR

La sessione SIP per l'ASR viene stabilita tra il gateway e il server ASR.

*Jan 18 03:34:57.563:

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

Sent:

ACK sip:172.18.110.76:5060 SIP/2.0

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

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

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

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

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

Max-Forwards: 70

CSeq: 101 ACK

Allow-Events: telephone-event

Content-Length: 0

Il gateway invia la richiesta MRCP "DEFINE-GRAMMER" al server ASR

Di seguito è riportata una sola richiesta.

MRCP/2.0 446      DEFINE-GRAMMAR  1

Channel-Identifier: 000023B846361276@speechrecog

:

Speech-Language: en-us

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

:

Content-Type: application/srgs+xml

Content-Id: option485@field.grammar

Content-Length: 193

:

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

<grammar version="1.0"

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

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

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

prescription</rule></grammar>

Il gateway riceve una risposta di 200 COMPLETE per la richiesta DEFINE-GRAMMAR

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

Table=mrcpv2_socket_connect_table, Key=0:

MRCP/2.0 80 1 200 COMPLETE

Channel-Identifier: 000023B846361276@speechrecog

Il gateway riceve una risposta di 200 OK (per SIP INVITE) dal server TTS

Il SDP del messaggio SIP INVITE specifica quanto segue:

1. G711ulaw codec, indirizzo IP e numeri di porta RTP per lo streaming audio.

2. L'attributo di direzione di questo flusso RTP è "sendonly".

3. Relay DTMF basato su RTP-NTE

4. Numero di porta TCP (5100) che il gateway deve usare per stabilire una sessione MRCPv2 con il server TTS.

*Jan 18 03:34:57.591:

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

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP 14.1.16.25:5060;

branch=z9hG4bK931F1D

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

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

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

3585E95A@14.1.16.25

CSeq: 101 INVITE

Contact: <sip:172.18.110.76:5060>

Content-Type: application/sdp

Content-Length: 342

v=0

o=MRCPv2Server 3386937590 3386937590

IN IP4 172.18.110.76

s=SIP Call

c=IN IP4 172.18.110.76

t=3386937590 0

m=audio 10000 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=sendonly

m=application 51000 TCP/MRCPv2

a=connection:new

a=setup:passive

a=model:besteffort

a=channel:000023EC46361276@speechsynth

Il gateway invia l'ACK SIP al server TTS

La sessione SIP per la sintesi vocale viene stabilita tra il gateway e il server TTS.

*Jan 18 03:34:57.595:

//-1/xxxxxxxxxxxx/SIP/

Msg/ccsipDisplayMsg:

Sent:

ACK sip:172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:5060;

branch=z9hG4bK9626BC

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

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

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

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30

-3585E95A@14.1.16.25

Max-Forwards: 70

CSeq: 101 ACK

Allow-Events: telephone-event

Content-Length: 0

Il gateway invia la richiesta MRCP "RECOGNITION" al server ASR

MRCP/2.0 987

RECOGNIZE  15

Channel-Identifier:

000023B846361276@speechrecog

:

Speech-Language: en-us

Confidence-Threshold: 0.40

Sensitivity-Level: 0.50

Speed-Vs-Accuracy: 0.50

Cancel-If-Queue: false

Dtmf-Interdigit-Timeout: 10000

Dtmf-Term-Timeout: 0

Dtmf-Term-Char: #

No-Input-Timeout: 60000

N-Best-List-Length: 1

Logging-Tag: 127:127

Accept-Charset: charset: utf-8

Content-Base:

http://172.18.110.75:7000/CVP/

Media-Type: audio/basic

Start-Input-Timers: false

:

Content-Type: text/uri-list

Content-Length: 453

:

session:option485@field.grammar

session:option486@field.grammar

session:option487@field.grammar

session:option488@field.grammar

session:option489@field.grammar

session:option490@field.grammar

session:option491@field.grammar

session:option492@field.grammar

session:option493@field.grammar

session:option494@field.grammar

session:option495@field.grammar

session:link496@document.grammar

session:link497@document.grammar

session:help@grammar

Il server ASR invia la risposta "IN CORSO" (per la richiesta RECOGNITION) al gateway

MRCP/2.0 84 15 200 IN-PROGRESS

Channel-Identifier:

000023B846361276@speechrecog

Il gateway completa il download del file multimediale Welcome-1.wav

La memorizza nella cache e riproduce il prompt al chiamante.

*Jan 18 03:35:04.335:

//127//HTTPC:/httpc_is_cached:

HTTPC_FILE_IS_CACHED

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

/httpc_set_cache_revoke_cb:

Registering revoke_callback(0x61CDD948)

+pcontext(0x63A7AAA8) for cach

ep(0x68734930)

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

evtID: 146 vapp record state: 0

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

evID=146 reason=17,

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

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

/vxml_media_done:

Il gateway invia la richiesta MRCP "SPEAK" al server TTS per riprodurre il messaggio di ringraziamento

MRCP/2.0 376      SPEAK  1

Channel-Identifier:

000023EC46361276@speechsynth

:

Kill-On-Barge-In: true

Speech-Language: en-us

Logging-Tag: 127:127

Content-Base:

http://172.18.110.75:7000/CVP/

:

Content-Type: application/ssml+xml

Content-Length: 123

:

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

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

Thank you for calling Audium pharmacy.</speak>

Il server TTS invia la risposta "IN CORSO" per la richiesta SPEAKER

MRCP/2.0 83 1 200 IN-PROGRESS

Channel-Identifier:

000023EC46361276@speechsynth

Il server TTS invia il messaggio "SPEAK-COMPLETE" dopo aver inviato la richiesta di ringraziamento

MRCP/2.0 141 SPEAK-COMPLETE 1 COMPLETE

Channel-Identifier:

000023EC46361276@speechsynth

Completion-Cause: 000 normal

Speech-Marker: ""

Il chiamante PSTN immette "1" per scegliere Ricarica

Il gateway invia questa cifra come evento RTP-NTE al server ASR.

*Jan 18 03:35:12.583:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9B timestamp 0x2FADCC60

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

Pkt:03 00 00  <Snd>>>

*Jan 18 03:35:12.587:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9C timestamp 0x2FADCC60

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

Pkt:03 00 00  <Snd>>>

*Jan 18 03:35:12.631:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9E timestamp 0x2FADCC60

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

Pkt:03 01 90  <Snd>>>

*Jan 18 03:35:12.683:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1E9F timestamp 0x2FADCC60

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

Pkt:03 03 20  <Snd>>>

*Jan 18 03:35:12.703:

s=DSP d=VoIP payload 0x65 ssrc

0x15 sequence 0x1EA0 timestamp 0x2FADCC60

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

Pkt:83 03 38  <Snd>>>

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

0x65 ssrc 0x15 sequence 0x1EA1 timestamp 0x2FADCC60

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

Pkt:83 03 38  <Snd>>>

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

0x65 ssrc 0x15 sequence

0x1EA2 timestamp 0x2FADCC60

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

Pkt:83 03 38  <Snd>>>

Il server ASR invia un messaggio di "RECOGNITION-COMPLETE" al gateway

Il gateway riceverà notifica del riconoscimento di uno degli eventi richiesti (in questo caso, cifra 1).

MRCP/2.0 513

RECOGNITION-COMPLETE 15 COMPLETE

Channel-Identifier:

000023B846361276@speechrecog

Proxy-Sync-Id: 0B82553000000027

Completion-Cause: 000 success

Content-Type: application/nlsml+xml

Content-Length: 292

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

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

<interpretation grammar=

"session:option486@field.grammar"

confidence="0.000000">

<instance>

1

</instance>

<input mode="dtmf"

confidence="1.000000">

1

</input>

</interpretation>

</result>

Il gateway VXML riceve una notifica di riconoscimento dal server ASR

Dopo la ricezione di questa notifica, VXML Gateway invia una richiesta POST HTTP come specificato nel tag SUBMIT del documento VXML (3). Questa richiesta POST informa il server VXML che la cifra 1 è stata immessa dal chiamante PSTN.

*Jan 18 03:35:12.863:

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

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

cachable 1 timeout

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

_group$$$initial_audio_group%5E%

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

40%7C%7C%7Cinputmode

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

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

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

0&choice_fld=refills

len 258maxage -1 maxstale -1

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

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

mime_type=application/x-www-form-urlencod

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

group$$$initial_audio_group

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

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

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

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

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

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

choice_fld=refills

*Jan 18 03:35:12.931:

about to send data to the socket 3

: first 400 bytes of data:

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 258

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

Cookie: $Version=0; JSESSIONID=

BBCE0F948ADFDB720497F587A7997538;

$Path=/CVP

Connection: close

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

application/x-vxml,

application/voicexml, application/x-voicexml,

text/plain, tex

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

L'ASR riconosce il numero di prescrizione a 4 cifre

L'ASR invia un messaggio MRCP RECOGNITION-COMPLETE al gateway VXML di IOS.

MRCP/2.0 533

RECOGNITION-COMPLETE 21 COMPLETE

Channel-Identifier:

000023B846361276@speechrecog

Proxy-Sync-Id: 0B82553000000028

Completion-Cause: 000 success

Content-Type: application/nlsml+xml

Content-Length: 312

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

<result grammar=

"session:field498@field.grammar">

<interpretation grammar=

"session:field498@field.grammar"

confidence="0.738968">

<instance>

1234

</instance>

<input mode="speech"

confidence="0.752155">

one two three four

</input>

</interpretation>

</result>

The final VXML document sent by the

VXML server contains just the

<exit\> tag in the <form>

This tells the Gateway to

terminate the VXML session

L'ultimo documento VXML inviato dal server VXML contiene solo il tag di uscita nel modulo

In questo modo il gateway termina la sessione VXML

*Jan 18 03:36:07.159:

processing server rsp msg:

msg(67CA85F8)URL:

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

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

POST /CVP/Server HTTP/1.1

*Jan 18 03:36:07.159:

Message Response Code: 200

*Jan 18 03:36:07.159:

Message Rsp Decoded Headers:

*Jan 18 03:36:07.159: D

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

*Jan 18 03:36:07.159:

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

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

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

JSESSIONID=NULL;

Expires=Thu, 01-Jan-1970

00:00:10 GMT; Path=/CVP

*Jan 18 03:36:07.159: headers:

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

Server: Apache-Coyote/1.1

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

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

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

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

Connection: close

*Jan 18 03:36:07.159: body:

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

encoding="UTF-8"?>

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

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

<exit />

</catch>

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

<exit />

</catch>

<catch event="telephone.disconnect">

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

<catch event="error.unsupported">

<exit />

</catch>

<catch event="error.semantic">

<exit />

</catch>

<catch event="error.noresource">

<exit />

</catch>

<catch event="error.noauthorization">

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

<catch event="error.com.cisco.

media.resource.unavailable">

<exit />

</catch>

<catch event=

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

<exit />

</catch>

<catch event=

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

<exit />

</catch>

<catch event=

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

<exit />

</catch>

<catch event=

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

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

<catch event="error.badfetch">

<exit />

</catch>

<catch event="error">

<exit />

</catch>

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

<exit />

</catch>

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

<exit />

</catch>

<catch event="connection.disconnect">

<exit />

</catch>

<form>

<block>

<exit />

</block>

</form>

</vxml>

Il gateway termina l'applicazione VXML

*Jan 18 03:36:14.155:

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

vapp_status=0 ref_count 0

*Jan 18 03:36:14.155:

//127//AFW_:/vapp_terminate:

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

:/vapp_session_exit_event_name:

Exit Event vxml.session.complete

*Jan 18 03:36:14.155:

//127//AFW_:/AFW_M_VxmlModule_Terminate:

*Jan 18 03:36:14.155:

//131/2AEE8C2A801C/CCAPI/ccCallDisconnect:

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

(Previous Disconnect Cause=0,

Disconnect Cause=0)

*Jan 18 03:36:14.155:

//131/2AEE8C2A801C/CCAPI/ccCallDisconnect:

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

Cause Value=16)

Il gateway disconnette la sessione SIP stabilita con il server ASR

*Jan 18 03:36:14.159:

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

Sent:

BYE sip:172.18.110.76:5060 SIP/2.0

Via: SIP/2.0/UDP 14.1.16.25:

5060;branch=z9hG4bK971131

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

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

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

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

3585E95A@14.1.16.25

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

Max-Forwards: 70

Timestamp: 1011324974

CSeq: 102 BYE

Reason: Q.850;cause=16

Content-Length: 0

*Jan 18 03:36:14.607:

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

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP 14.1.16.25:

5060;branch=z9hG4bK971131

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

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

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

3585E95A@14.1.16.25

CSeq: 102 BYE

Contact: <sip:172.18.110.76:5060>

Content-Length: 0

Il gateway disconnette la sessione SIP stabilita con il server TTS

*Jan 18 03:36:14.159:

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

Sent:

BYE sip:172.18.110.76:5060 SIP/2.0

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

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

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

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

Call-ID: 2DCA5BEF-AFB11D6-

80D3DC30-3585E95A@14.1.16.25

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

Max-Forwards: 70

Timestamp: 1011324974

CSeq: 102 BYE

Reason: Q.850;cause=16

Content-Length: 0

*Jan 18 03:36:14.215:

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

Received:

SIP/2.0 200 OK

Via: SIP/2.0/UDP

14.1.16.25:5060;branch=z9hG4bK981487

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

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

Call-ID:

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

CSeq: 102 BYE

Contact: <sip:172.18.110.76:5060>

Content-Length: 0

Il gateway disconnette la chiamata sul lato ISDN

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

DISCONNECT pd = 8  callref = 0x805A

Cause i = 0x8090 - Normal call clearing

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

RX <- RELEASE pd = 8  callref = 0x005A

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

TX -> RELEASE_COMP pd = 8  callref = 0x805A

Informazioni correlate

- Supporto alla tecnologia vocale

- Supporto ai prodotti voce e Unified Communications

- Risoluzione dei problemi di Cisco IP Telephony

- Documentazione e supporto tecnico – Cisco Systems