Голосовая связь : Маршрутизация вызова / Планы набора номеров

Шлюз XML речевого интерфейса IOS к потоку вызовов CVP, используящий ASR/TTS MRCPv1

20 октября 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Английский (22 августа 2015) | Отзыв


Содержание


Введение

Голосовой расширяемый язык разметки (VXML) – это стандарт, определенный Консорциумом всемирной сети (W3C). VXML разработан для создания аудио диалоговых окон, которые предоставляют синтезируемую речь, распознавание произнесенных слов, распознавание цифр DTMF и записи разговорного аудио. Сервер VXML и клиенты используют известный HTTP - протокол для обмена документами VXML и страницами.

Речевой портал Cisco (CVP) поставляет интеллектуальный и приложения интерактивного голосового ответа (IVR), к которым можно обратиться по телефону. Существует три типа CVP-развертываний:

  • Автономные службы

  • Контроль вызовов CVP

  • Очередь и передача вызовов

Синтезируемая речь, распознавание произнесенных слов или функциональности цифры DTMF предоставлены серверами Автоматического распознавания голоса (ASR) и текст-речь (TTS). Cisco шлюз VXML IOS� связывается с TTS и серверами ASR с помощью Протокола управления медиаресурса (MRCP). Существует две версии MRCP (RFC 4463), а именно MRCPv1 (MRCP через RTSP) и MRCPv2 (MRCP через SIP).

Этот документ описывает поток вызовов XML Обмена голосовыми данными с помощью Cisco IOS шлюз к вызову CVP в Автономном Развертывании сервиса, которое использует серверы ASR или MRCPv1 TTS. Типовое приложение (для использования в аптечном деле) было развернуто на сервере CVP VXML.

Предварительные условия

Требования

Для этого документа отсутствуют особые требования.

Используемые компоненты

Сведения, содержащиеся в данном документе, касаются следующих версий программного обеспечения и оборудования:

  • Шлюз IOS VXML: Cisco AS5400XM, IOS 12.4 (11) T2

  • Сервер VXML: CVP версии 4.0

  • Сервер ASR и TTS: Нюанс ASR v8.5 и TTS v4.0.6

Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в этом документе, были запущены с чистой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.

Условные обозначения

Дополнительные сведения об условных обозначениях см. в документе Условные обозначения технических терминов Cisco.

Настройка

В этом разделе содержатся сведения о настройке функций, описанных в этом документе.

Примечание: Чтобы получить подробные сведения о командах в данном документе, используйте Средство поиска команд (только для зарегистрированных клиентов).

Схема сети

В настоящем документе используется следующая схема сети:

/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 поступает в PSTN / VXML Gatway через T1 PRI 3/0.

  2. IOS-шлюз совпадает с узлом обычной телефонной сети 1 как входящее одноранговое телефонное соединение для этого вызова.

  3. IOS-шлюз вручает от управления вызовами сервису Аптеки, который привязан к точке вызова 1.

  4. VXML CVP / скрипт TCL, привязанный к сервису Аптеки, передает HTTP-запрос GET к серверу VXML.

  5. Сервер VXML возвращает 200 ответов OK. Этот ответ содержит документ VXML или страницу.

  6. IOS-шлюз выполняет документ VXML.

  7. Если документ VXML задает URL для звуковой подсказки, IOS-шлюз загружает аудио файл и играет приглашение.

  8. Если документ VXML задает текст для звуковой подсказки, IOS-шлюз устанавливает сеанс RTSP с rtsp://10.86.177.39/синтезатор (Сервер TTS). После того, как сеанс RTSP установлен, шлюз и Сервер TTS обмениваются сообщениями MRCP, такими как SPEAK, ЗАВЕРШЕННЫЙ SPEAK при помощи RTSP запрос ANNOUNCE.

    Сервер TTS передает аудиопоток RTP G.711ulaw к IP-адресу и Номеру порта UDP, предоставленному шлюзом в “Транспортном” Заголовке Запроса настройки RTSP.

  9. Если документ VXML specifes шлюз для распознавания цифр DTMF и произнесенных слов IOS-шлюз устанавливает сеанс RTSP с rtsp://10.86.177.39/устройство распознавания (сервер ASR). После того, как сеанс RTSP установлен, шлюз и сервер ASR обмениваются сообщениями MRCP теми, которые ОПРЕДЕЛЯЮТ GRAMMAR, ЗАВЕРШЕННЫЙ, РАСПОЗНАЮТ, ЗАВЕРШЕННЫЙ РАСПОЗНАВАНИЕМ при помощи RTSP запрос ANNOUNCE.

    Шлюз VXML IOS передает аудиопоток RTP G.711ulaw к IP-адресу и Номеру порта UDP, предоставленному ASR в SDP ответа RTSP 200 OK. Шлюз IOS VXML посылает введенные пользователем PSTN цифры в качестве событий RTP-NTE на сервер ASR.

  10. После выполнения документа VXML шлюз отправляет запрос POST HTTP (с рядом параметров), как задано в <отправлять> метке документа VXML или страницы.

  11. Шаги 6 – 10 повторяются для каждого документа VXML, посланным сервером.

  12. Когда Приложение VXML заканчивает сервис, предоставленный абоненту, это передает документ VXML только с <выход/> метка в <форма> элемент.

  13. IOS-шлюз разъединяет сеансы MRCPv1, установленные с серверами ASR и TTS.

  14. IOS-шлюз разъединяет запрос к стороне ISDN.

Проверка

Этот раздел позволяет убедиться, что конфигурация работает правильно.

Средство Output Interpreter (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 все

  • debug http client all

  • debug voip rtp session nte named-event

Отладка результатов

В данном разделе представлены выходные данные команды debug для приведенного примера потока вызовов:

  1. Шлюз принимает входящий вызов от PSTN

  2. Шлюз совпадает с входящим одноранговым телефонным соединением 1

  3. Вызов передается на службу аптек

  4. Вызов подключается со стороны ISDN

  5. Шлюз начинает выполнение команды CVPSelfServiceBootstrap.vxml сценария VoiceXML

  6. Шлюз отсылает GET-запрос HTTP на сервер VXML

  7. Шлюз получает сообщение 200 OK с сервера VXML

  8. Шлюз передает HTTP-запрос GET к Медиасерверу для загрузки Желанного-1.wav файла

  9. Шлюз получает сообщение 200 OK с медиа-сервера, а также содержимое файла Welcome-1.wav в сообщении HTTP

  10. Шлюз отправляет Запрос POST HTTP к Серверу, как определено в опции "Submit" Документа (1) VXML

  11. Шлюз получает 200 OK для своего запроса POST HTTP

  12. Шлюз отправляет запрос POST HTTP, как определено в опции Submit документа (2) VXML

  13. Шлюз получает 200 ответов OK для запроса POST HTTP

  14. Шлюз создает грамматику, которая будет использоваться для распознавания DTMF и речи

  15. Шлюз передает Запрос настройки RTSP к Серверу ASR

  16. Шлюз получает 200 ответов OK от Сервера ASR

  17. Шлюз отправляет запрос "ОПРЕДЕЛЯТЬ-GRAMMAR" MRCP к серверу ASR, встроенному в RTSP Запрос ANNOUNCE (всего, один запрос показывают здесь),

  18. Шлюз получает 200 ЗАВЕРШЕННЫХ ответов для своего запроса ОПРЕДЕЛЯТЬ-GRAMMAR

  19. Шлюз передает MRCP, “РАСПОЗНАЮТ” запрос Серверу ASR

  20. Сервер ASR передает ответ IN PROGRESS на РАСПОЗНАТЬ запрос

  21. Шлюз заканчивает загрузку Желанного-1.wav медиа-файла, играет приглашение абоненту и хранит его в кэше

  22. Шлюз передает Запрос настройки RTSP к серверу TTS

  23. Шлюз получает 200 ответов OK от сервера TTS для Запроса настройки RTSP

  24. Шлюз отправляет запрос “SPEAK” MRCP к Серверу TTS для игры “Доброго утра и спасибо за вызов приглашения” аптеки Audium

  25. Сервер TTS передает ответ "IN PROGRESS" за запросом SPEAK

  26. После того, как приглашение играется, Сервер TTS передает “ЗАВЕРШЕННЫЙ SPEAK” ответ MRCP на шлюз

  27. Сервер ASR обнаруживает запуск речи и уведомляет шлюз с помощью MRCP “START-OF-SPEECH” ответ

  28. Шлюз передает 200 ответов OK на MRCP, Объявляют о запросе

  29. Сервер ASR распознает слово "Refills" и передает “ЗАВЕРШЕННОЕ РАСПОЗНАВАНИЕМ” сообщение MRCP к шлюзу

  30. После получения успешного уведомления распознавания от сервера ASR шлюз VXML отправляет запрос POST HTTP, как задано в ОТПРАВЛЯТЬ метке документа (2) VXML

  31. Сервер VXML передает страницы VXML за сбором номера предписания, время срабатывания и сообщать абоненту, что предписание будет готово к захвату. Шлюз выполняет эти страницы путем взаимодействия с TTS и сервером ASR (выходные данные отладки, не показанные).

  32. Заключительный документ VXML, передаваемый сервером VXML, содержит просто выходную метку в форме

  33. Шлюз завершает приложение VXML

  34. Шлюз разрывает соединение вызова со стороны ISDN

  35. Шлюз разъединяет сеанс RTSP, установленный с Сервером ASR

  36. Шлюз разъединяет сеанс RTSP, установленный с Сервером TTS

Входящий вызов от 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)

Шлюз отсылает GET-запрос HTTP на сервер 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

Шлюз получает сообщение 200 OK с сервера VXML

Тело сообщения данного ответа содержит документ (1) VXML. Документ VXML говорит шлюзу играть медиа-файл под названием Приветствие-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>

Шлюз передает HTTP-запрос GET к Медиасерверу для загрузки Желанного-1.wav файла

*Feb  4 03:24:54.371: //63//HTTPC:/httpc_write_stream: Client write buffer fd(0):
GET /Welcome-1.wav HTTP/1.1
Host: 172.18.110.75
Content-Type: application/x-www-form-urlencoded
Connection: close
Accept: text/vxml, text/x-vxml, application/vxml, application/x-vxml, application/voicexml, 
application/x-voicexml, text/plain, text/html, audio/basic, audio/wav, multipart/form-data, 
application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

Шлюз получает сообщение 200 OK с медиа-сервера, а также содержимое файла Welcome-1.wav в сообщении HTTP

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

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

Шлюз передает Запрос HTTP POST к Серверу, как определено в опции "Submit" Документа (1) VXML

*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

Шлюз получает сообщение 200 OK для POST-запроса HTTP

Тело сообщения содержит документ (2) VXML. Документ VXML говорит шлюзу играть "Доброе утро и Спасибо за вызов аптеки Audium.

Примечание: Это приглашение должно быть синтезировано Сервером текст-речь.

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

Шлюз отправляет запрос POST HTTP, как определено в опции Submit документа (2) VXML

*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

Шлюз получает 200 ответов OK для запроса POST HTTP

Сообщение содержит документ (3) VXML. Этот документ VXML определяет Menu prompt, который говорит абоненту входить 1 или Пополнения SAID, вводить 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" />
   <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 к Серверу 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

Шлюз получает 200 ответов OK от Сервера ASR

SDP 200 ответов OK содержит IP-адрес сервера ASR и Номер порта UDP, к которому шлюз должен передать пакеты RTP.

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

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

Шлюз отправляет запрос "ОПРЕДЕЛЯТЬ-GRAMMAR" MRCP к серверу ASR, встроенному в RTSP Запрос ANNOUNCE

Только один запрос показывают здесь:

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

Шлюз получает 200 ЗАВЕРШЕННЫХ ответов для своего запроса ОПРЕДЕЛЯТЬ-GRAMMAR

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

MRCP/1.0 3 200 COMPLETE

Шлюз передает MRCP, “РАСПОЗНАЮТ” запрос Серверу 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 передает ответ 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

Шлюз заканчивает загрузку Желанного-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 к серверу 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

Шлюз получает 200 ответов OK от сервера TTS для Запроса настройки RTSP

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

Шлюз отправляет запрос “SPEAK” MRCP к Серверу TTS для игры “Доброго утра и спасибо за вызов приглашения” аптеки Audium

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

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

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

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

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

Сервер TTS передает ответ "IN PROGRESS" за запросом 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 передает “ЗАВЕРШЕННЫЙ SPEAK” ответ MRCP на шлюз

*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

Шлюз передает 200 ответов OK на MRCP, Объявляют о запросе

*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 к шлюзу

*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 отправляет запрос POST HTTP, как задано в ОТПРАВЛЯТЬ метке документа (2) VXML

Этот запрос POST сообщает серверу VXML, что пользователь выбрал опцию "Refills".

*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, который содержит метку <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

Шлюз разъединяет сеанс 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

Дополнительные сведения


Document ID: 97213