목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

표기 규칙

구성

네트워크 다이어그램

구성

통화 흐름 예

다음을 확인합니다.

문제 해결

디버그 명령

디버그 출력

관련 정보

소개

VXML(Voice Extensible Markup Language)은 W3C(World Wide Web 컨소시엄)에서 정의한 표준입니다.VXML은 합성된 음성, 구어 인식, DTMF 숫자 인식 및 음성 녹음 기능을 제공하는 오디오 대화 상자를 만들도록 설계되었습니다.VXML 서버 및 클라이언트는 잘 알려진 HTTP 프로토콜을 사용하여 VXML 문서와 페이지를 교환합니다.

Cisco CVP(Voice Portal)는 전화를 통해 액세스할 수 있는 지능적이고 대화형 음성 응답(IVR) 애플리케이션을 제공합니다.CVP 구축에는 세 가지 유형이 있습니다.

- 독립형 서비스

- CVP 통화 제어

- 통화 대기열 및 호전환

합성된 음성, 음성 인식 또는 DTMF 숫자 기능은 TTS(Text-to-Speech) 및 ASR(Automatic Speech Recognition) 서버에서 제공합니다.Cisco IOS® VXML 게이트웨이는 MRCP(Media Resource Control Protocol)를 사용하여 TTS 및 ASR 서버와 통신합니다. MRCP의 두 가지 버전(RFC 4463)은 MRCPv1(RTSP를 통한 MRCP) 및 MRCPv2(MRCP over SIP)입니다.

이 문서에서는 MRCPv1 TTS 또는 ASR 서버를 사용하는 독립형 서비스 구축에서 CVP에 대한 Cisco IOS Voice XML Gateway의 통화 흐름에 대해 설명합니다.샘플 약국 애플리케이션이 CVP VXML 서버에 구축되었습니다.

사전 요구 사항

요구 사항

이 문서에 대한 특정 요건이 없습니다.

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- IOS VXML 게이트웨이:Cisco AS5400XM, IOS 12.4(11)T2

- VXML 서버:CVP 4.0

- ASR/TTS 서버:Nuance ASR v8.5 및 TTS v4.0.6

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.

표기 규칙

문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참고하십시오.

구성

이 섹션에는 이 문서에서 설명하는 기능을 구성하기 위한 정보가 표시됩니다.

참고: 명령 조회 도구(등록된 고객만 해당)를 사용하여 이 문서에 사용된 명령에 대한 자세한 내용을 확인하십시오.

네트워크 다이어그램

이 문서에서는 다음 네트워크 설정을 사용합니다.

구성

이 문서에서는 다음 구성을 사용합니다.

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

통화 흐름 예

이 섹션에서는 이 컨피그레이션 예제의 결과로 나타나는 통화 흐름에 대해 설명합니다.

1. ISDN 통화가 T1 PRI 3/0을 통해 PSTN/VXML 게이트웨이에 도착합니다.

2. IOS 게이트웨이는 이 통화의 인바운드 다이얼 피어로 POTS 다이얼 피어 1을 매칭합니다.

3. IOS Gateway는 통화 제어를 다이얼 피어 1과 연결된 약국 서비스로 전달합니다.

4. 약국 서비스와 연결된 CVP VXML/TCL 스크립트는 VXML 서버에 HTTP GET 요청을 전송합니다.

5. VXML 서버는 200 OK 응답을 반환합니다.이 응답에는 VXML 문서 또는 페이지가 포함되어 있습니다.

6. IOS 게이트웨이가 VXML 문서를 실행합니다.

7. VXML 문서에서 오디오 프롬프트의 URL을 지정하면 IOS 게이트웨이가 오디오 파일을 다운로드하고 프롬프트를 재생합니다.

8. VXML 문서에서 오디오 프롬프트에 대한 텍스트를 지정하면 IOS 게이트웨이는 rtsp://10.86.177.39/synthesizer(TTS 서버)으로 RTSP 세션을 설정합니다. RTSP 세션이 설정되면 RTSP ANNOUNCE 요청을 사용하여 게이트웨이 및 TTS Server가 SPEAK, SPEAK-COMPLETE 등의 MRCP 메시지를 교환합니다.

TTS 서버는 RTSP 설정 요청의 "Transport" 헤더에 있는 게이트웨이가 제공한 IP 주소 및 UDP 포트 번호로 G.711ulaw RTP 오디오 스트림을 전송합니다.

9. VXML 문서가 DTMF 숫자 및 음성 단어를 인식하도록 게이트웨이를 지정하는 경우 IOS 게이트웨이는 rtsp://10.86.177.39/recognizer(ASR 서버)으로 RTSP 세션을 설정합니다. RTSP 세션이 설정되면 게이트웨이 및 ASR 서버는 RTSP ANNOUNCE 요청을 사용하여 DEFINE GRAMMAR, COMPLETE, RECOGNITION, RECOGNITION-COMPLETE 등의 MRCP 메시지를 교환합니다.

IOS VXML 게이트웨이는 RTSP 200 OK 응답의 SDP에서 ASR이 제공하는 IP 주소 및 UDP 포트 번호로 G.711ulaw RTP 오디오 스트림을 전송합니다.IOS VXML 게이트웨이는 PSTN 사용자가 RTP-NTE 이벤트로 입력한 숫자를 ASR 서버로 전송합니다.

10. VXML 문서를 실행한 후 게이트웨이는 VXML 문서 또는 페이지의 <submit> 태그에 지정된 대로 HTTP POST 요청(매개 변수 집합 포함)을 보냅니다.

11. 6 - 10단계는 서버에서 전송하는 각 VXML 문서에 대해 발생합니다.

12. VXML 응용 프로그램은 호출자에게 제공된 서비스를 마치면 <form> 요소 내에 <exit/> 태그가 있는 VXML 문서를 보냅니다.

13. IOS 게이트웨이는 TTS 및 ASR 서버로 설정된 MRCPv1 세션의 연결을 해제합니다.

14. IOS 게이트웨이는 ISDN 측에서 통화를 연결 해제합니다.

다음을 확인합니다.

이 섹션을 사용하여 컨피그레이션이 제대로 작동하는지 확인합니다.

Output Interpreter 도구(등록된 고객만 해당)(OIT)는 특정 show 명령을 지원합니다.OIT를 사용하여 show 명령 출력의 분석을 봅니다.

- 통화 활성 음성 개요 표시

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

- show mrcp 클라이언트 세션 활성 세부 정보

No Of Active MRCP Sessions: 1

Call-ID: 0x3F same: 1

Resource Type: Synthesizer            URL: rtsp://10.86.177.39/synthesizer

Method In Progress: SPEAK                State: SPEAKING

Resource Type: Recognizer             URL: rtsp://10.86.177.39/recognizer

Method In Progress: RECOGNIZE            State: RECOGNIZING

############################################################

- voip rtp 연결 표시

VoIP RTP active connections :

No. CallId     dstCallId  LocalRTP RmtRTP LocalIP         RemoteIP

1   66         63         17704    1224   172.18.110.77   10.86.177.39

- http 클라이언트 캐시 표시

HTTP Client cached information

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

Maximum memory pool allowed for HTTP Client caching = 15000 K-bytes

Maximum file size allowed for caching = 500 K-bytes

Total memory used up for Cache = 410 Bytes

Message response timeout = 10 secs

Total cached entries     = 1

Total non-cached entries = 0

Cached entries

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

entry 114,  1 entries

Ref   FreshTime   Age          Size        context

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

1     119524      31           1271        0

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

문제 해결

이 섹션에서는 컨피그레이션 문제를 해결할 수 있습니다.

디버그 명령

IOS 게이트웨이가 로깅 버퍼에 디버그를 로깅하고 로깅 콘솔을 비활성화하도록 구성합니다.

참고: debug 명령을 사용하기 전에 디버그 명령에 대한 중요 정보를 참조하십시오.

게이트웨이의 로깅 버퍼에 디버그를 저장하기 위해 게이트웨이를 구성하는 데 사용되는 명령입니다.

1. 서비스 타임스탬프 디버그 datetime msec

2. 서비스 시퀀스

3. 로깅 콘솔 없음

4. 버퍼된 로깅 5000000 디버그

5. 로그 지우기

- 디버그 isdn q931

- 디버그 voip ccapi inout

- 디버그 voip 응용 프로그램 vxml 기본값

- 디버그 voip 응용 프로그램 vxml 덤프

- 디버그 rtsp all

- 디버그 mrcp 모두

- 디버그 http 클라이언트 모두

- 디버그 voip rtp 세션 nat named-event

디버그 출력

이 섹션에서는 이 샘플 통화 흐름에 대한 디버그 출력을 제공합니다.

1. 게이트웨이가 PSTN에서 수신 통화를 수신함

2. 게이트웨이가 인바운드 Dial-Peer 1과 일치

3. 통화가 약국에 전달됨

4. 통화가 ISDN 측에서 연결됨

5. 게이트웨이가 CVPSelfServiceBootstrap.vxml VoiceXML 스크립트 실행을 시작합니다.

6. 게이트웨이가 VXML 서버에 HTTP GET 요청을 보냅니다.

7. 게이트웨이가 VXML 서버에서 200개의 확인 메시지를 수신합니다.

8. 게이트웨이는 Welcome-1.wav 파일을 다운로드하기 위해 미디어 서버에 HTTP GET 요청을 보냅니다.

9. 게이트웨이는 미디어 서버에서 200 OK를 수신하고 HTTP 메시지 본문에서 Welcome-1.wav의 내용을 수신합니다.

10. 게이트웨이는 VXML 문서의 "전송" 옵션에 정의된 대로 서버에 HTTP POST 요청을 보냅니다(1).

11. 게이트웨이가 HTTP POST 요청에 대해 200OK를 수신함

12. 게이트웨이는 VXML 문서의 Submit(제출) 옵션에 정의된 대로 HTTP POST 요청을 보냅니다(2).

13. 게이트웨이가 HTTP POST 요청에 대해 200 OK 응답을 수신합니다.

14. 게이트웨이는 DTMF/음성 인식에 사용할 문법을 만듭니다.

15. 게이트웨이가 ASR 서버에 RTSP 설정 요청을 보냅니다.

16. 게이트웨이가 ASR 서버로부터 200 OK 응답을 수신함

17. 게이트웨이가 RTSP ANNOUNCE 요청에 포함된 ASR 서버에 MRCP "DEFINE-GRAMMAR" 요청을 보냅니다(여기에 하나의 요청만 표시됨).

18. 게이트웨이가 DEFINE-GRAMMAR 요청에 대해 200개의 완전한 응답을 수신합니다.

19. 게이트웨이가 ASR 서버에 MRCP "RECOGNIZE" 요청을 보냅니다.

20. ASR 서버가 인식 요청에 진행 중인 응답을 보냅니다.

21. 게이트웨이는 Welcome-1.wav 미디어 파일 다운로드를 완료하고 호출자에게 프롬프트를 재생하여 캐시에 저장합니다.

22. 게이트웨이가 TTS 서버에 RTSP 설정 요청을 보냅니다.

23. 게이트웨이가 RTSP 설정 요청에 대해 TTS 서버로부터 200 OK 응답을 수신합니다.

24. 게이트웨이가 TTS 서버에 MRCP "SPEAK" 요청을 보내 "안녕하세요, Audium 약국에 전화주셔서 감사합니다" 프롬프트를 재생합니다.

25. TTS 서버가 SPEAK 요청에 대해 "IN-PROGRESS" 응답을 보냅니다.

26. 프롬프트가 재생되면 TTS 서버는 게이트웨이에 MRCP "SPEAK-COMPLETE" 응답을 보냅니다.

27. ASR Server는 음성 시작을 탐지하고 MRCP "START-OF-SPEECH" 응답을 사용하여 게이트웨이에 알림

28. 게이트웨이가 MRCP Announce 요청에 200 OK 응답을 보냅니다.

29. ASR Server는 "Refill(리필)"이라는 단어를 인식하고 게이트웨이로 MRCP "RECOGNITION-COMPLETE" 메시지를 보냅니다.

30. ASR 서버로부터 성공적인 인식 알림을 받은 후 VXML 게이트웨이는 VXML 문서의 SUBMIT 태그에 지정된 대로 HTTP POST 요청을 보냅니다(2).

31. VXML 서버는 처방전 번호, 수거 시간을 수집하고 처방전을 회수할 준비가 되었음을 발신자에게 알리기 위해 VXML 페이지를 보냅니다.게이트웨이는 TTS 및 ASR 서버와 상호 작용하여 이러한 페이지를 실행합니다(디버그 출력은 표시되지 않음).

32. VXML 서버에서 보낸 최종 VXML 문서에는 양식의 종료 태그만 포함됩니다

33. 게이트웨이가 VXML 응용 프로그램을 종료합니다.

34. 게이트웨이가 ISDN 측에서 통화의 연결을 끊습니다.

35. 게이트웨이가 ASR 서버로 설정된 RTSP 세션의 연결을 끊습니다.

36. 게이트웨이가 TTS 서버로 설정된 RTSP 세션의 연결을 끊습니다.

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

인바운드 다이얼 피어 1이 일치함

*Feb  4 03:24:54.115: //-1/972590A48011/CCAPI/cc_api_call_setup_ind_common:

Interface=0x66C30F98, Call Info(

Calling Number=,(Calling Name=)(TON=Unknown, NPI=Unknown, Screening=Not Screened,

Presentation=Allowed),

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

Calling Translated=FALSE, Subscriber Type Str=RegularLine, FinalDestinationFlag=TRUE,

Incoming Dial-peer=1, Progress Indication=NULL(0), Calling IE Present=FALSE,

Source Trkgrp Route Label=, Target Trkgrp Route Label=, CLID Transparent=FALSE),

Call Id=-1

통화가 약국에 전달됨

*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

통화가 ISDN 측에서 연결됨

*Feb  4 03:24:54.119: ISDN Se3/0:23 Q931: TX -> CONNECT pd = 8  callref = 0x8099

*Feb  4 03:24:54.119: //63/972590A48011/CCAPI/ccCallHandoff:

Silent=FALSE, Application=0x67569410, Conference Id=0xFFFFFFFF

*Feb  4 03:24:54.119: //63//VXML:/Open_CallHandoff:

게이트웨이가 CVPSelfServiceBootstrap.vxml VoiceXML 스크립트 실행을 시작합니다.

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

게이트웨이가 VXML 서버에 HTTP GET 요청을 보냅니다.

*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

게이트웨이가 VXML 서버에서 200개의 확인 메시지를 수신합니다.

이 응답의 메시지 본문에 VXML 문서(1)가 있습니다. VXML 문서는 게이트웨이에 미디어 서버에 있는 Welcome-1.wav라는 미디어 파일을 재생하도록 지시합니다

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

게이트웨이는 Welcome-1.wav 파일을 다운로드하기 위해 미디어 서버에 HTTP GET 요청을 보냅니다.

*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

게이트웨이는 미디어 서버에서 200 OK를 수신하고 HTTP 메시지 본문에서 Welcome-1.wav의 내용을 수신합니다.

*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

게이트웨이는 VXML 문서의 "전송" 옵션에 정의된 대로 서버에 POST HTTP 요청을 보냅니다(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

게이트웨이가 POST HTTP 요청에 대해 200OK를 수신함

메시지 본문에 VXML 문서(2)가 있습니다. VXML 문서는 게이트웨이에 "안녕하세요. 오디오 약국에 연락해 주셔서 감사합니다.

참고: 이 프롬프트는 Text-to-Speech Server에서 합성해야 합니다.

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

Good morning and thank you for calling Audium pharmacy.

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

게이트웨이는 VXML 문서의 Submit(제출) 옵션에 정의된 대로 HTTP POST 요청을 보냅니다(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

게이트웨이가 HTTP POST 요청에 대해 200 OK 응답을 수신합니다.

메시지 본문에 VXML 문서(3)가 포함되어 있습니다. 이 VXML 문서는 발신자에게 1을 입력하거나, 2를 입력하거나, 약사라고 말하도록 지시하는 메뉴 프롬프트를 정의합니다.프롬프트는 TTS 서버에 의해 합성됩니다.입력(음성/dtmf)은 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" />

Say refills or press 1.

Or.

Say pharmacist or press 2.

Sorry.

I did not understand that.

Say refills or press 1.

Say pharmacist or press 2.

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

Say refills or press 1.

Or.

Say pharmacist or press 2.

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>

prescription

refills

prescription refills

refill my prescription

I want to refill my prescription

refills please

Pharmacist

I want to speak to a pharmacist

pharmacist please

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

</filled>

</field>

</form>

</vxml>

게이트웨이는 DTMF/음성 인식에 사용할 문법을 만듭니다.

그런 다음 게이트웨이가 ASR 서버와의 RTSP 세션을 설정하면 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>agent> <item>pharmacist> </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>agent> <item>pharmacist> </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

게이트웨이가 ASR 서버에 RTSP 설정 요청을 보냅니다.

*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

게이트웨이가 ASR 서버로부터 200 OK 응답을 수신함

200 OK 응답의 SDP에는 게이트웨이가 RTP 패킷을 전송해야 하는 ASR 서버의 IP 주소와 UDP 포트 번호가 포함됩니다.

*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

게이트웨이는 RTSP ANNOUNCE 요청에 포함된 ASR 서버에 MRCP "DEFINE-GRAMMAR" 요청을 보냅니다.

여기에 하나의 요청만 표시됩니다.

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

xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root">

prescription

게이트웨이가 DEFINE-GRAMMAR 요청에 대해 200개의 완전한 응답을 수신합니다.

*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

게이트웨이가 ASR 서버에 MRCP "RECOGNIZE" 요청을 보냅니다.

*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

ASR 서버가 인식 요청에 진행 중인 응답을 보냅니다.

*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

게이트웨이는 Welcome-1.wav 미디어 파일 다운로드를 완료하고 호출자에게 프롬프트를 재생하여 캐시에 저장합니다.

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

게이트웨이가 TTS 서버에 RTSP 설정 요청을 보냅니다.

*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

게이트웨이가 RTSP 설정 요청에 대해 TTS 서버로부터 200 OK 응답을 수신합니다.

*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

게이트웨이가 TTS 서버에 MRCP "SPEAK" 요청을 보내 "안녕하세요, Audium 약국에 전화주셔서 감사합니다" 프롬프트를 재생합니다.

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:165) 400 bytes of data:

ANNOUNCE rtsp://10.86.177.39/synthesizer RTSP/1.0

CSeq:  17

Session: 27b1560a_00000748_464c95e8_000b_0000

Content-Type: application/mrcp

Content-Length:  307

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: (socket:0) (bytes-sent:165)

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:19) 400 bytes of data:

SPEAK  2 MRCP/1.0

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: (socket:0) (bytes-sent:19)

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:114) 400 bytes of data:

Kill-On-Barge-In: true

Speech-Language: en-us

Logging-Tag: 63:63

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

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: (socket:0) (bytes-sent:114)

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:65) 400 bytes of data:

Content-Type: application/synthesis+ssml

Content-Length: 109

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: (socket:0) (bytes-sent:65)

*Feb  4 03:25:07.835: //-1//RTSP:/rtsp_partial_socket_send:

*Feb  4 03:25:07.835: rtsp_partial_socket_send: (fd:0 len:109) 400 bytes of data:

Good morning and thank you for calling Audium

pharmacy.

TTS 서버가 SPEAK 요청에 대해 "진행 중" 응답을 보냅니다.

*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

프롬프트가 재생되면 TTS 서버는 게이트웨이에 MRCP "SPEAK-COMPLETE" 응답을 보냅니다.

*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

ASR Server는 음성 시작을 탐지하고 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

게이트웨이가 MRCP Announce 요청에 200 OK 응답을 보냅니다.

*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

ASR Server는 "Refill(리필)"이라는 단어를 인식하고 게이트웨이에 MRCP "RECOGNITION-COMPLETE" 메시지를 보냅니다.

*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

ASR 서버로부터 성공적인 인식 알림을 받은 후 VXML 게이트웨이는 VXML 문서의 SUBMIT 태그에 지정된 대로 HTTP POST 요청을 보냅니다(2).

이 POST 요청은 VXML 서버에 사용자가 "리필" 옵션을 선택했음을 알립니다.

*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

VXML 서버에서 보낸 마지막 VXML 문서에는 양식의 종료 태그만 포함되어 있습니다.

이렇게 하면 게이트웨이가 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>

게이트웨이가 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)

게이트웨이가 ISDN 측에서 통화의 연결을 끊습니다.

*Feb  4 03:26:28.807: ISDN Se3/0:23 Q931: TX -> DISCONNECT pd = 8  callref = 0x8099

Cause i = 0x8090 - Normal call clearing

*Feb  4 03:26:28.819: ISDN Se3/0:23 Q931: RX <- RELEASE pd = 8  callref = 0x0099

*Feb  4 03:26:28.819: ISDN Se3/0:23 Q931: TX -> RELEASE_COMP pd = 8  callref = 0x8099

게이트웨이가 RTSP 세션을 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

게이트웨이가 RTSP 세션을 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

관련 정보

- 음성 기술 지원

- 음성 및 통합 커뮤니케이션 제품 지원

- Cisco IP 텔레포니 문제 해결

- 기술 지원 및 문서 − Cisco Systems