音声 : コール ルーティング / ダイヤル プラン

MRCPv1 ASR/TTS を使用した CVP コール フローへの IOS Voice XML Gateway

2015 年 11 月 26 日 - 機械翻訳について
その他のバージョン: PDFpdf | 英語版 (2015 年 8 月 22 日) | フィードバック


目次


概要

Voice Extensible Markup Language(VXML)は、World Wide Web Consortium(W3C)で定義された標準です。 VXML は、合成音声、音声認識、DTMF ディジットの認識、発話の録音を提供する音声ダイアログを作成するように設計されています。 VXML サーバとクライアントは、有名な HTTP プロトコルを使用して VXML のドキュメントおよびページを交換します。

Cisco Voice Portal(CVP)は、電話でアクセスできる、インテリジェントな自動音声応答(IVR)アプリケーションを提供します。 CVP には次の 3 つの導入タイプがあります。

  • スタンドアロン サービス

  • CVP コール制御

  • コール キューおよび転送

合成された音声、音声認識、または DTMF ディジット機能は、音声合成(TTS)サーバと自動音声認識(ASR)サーバによって提供されます。 Cisco IOS(R) VXML ゲートウェイはメディア リソース制御プロトコル(MRCP)を使用して TTS および ASR サーバと通信します。 MRCP(RFC 4463)には 2 種類のバージョン、つまり MRCPv1(RTSP を介した MRCP)と MRCPv2(SIP)を介した MRCP)です。

このドキュメントでは、MRCPv1 の TTS サーバまたは ASR サーバを使用するスタンドアロン サービス導入における CVP コールへの Cisco IOS Voice XML ゲートウェイのコール フローについて説明します。 サンプルの薬局のアプリケーションは、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

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。 ネットワークが稼働中の場合は、コマンドが及ぼす潜在的な影響を十分に理解しておく必要があります。

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

設定

この項では、このドキュメントで説明する機能の設定に必要な情報を提供します。

注: このドキュメントで使用されているコマンドの詳細を調べるには、Command Lookup Tool登録ユーザ専用)を使用してください。

ネットワーク構成図

このドキュメントでは、次のネットワーク構成を使用しています。

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

設定

このドキュメントでは次の設定を使用しています。

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 ゲートウェイは dial-peer 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 セッションが確立されると、ゲートウェイと TTS サーバは、RTSP ANNOUNCE 要求を使用して SPEAK、SPEAK-COMPLETE MRCP などの MRCP メッセージを交換します。

    TTS サーバは、RTSP SETUP 要求の「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、RECOGNIZE、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 タグ 1 個のみを持つ VXML のドキュメントを送信します。

  13. IOS ゲートウェイでは TTS サーバおよび ASR サーバと確立した MRCPv1 セッションを切断します。

  14. IOS ゲートウェイは ISDN の側のコールを切断します。

確認

ここでは、設定が正常に動作していることを確認します。

Output Interpreter Tool(OIT)(登録ユーザ専用)では、特定の show コマンドがサポートされています。 OIT を使用して、show コマンド出力の解析を表示できます。

  • show call active voice brief

    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 client session active detail

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

    VoIP RTP active connections :
    No. CallId     dstCallId  LocalRTP RmtRTP LocalIP         RemoteIP       
    1   66         63         17704    1224   172.18.110.77   10.86.177.39
  • show http client cache

    HTTP Client cached information
    ==============================
    Maximum memory pool allowed for HTTP Client caching = 15000 K-bytes
    Maximum file size allowed for caching = 500 K-bytes
    Total memory used up for Cache = 410 Bytes
    Message response timeout = 10 secs
    Total cached entries     = 1
    Total non-cached entries = 0
    
               Cached entries
               ==============
    
    entry 114,  1 entries
    Ref   FreshTime   Age          Size        context
    ---   ---------   ---          ----        -------
    1     119524      31           1271        0       
    url: http://172.18.110.75/Welcome-1.wav

トラブルシューティング

ここでは、設定に関するトラブルシューティングについて説明します。

debug コマンド

デバッグ出力をロギング バッファに記録し、ロギング コンソールを無効にするよう、IOS ゲートウェイを設定します。

注: debug コマンドを使用する前に、『debug コマンドの重要な情報』を参照してください。

ゲートウェイのロギング バッファにデバッグ出力を格納するようゲートウェイを設定する際は、次のコマンドを使用します。

  1. service timestamps debug datetime msec

  2. service sequence

  3. no logging console

  4. logging buffered 5000000 debug

  5. clear log

  • debug isdn q931

  • debug voip ccapi inout

  • debug voip application vxml default

  • debug voip application vxml dump

  • debug rtsp all

  • debug mrcp all

  • debug http client all

  • debug voip rtp session nte named-event

デバッグ出力

このセクションでは、次のコール フロー サンプルのデバッグ出力を示します。

  1. ゲートウェイが PSTN から着信コールを受信

  2. ゲートウェイが、着信ダイヤルピア 1 に一致する

  3. コールを薬局サービスに引き継ぎ

  4. コールが ISDN 側に接続

  5. ゲートウェイが CVPSelfServiceBootstrap.vxml VoiceXML のスクリプトの実行を開始

  6. ゲートウェイが、HTTP の GET 要求を VXML サーバに送信

  7. ゲートウェイが、VXML Server から 200 OK のメッセージを受信

  8. ゲートウェイが、Welcome-1.wav ファイルをダウンロードする HTTP GET 要求をメディア サーバに送信

  9. ゲートウェイが、メディア サーバから 200 OK を受信し、HTTP のメッセージ本文に含めて Welcome-1.wav の内容を受信

  10. ゲートウェイが、VXML のドキュメント(1)の「Submit」オプションの規定に従って HTTP POST 要求をサーバに送信

  11. ゲートウェイが HTTP の POST 要求の 200 OK を受信

  12. ゲートウェイが、VXML のドキュメント(2)の Submit オプションの規定に従って HTTP POST 要求を送信

  13. ゲートウェイが HTTP POST 要求の 200 OK 応答を受信

  14. ゲートウェイが、DTMF または音声認識に使用する文法を作成

  15. ゲートウェイが、RTSP SETUP 要求を ASR サーバに送信

  16. ゲートウェイが、ASR Server から 200 OK 応答を受信

  17. ゲートウェイが RTSP ANNOUNCE 要求に埋め込んだ MRCP「DEFINE-GRAMMAR」要求を ASR サーバに送信(ここでは 1 要求のみを表示)

  18. ゲートウェイが DEFINE-GRAMMAR 要求に対する 200 COMPLETE 応答を受信

  19. ゲートウェイが、MRCP「RECOGNIZE」要求を ASR サーバに送信

  20. ASR サーバが RECOGNIZE 要求に対する IN-PROGRESS 応答を送信

  21. ゲートウェイが Welcome-1.wav メディア ファイルのダウンロードを終了し、発信者にプロンプトを再生して、ファイルをキャッシュに保存

  22. ゲートウェイが、RTSP SETUP 要求を TTS サーバに送信

  23. ゲートウェイが RTSP SETUP 要求に対する 200 OK 応答を TTS サーバから受信

  24. ゲートウェイが「Good morning and thank you for calling Audium pharmacy」というプロンプトを再生する MRCP「SPEAK」要求を TTS サーバに送信

  25. TTS サーバが SPEAK 要求に対する IN-PROGRESS 応答を送信

  26. プロンプトの再生後に、TTS サーバが MRCP「SPEAK-COMPLETE」応答をゲートウェイに送信

  27. ASR サーバが、発話の開始を検出し、MRCP「START-OF-SPEECH」応答を使用してゲートウェイに通知

  28. ゲートウェイが MRCP Announce 要求への 200 OK 応答を送信

  29. ASR サーバが単語「Refills」を認識し、MRCP「RECOGNITION-COMPLETE」メッセージをゲートウェイに送信

  30. ASR サーバから認識成功通知を受信した後、VXML ゲートウェイが、VXML ドキュメント(2)の SUBMIT タグで指定された HTTP POST 要求を送信

  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)

ゲートウェイが、HTTP の GET 要求を VXML サーバに送信

*Feb  4 03:24:54.255: //63//HTTPC:/httpc_write_stream: Client write buffer fd(0):
GET /CVP/Server?application=GoodPrescriptionRefillApp7&callid=972590A4-185511D6-80110013-
803E8C8E&session.connection.remote.uri=5555
&session.connection.local.uri=5555 HTTP/1.1
Host: 172.18.110.75:7000
Content-Type: application/x-www-form-urlencoded
Connection: close
Accept: text/vxml, text/x-vxml, application/vxml, application/x-vxml, application/voicexml, 
application/x-voicexml, text/plain, text/html, audio/basic, audio/wav, multipart/form-data, 
application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

ゲートウェイが、VXML Server から 200 OK のメッセージを受信

この応答のメッセージ本文には 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 のドキュメント(1)の「Submit」オプションの規定に従って HTTP POST 要求をサーバに送信

*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

ゲートウェイが HTTP POST 要求の 200 OK を受信

メッセージ本文に VXML ドキュメント(2)が含まれています。 この VXML ドキュメントは、「Good Morning and Thank you for calling Audium pharmacy」を再生するようにゲートウェイに指示します。

注: このプロンプトは音声合成サーバによって合成される必要があります。

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

 
*Feb  4 03:24:54.379: body:
*Feb  4 03:24:54.379: <?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" application="/CVP/Server?audium_root=true&amp;
calling_into=GoodPrescriptionRefillApp7" xml:lang="en-us">
 <form id="audium_start_form">
  <block>
   <assign name="audium_vxmlLog" expr="''" />
   <assign name="audium_element_start_time_millisecs" expr="new Date().getTime()" />
   <goto next="#start" />
  </block>
 </form>
 <form id="start">
  <block>
   <prompt bargein="true">Good morning and thank you for calling Audium pharmacy.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'initial_audio_group' + '^^^' + application.getElap
sedTime(audium_element_start_time_millisecs)" />
   <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog" />
  </block>
 </form>
</vxml>

ゲートウェイが、VXML のドキュメント(2)の Submit オプションの規定に従って HTTP POST 要求を送信

*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 を入力するか Refills(補充)と発話することまたは 2 を入力するか pharmacist(薬剤師)と発話することを発信者に伝えるメニュー プロンプトを定義します。 プロンプトは 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" />
   <prompt bargein="true">Say refills or press 1.

Or.

Say pharmacist or press 2.</prompt>
    <catch event="nomatch">
     <prompt bargein="true">Sorry.

I did not understand that. 

Say refills or press 1.

Say pharmacist or press 2.</prompt>
     <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||nomatch$$$' + '1' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
     <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'nomatch_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
    </catch>
    <catch event="nomatch" count="2">
     <prompt bargein="true">Sorry, I still did not get that.

If you are using a speaker phone.

Please use the phone keypad to make your selection.

Press 1 for refills.

Press 2 to speak to a pharmacist.</prompt>
     <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||nomatch$$$' + '2' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
     <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'nomatch_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
    </catch>
    <catch event="nomatch" count="3">
     <prompt bargein="true">Gee.

Looks like we are having some trouble.</prompt>
     <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||nomatch$$$' + '3' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
     <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'nomatch_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
     <var name="maxNoMatch" expr="'yes'" />
     <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog maxNoMatch" />
    </catch>
    <catch event="noinput">
     <prompt bargein="true">Sorry. 

I did not hear that. 

Say refills or press 1.

Say pharmacist or press 2.</prompt>
      <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||noinput$$$' + '1' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
      <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'noinput_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
     </catch>
     <catch event="noinput" count="2">
      <prompt bargein="true">I am sorry.

I still did not hear that.

If you are using a speaker phone.

Please use the phone keypad to make your selection.

Press 1 for refills.

Press 2 to speak to a pharmacist.</prompt>
       <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||noinput$$$' + '2' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
       <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'noinput_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
      </catch>
      <catch event="noinput" count="3">
       <prompt bargein="true">Gee.

Looks like we are having some trouble.</prompt>
       <assign name="audium_vxmlLog" expr="
*Feb  4 03:24:54.435: 
*Feb  4 03:24:54.435: //63//AFW_:/vapp_bgpost_done: status=http OK
*Feb  4 03:24:54.435: //63//HTTPC:/httpc_socket_cleanup: fd=-1, bytes_sent=531
*Feb  4 03:24:54.435: //63//AFW_:/vapp_driver: evtID: 194 vapp record state: 0
*Feb  4 03:24:54.435: //63//AFW_:/vapp_bgpost_done_event: 
*Feb  4 03:24:54.435: //63/972590A48011/VXML:/vxml_bgload_post_done:  
  vxmlhandle=6767ECFC status=0 async_status=400000000
*Feb  4 03:24:54.435: //63/972590A48011/VXML:/vxml_bgload_post_done:  
  Loading file with url (http://172.18.110.75:7000/CVP/Server)
*Feb  4 03:24:54.435: //63/972590A48011/VXML:/vxml_bgload_post_done: Script Content
<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" application="/CVP/Server?audium_root=true&amp;
calling_into=GoodPrescriptionRefillApp7" xml:lang="en-us">
 <property name="timeout" value="60s" />
 <property name="confidencelevel" value="0.40" />
 <form id="audium_start_form">
  <block>
   <assign name="audium_vxmlLog" expr="''" />
   <assign name="audium_element_start_time_millisecs" expr="new Date().getTime()" />
   <goto next="#start" />
  </block>
 </form>
 <form id="start">
  <block>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'initial_audio_group' + '^^^' + application.getElap
sedTime(audium_element_start_time_millisecs)" />
   <goto nextitem="choice_fld" />
  </block>
  <field name="choice_fld" modal="false">
   <property name="inputmodes" value="dtmf voice" />
   <prompt bargein="true">Say refills or press 1.

Or.

Say pharmacist or press 2.</prompt>
    <catch event="nomatch">
     <prompt bargein="true">Sorry.

I did not understand that. 

Say refills or press 1.

Say pharmacist or press 2.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||nomatch$$$' + '1' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'nomatch_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
  </catch>
  <catch event="nomatch" count="2">
   <prompt bargein="true">Sorry, I still did not get that.

If you are using a speaker phone.

Please use the phone keypad to make your selection.

Press 1 for refills.

Press 2 to speak to a pharmacist.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||nomatch$$$' + '2' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' +
'nomatch_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
  </catch>
  <catch event="nomatch" count="3">
   <prompt bargein="true">Gee.

Looks like we are having some trouble.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||nomatch$$$' + '3' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'nomatch_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
   <var name="maxNoMatch" expr="'yes'" />
   <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog maxNoMatch" />
  </catch>
  <catch event="noinput">
   <prompt bargein="true">Sorry. 

I did not hear that. 

Say refills or press 1.

Say pharmacist or press 2.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||noinput$$$' + '1' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'noinput_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
  </catch>
  <catch event="noinput" count="2">
   <prompt bargein="true">I am sorry.

I still did not hear that.

If you are using a speaker phone.

Please use the phone keypad to make your selection.

Press 1 for refills.

Press 2 to speak to a pharmacist.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||noinput$$$' + '2' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'noinput_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
  </catch>
  <catch event="noinput" count="3">
   <prompt bargein="true">Gee.

Looks like we are having some trouble.</prompt>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||noinput$$$' + '3' + '^^^' + 
application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 
'noinput_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
   <var name="maxNoInput" expr="'yes'" />
   <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog maxNoInput" />
  </catch>
  <option value="refills" dtmf="1">prescription</option>
  <option value="refills">refills</option>
  <option value="refills">prescription refills</option>
  <option value="refills">refill my prescription</option>
  <option value="refills">I want to refill my prescription</option>
  <option value="refills">refills please</option>
  <option value="Pharmacist" dtmf="2">Pharmacist</option>
  <option value="Pharmacist">I want to speak to a pharmacist</option>
  <option value="Pharmacist">pharmacist please</option>
  <filled>
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||utterance$$$' + 
choice_fld$.utterance + '^^^' + application.getElap
sedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||inputmode$$$' + 
choice_fld$.inputmode + '^^^' + application.getElap
sedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||interpretation$$$' + 
choice_fld + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
   <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||confidence$$$' + 
choice_fld$.confidence + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
   <var name="confidence" expr="choice_fld$.confidence" />
   <submit next="/CVP/Server" method="post" namelist=" audium_vxmlLog confidence choice_fld" />
   </filled>
  </field>
 </form>
</vxml>

ゲートウェイが、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>
     <item>agent</item>
     <item>pharmacist</item>
    </one-of>
   </rule>
  </grammar>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:link334@document.grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=0
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar xmlns="http://www.w3.org/2001/06/grammar" mode="voice" 
version="1.0" root="Hotlink_01_VOICE" xml:lang="en-us">
   <rule id="Hotlink_01_VOICE" scope="public">
    <one-of>
     <item>operator</item>
     <item>agent</item>
     <item>pharmacist</item>
    </one-of>
   </rule>
  </grammar>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: 
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  
grammar_id=session:help@grammar
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  xml_lang=en-us
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  encoding_name=UTF-8
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar:  remoteupdate=1
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr_define_grammar: grammar=<?xml version="1.0" 
encoding="UTF-8"?><grammar version="1.0" xmln
s="http://www.w3.org/2001/06/grammar" xml:lang="en-us" root="root"><rule id="root" 
scope="public">help</rule></grammar>
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Speech-Language: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_add_param: param: Content-Base: 
*Feb  4 03:24:54.451: //-1//MRCP:/mrcp_recognizer_define_grammar: sess-id: 17
*Feb  4 03:24:54.451: //63//AFW_:/vapp_asr: grammar_id=session:option322@field.grammar
grammar_id=session:option323@field.grammar
grammar_id=session:option324@field.grammar
grammar_id=session:option325@field.grammar
grammar_id=session:option326@field.grammar
grammar_id=session:option327@field.grammar
grammar_id=session:option328@field.grammar
grammar_id=session:option329@field.grammar
grammar_id=session:option330@field.grammar
grammar_id=session:option331@field.grammar
grammar_id=session:option332@field.grammar
grammar_id=session:link333@document.grammar
grammar_id=session:link334@document.grammar
grammar_id=session:help@grammar

ゲートウェイが、RTSP SETUP 要求を ASR サーバに送信

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

ゲートウェイが、ASR Server から 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 要求に埋め込んだ MRCP「DEFINE-GRAMMAR」要求を ASR サーバに送信

1 要求のみを次に示します。

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

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

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

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

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

ゲートウェイが DEFINE-GRAMMAR 要求に対する 200 COMPLETE 応答を受信

*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

ゲートウェイが、MRCP「RECOGNIZE」要求を ASR サーバに送信

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

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

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

ASR サーバが RECOGNIZE 要求に対する IN-PROGRESS 応答を送信

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

ゲートウェイが、RTSP SETUP 要求を TTS サーバに送信

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

ゲートウェイが RTSP SETUP 要求に対する 200 OK 応答を TTS サーバから受信

*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

ゲートウェイが「Good morning and thank you for calling Audium pharmacy」というプロンプトを再生する MRCP「SPEAK」要求を TTS サーバに送信

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

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

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

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

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

TTS サーバが SPEAK 要求に対する「IN-PROGRESS」応答を送信

*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 サーバが、発話の開始を検出し、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 サーバが単語「Refills」を認識し、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 ドキュメント(2)の SUBMIT タグで指定された HTTP POST 要求を送信

この 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 ドキュメントには、FROM 内に EXIT タグだけが含まれる

これは 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

ゲートウェイが ASR サーバとの RTSP セッションを切断

*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

ゲートウェイが TTS サーバとの RTSP セッションを切断

*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

関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 97213