Voz : Roteamento de chamadas / Planos de discagem

IOS Voice XML Gateway para Fluxo de Chamadas do CVP Usando ASR/TTS MRCPv2

17 Julho 2008 - Tradução Manual
Outras Versões: Versão em PDFpdf | Tradução por Computador (29 Julho 2013) | Inglês (19 Setembro 2007) | Feedback

Índice

Introdução
Pré-requisitos
      Requisitos
      Componentes Utilizados
      Convenções
Configuração
      Diagrama de Rede
      Configurações
      Exemplo de Fluxo de Chamadas
Verificação
Troubleshooting
      Comandos de Depuração
      Saídas de Depuração
Discussões relacionadas da comunidade de suporte da Cisco

Introdução

A Voice Extensible Markup Language (VXML) é um padrão definido pela World Wide Web Consortium (W3C). Ela foi desenvolvida para criar diálogos de áudio que fornecem fala sintetizada, reconhecimento de palavras faladas, reconhecimento de dígitos DTMF e áudio falado gravado. O servidor e os clientes VXML usam o conhecido protocolo HTTP para trocar documentos/páginas VXML.

O Cisco Voice Portal (CVP) oferece aplicativos de respostas de voz interativos (IVR) e inteligentes que podem ser acessados por telefone. Existem três tipos de implementações do CVP:

  1. Serviço autônomo

  2. Controle de chamadas do CVP

  3. Fila e transferência de chamadas

Os recursos de fala sintetizada e o reconhecimento de palavras faladas/dígitos DTMF são fornecidos pelos servidores Text-to-Speech (TTS) e Automatic Speech Recognition (ASR). O IOS® VXML Gateway se comunica com o servidor TTS / ASR através do Media Resource Control Protocol (MRCP). Existem duas versões do MRCP (RFC 4463), chamadas MRCPv1 (MRCP sobre RTSP) e MRCPv2 (MRCP sobre SIP).

Este documento descreve o fluxo de chamadas de um IOS Voice XML Gateway para chamada do CVP em uma implementação de serviço autônomo que usa servidores TTS/ASR MRCPv2. Um aplicativo de exemplo de farmácia foi implementado no servidor VXML do CVP.

Pré-requisitos

Requisitos

Não existem requisitos específicos para este documento.

Componentes Utilizados

As informações neste documento baseiam-se nestas versões de software e hardware:

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

  • Servidor VXML: CVP 4.0

  • Servidor ASR/TTS: Loquendo Speech Suite 7.0

As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração padrão. Se a sua rede estiver em um ambiente de produção, esteja ciente do impacto potencial de qualquer comando.

Convenções

Consulte as Convenções de Dicas Técnicas da Cisco para obter mais informações sobre convenções de documentos.

Configuração

Nesta seção, você encontrará informações para configurar os recursos descritos neste documento.

Nota: Use a Command Lookup Tool (somente clientes registrados) para obter mais informações sobre os comandos usados nesta seção.

Diagrama de Rede

Este documento utiliza a seguinte configuração de rede:

index-ios-1.gif

Configurações

Este documento utiliza as seguintes configurações:

Configuração do VXML Gateway


!--- Define o mapeamento de nome de host em
 !--- endereço IP para os servidores ASR e TTS.


ip host asr-en-us 172.18.110.76
ip host tts-en-us 172.18.110.76


!--- Define o URI de classe de voz que deverá corresponder
 !--- ao URI SIP do servidor ASR no peer discado.


voice class uri  TTS sip
 pattern tts@172.18.110.76


!--- Define o URI de classe de voz que deverá corresponder !--- ao URI SIP do servidor TTS no peer discado


voice class uri  ASR sip
 pattern asr@172.18.110.76


!--- Define a quantidade de memória máxima
 !--- usada para prompts de download.


ivr prompt memory 15000


!--- Define o URI SIP do servidor
 !--- ASR e TTS.


ivr asr-server sip:asr@172.18.110.76
ivr tts-server sip:tts@172.18.110.76


!--- Configura um serviço aplicativo para
 !--- 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


!--- Configura um serviço aplicativo para
 !--- CVP VXML CVPSelfService.tcl Script
!--- O parâmetro CVPSelfService-app especifica
 !--- o nome do aplicativo VXML.
!--- O parâmetro CVPPrimary especifica o
 !--- endereço IP do servidor VXML.


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


!--- Determina que o fluxo RTP do gateway
!--- para o ASR/TTS contorne o
!--- Content Service Switch
!--- em vez de atravessá-lo.


mrcp client rtpsetup enable


!--- Especifica o tamanho máximo de memória
!--- do cache do cliente HTTP.


http client cache memory pool 15000


!--- Especifica o número máximo de arquivos
 !--- que podem ser armazenados no
 !--- cache do cliente HTTP.


http client cache memory file 500


!--- Desativa conexões de
!--- HTTP persistentes.


no http client connection persistent


!--- Configura o PRI T1.


controller T1 3/0
 framing esf
 linecode b8zs
 pri-group timeslots 1-24


!--- Configura o tipo e o incoming-voice
!--- do switch ISDN
!--- no peer discado da 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
!--- Voip SIP que será usado
!--- como peer discado de entrada para as chamadas recebidas
!--- pela linha PRI T1.
!---- O serviço "pharmacy"
!--- é aplicado sob este peer discado.


dial-peer voice 1 pots
 service pharmacy
 destination-pattern 5555
 direct-inward-dial
 port 3/0:D
 forward-digits all


!--- Configura um peer discado
!--- Voip SIP que será usado
!--- como peer discado de saída quando o
!--- gateway  iniciar uma sessão de MRCP overc SIP
!--- sobre SIP para o servidor ASR.
!--- Codec = G711ulaw, DTMF-Relay
!--- = RTP-NTE, No Vad


dial-peer voice 5 voip
 session protocol sipv2
 destination uri ASR
 dtmf-relay rtp-nte
 codec g711ulaw
 no vad


!--- Configura um peer discado
!--- Voip SIP que será usado
!--- como peer discado de saída quando o
!---gateway  iniciar uma sessão de MRCP
!--- sobre SIP para o servidor TTS.
!--- Codec = G711ulaw, DTMF-Relay = RTP-NTE,
!--- No Vad


dial-peer voice 6 voip
 session protocol sipv2
 destination uri TTS
 dtmf-relay rtp-nte
 codec g711ulaw
 no vad

Exemplo de Fluxo de Chamadas

Esta seção descreve o fluxo de chamadas resultante deste exemplo de configuração.

  1. Uma chamada ISDN no PSTN/VXML Gateway através de T1 PRI 3/0.

  2. O IOS Gateway encontra POTS dial-peer 1 como o dial-peer de entrada para esta chamada.

  3. O IOS Gateway passa o controle da chamada ao serviço de Farmácia associado ao dial-peer 1.

  4. O script VXML/TCL do CVP associado ao serviço de Farmácia envia uma solicitação HTTP GET ao servidor VXML.

  5. O servidor VXML retorna uma resposta 200 OK. Esta resposta contém um documento/página VXML.

  6. O IOS Gateway executa o documento VXML.

  7. Se o documento VXML especificar um URL para um prompt de áudio, o IOS Gateway baixará o arquivo de áudio e executará o prompt.

  8. Se o documento VXML especificar um texto para um prompt de áudio, o IOS Gateway estabelecerá uma sessão SIP com tts@172.18.110.76 (servidor TTS) usando dial-peer 5. Após a sessão SIP ser estabelecida, ele abrirá uma conexão TCP para o servidor TTS usando o número de porta TCP fornecido no SDP da resposta 200 OK de SIP INVITE. Esta conexão TCP é usada para trocar mensagens MRCP como SPEAK, SPEAK-COMPLETE entre o IOS Gateway e o servidor TTS.

    O servidor TTS envia um fluxo de áudio RTP G.711ulaw para o endereço IP e o número da porta UDP fornecido pelo Gateway no SDP de SIP INVITE.

  9. Se o documento VXML especificar o gateway para reconhecer dígitos DTMF e/ou palavras faladas, o IOS Gateway estabelecerá uma sessão SIP com asr@172.18.110.76 (servidor ASR) usando dial-peer 6. Após a sessão SIP ser estabelecida, ele abrirá uma conexão TCP para o servidor ASR usando o número de porta TCP fornecido no SDP da resposta 200 OK de SIP INVITE. Esta conexão TCP é usada para trocar mensagens MRCP como DEFINE GRAMMAR, COMPLETE, RECOGNIZE e RECOGNITION-COMPLETE entre o IOS Gateway e o servidor ASR.

    O IOS VXML Gateway envia um fluxo de áudio RTP G.711ulaw para o endereço IP e o número da porta UDP fornecido pelo ASR no SDP da resposta SIP 200 OK. O IOS VXML Gateway envia os dígitos inseridos pelo usuário PSTN como eventos RTP-NTE ao servidor ASR.

  10. Após a execução do documento VXML, o gateway envia uma solicitação HTTP POST (com um conjunto de parâmetros) como especificado na marca <submit> do documento/página VXML.

  11. Os passos 6–10 ocorrem para cada documento VXML enviado pelo servidor.

  12. Quando o aplicativo VXML encerra o serviço fornecido pelo chamados, ele envia um documento VXML com uma marca <exit/> no elemento <form>.

  13. O IOS Gateway desconecta as sessões MRCPv2 estabelecidas com os servidores TTS e ASR.

  14. O IOS Gateway desconecta a chamada na ISDN.

Verificação

Utilize esta seção para confirmar se a sua configuração está funcionando corretamente.

A Output Interpreter Tool (somente clientes registrados) (OIT) oferece suporte a determinados comandos show. Use a OIT para exibir uma análise da saída do comando show.

  • Show call active voice brief

    11F8 : 160 333356110ms.
       1 +10 pid:1 Answer 5555 active
     dur 00:00:54 tx:1740/300598 rx:364/85472
     Tele 3/0:D (160) [3/0.1]
       tx:15145/15145/0ms None noise:-52
       acom:6  i/0:-32/-64 dBm
    
    Telephony call-legs: 1
    SIP call-legs: 0
    H323 call-legs: 0
    Call agent controlled call-legs: 0
    SCCP call-legs: 0
    Multicast call-legs: 0
    Media call-legs: 0
    Total call-legs: 1
    
  • Show call active media brief

    11F8 : 163 333360880ms.1
       +60 pid:6 Originate
       sip:tts@172.18.110.76:5060 active
     dur 00:00:44 tx:0/0 rx:2212/353545
     IP 172.18.110.76:10000 SRTP:
       off rtt:0ms pl:
       4485/0ms lost:0/1/0 delay:65/65/65ms
       g711ulaw TextRelay: off
     media inactive detected:n
       media contrl rcvd:
       n/a timestamp:n/a
     long duration call detected:n
       long duration
       call duration:n/a timestamp:n/a11F8 :
       164 333360890ms.1 +20 pid:5 Originate
       sip:asr@172.18.110.76:5060 active
    
     dur 00:00:44 tx:1687/297152 rx:0/0
     IP 172.18.110.76:10002 SRTP:
       off rtt:0ms
       pl:6550/30ms lost:0/2/0 delay:65/65/65ms
       g711ulaw TextRelay: off
     media inactive detected:n media contrl
       rcvd:n/a timestamp:n/a
     long duration call detected:n
       long duration
       call duration:n/a timestamp:n/a
    
    Telephony call-legs: 0
    SIP call-legs: 0
    H323 call-legs: 0
    Call agent controlled call-legs: 0
    SCCP call-legs: 0
    Multicast call-legs: 0
    Media call-legs: 2
    Total call-legs: 2
    
  • Show mrcp client session active detail

    No Of Active MRCP Sessions: 1
    
    Call-ID: 0xA0 same: 0
    --------------------------------------------
    Resource Type: Synthesizer
       URL: sip:tts@172.18.110.76
     Method In Progress: SPEAK
       State: S_SYNTH_SPEAKING
    
     Associated CallID: 0xA3
     MRCP version: 2.0
     Control Protocol: TCP Server IP Address:
       172.18.110.76  Port: 51000
    
      Data Protocol: RTP Server IP Address:
       172.18.110.76  Port: 10000
      Signalling URL: sip:tts@172.18.110.76:5060
    
      Packets Transmitted: 0 (0 bytes)
      Packets Received: 2265 (361968 bytes)
      ReceiveDelay: 65     LostPackets: 0
    --------------------------------------------
    --------------------------------------------
    
    Resource Type: Recognizer
       URL: sip:asr@172.18.110.76
     Method In Progress: RECOGNIZE
       State: S_RECOG_RECOGNIZING
    
    Associated CallID: 0xA4
    MRCP version: 2.0
    Control Protocol: TCP Server IP Address:
       172.18.110.76  Port: 51001
    
    Data Protocol: RTP Server IP Address:
       172.18.110.76  Port: 10002
    
    Packets Transmitted: 1791 (313792 bytes)
    Packets Received: 0 (0 bytes)
    ReceiveDelay: 60     LostPackets: 0
    
  • Show voip rtp connections

    VoIP RTP active connections :
    No. CallId     dstCallId  LocalRTP
       RmtRTP LocalIP
       RemoteIP
    1   163        160        18964
       10000  14.1.16.25
       172.18.110.76
    2   164        160        23072
       10002  14.1.16.25
       172.18.110.76
    Found 2 active RTP connections
    
  • 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     86400       48           1505
       0
    url: http://172.18.110.75/Welcome-1.wav
    

Troubleshooting

Esta seção fornece informações que você pode usar no troubleshooting de sua configuração.

Comandos de Depuração

Configure o IOS Gateway para registrar as depurações neste buffer de registro e desativar "logging console".

Nota: Consulte Informações Importantes sobre Comandos de Depuração antes de usar comandos debug.

Nota: Estes são os comandos usados para configurar o Gateway para armazenar as depurações no buffer de registro do Gateway:

  • service timestamps debug datetime msec

  • service sequence

  • no logging console

  • logging buffered 5000000 debug

  • clear log

A seguir estão os comandos de depuração usados para troubleshooting da configuração:

  • debug isdn q931

  • debug voip ccapi inout

  • debug voip application vxml default

  • debug voip application vxml dump

  • debug ccsip message

  • debug mrcp detail

  • debug http client all

  • debug voip rtp session nte named-event

Saídas de Depuração

Esta seção fornece saídas de depuração para este fluxo de chamadas de exemplo:

  1. O Gateway recebe uma chamada de entrada da PSTN.

  2. O Gateway encontra o Dial-Peer 1 de entrada.

  3. A chamada é passada ao Serviço de Farmácia.

  4. A chamada é conectada na ISDN.

  5. O Gateway inicia a execução do script VoiceXML CVPSelfServiceBootstrap.vxml.

  6. O Gateway envia uma solicitação HTTP GET ao Servidor VXML.

  7. O Gateway recebe uma mensagem 200 OK do servidor VXML. O corpo da mensagem desta resposta contém um VXML document (1). Este documento VXML informa ao Gateway que o arquivo de mídia chamado Welcome-1.wav localizado em um Media Server deve ser tocado.

  8. O Gateway envia uma solicitação HTTP GET ao Media Server para baixar o arquivo Welcome-1.wav.

  9. O Gateway recebe 200 OK do Media Server e recebe o conteúdo de Welcome-1.wav no corpo da mensagem HTTP.

  10. O Gateway envia uma solicitação POST HTTP ao servidor como definida na opção "Submit" de VXML Document (1).

  11. O Gateway recebe 200 OK para sua solicitação POST HTTP. O corpo da mensagem contém o VXML Document (2). Este documento VXML informa ao Gateway que a mensagem "Thank you for calling Audium pharmacy." deve ser tocada. Observe que este prompt precisa ser sintetizado por um servidor de Conversão de Texto em Fala.

  12. O Gateway envia uma solicitação HTTP POST como definida na opção Submit de VXML document (2).

  13. O Gateway recebe uma resposta 200 OK para a solicitação HTTP POST. O corpo da mensagem contém o VXML Document (3). Este documento VXML define um prompt de menu que informa ao chamador para inserir 1 ou dizer Refill, 2 ou dizer pharmacist. Os prompts são sintetizados por um servidor Text-to-Speech. As entradas (fala/DTMF) são reconhecidas usando um Automatic Speech Recognizer.

  14. O Gateway cria as gramáticas a serem usadas para o reconhecimento de DTMF/Fala. Essas gramáticas são, em seguida, enviadas ao servidor ASR uma vez que o Gateway estabeleça uma sessão com o servidor ASR.

  15. O Gateway executa uma consulta de dial-peer para configurar uma sessão SIP com o servidor Text-to-Speech. O dial-peer 6 de saída é encontrado.

  16. O Gateway envia um SIP INVITE ao servidor TTS. O SDP da mensagem INVITE contém informações de mídia para o fluxo de áudio e o aplicativo MRCPv2 (canal speechsynth).

  17. O Gateway executa uma consulta de dial-peer para configurar uma sessão SIP com o servidor ASR. O dial-peer 5 de saída é encontrado.

  18. O Gateway envia um SIP INVITE ao servidor ASR. O SDP contém as informações de mídia para o fluxo de áudio, relay DTMF e aplicativo MRCPv2 (canal speechrecog).

  19. O Gateway recebe uma resposta 200 OK (para SIP INVITE) do servidor ASR. O SDP da mensagem SIP INVITE especifica o seguinte:

    • O codec G711ulaw, o endereço IP e os números das portas RTP para o fluxo de áudio

    • O atributo de direção deste fluxo RTP: "recvonly"

    • O RTP-NTE com base em Relay DTMF

    • O número da porta TCP (51001) a ser usada pelo Gateway para estabelecer uma sessão MRCPv2 com o servidor ASR.

  20. O Gateway envia SIP ACK para o servidor ASR e a sessão SIP para o Automatic Speech Recognition é estabelecida entre o Gateway e o servidor ASR.

  21. O Gateway envia uma solicitação MRCP "DEFINE-GRAMMAR" ao servidor ASR. (Somente uma solicitação é mostrada aqui.)

  22. O Gateway recebe uma resposta 200 COMPLETE para sua solicitação DEFINE-GRAMMAR.

  23. O Gateway recebe uma resposta 200 OK (para SIP INVITE) do servidor TTS. O SDP da mensagem SIP INVITE especifica o seguinte:

    • O codec G711ulaw, o endereço IP e os números das portas RTP para o fluxo de áudio

    • O atributo de direção deste fluxo RTP: "sendonly"

    • O RTP-NTE com base em Relay DTMF

    • O número da porta TCP (51000) a ser usada pelo Gateway para estabelecer uma sessão MRCPv2 com o servidor TTS.

  24. O Gateway envia SIP ACK para o servidor TTS e a sessão SIP para o Text-to-Speech é estabelecida entre o Gateway e o servidor TTS.

  25. O Gateway envia uma solicitação MRCP "RECOGNIZE" ao servidor ASR para iniciar o reconhecimento de DTMF/palavras faladas.

  26. O servidor ASR envia uma resposta "IN PROGRESS" (para a solicitação RECOGNIZE) ao Gateway.

  27. O Gateway termina o download do arquivo de mídia Welcome-1.wav, o armazena em cache e toca o prompt para o chamador.

  28. O Gateway envia uma solicitação MRCP "SPEAK" ao servidor TTS para tocar o prompt "Thank-You-for-Calling".

  29. O servidor TTS envia uma resposta "IN-PROGRESS" para a solicitação SPEAK.

  30. O servidor TTS envia uma mensagem "SPEAK-COMPLETE" após falar o prompt "Thank-you-for-Calling".

  31. O Gateway envia uma solicitação MRCP "SPEAK" ao servidor TTS para tocar o prompt "Menu" (Enter 1 or Say Refil / Enter 2 or Say pharmacist). (As saídas de depuração não são mostradas.)

  32. O servidor TTS envia uma mensagem IN-PROGRESS, SPEAK-COMPLETE e termina de tocar o prompt. (As saídas de depuração não são mostradas.)

  33. O chamador da PSTN insere "1" para escolher Refill. O Gateway envia este dígito como um evento RTP-NTE ao servidor ASR.

  34. O servidor ASR envia uma mensagem "RECOGNITION-COMPLETE" ao Gateway para notificá-lo de que ele reconheceu um dos eventos solicitados (neste caso o dígito 1).

  35. Após ele receber uma notificação de êxito no reconhecimento do servidor ASR, o Gateway VXML envia uma solicitação HTTP POST como especificada na marca SUBMIT de VXML document (3). Esta solicitação POST informa ao servidor VXML que o dígito 1 foi inserido pelo chamador da PSTN.

  36. O servidor VXML, em seguida, envia outro documento VXML que solicita ao chamador a inserção da prescrição aqui. (As saídas de depuração não são mostradas.)

  37. O Gateway envia a mensagem MRCP ao TTS para falar os prompts. (As saídas de depuração não são mostradas, mas elas são semelhantes aos passos 28-30.)

  38. O Gateway envia a mensagem MRCP ao ASR para detectar o número da prescrição de 4 dígitos falado pelo usuário. (As saídas de depuração não são mostradas, mas elas são semelhantes aos passos 25-26.)

  39. O ASR reconhece o número da prescrição de 4 dígitos e envia uma mensagem MRCP "RECOGNITION-COMPLETE" ao IOS VXML Gateway.

  40. O Gateway informa o número da prescrição do servidor VXML, enviando uma solicitação HTTP POST. (As saídas de depuração não são mostradas, mas elas são semelhantes ao passo 35.)

  41. O servidor VXML envia páginas VXML para obter o horário de coleta e informar ao chamador que a prescrição estará pronta para recolhimento. O Gateway executa estas páginas por interações com os servidores TTS e ASR. (As saídas de depuração não são mostradas.)

  42. O último documento VXML enviado pelo servidor VXML contém somente a marca <exit\> em <form>. Isso informa ao Gateway que a sessão VXML deve ser encerrada.

  43. O Gateway encerra o aplicativo VXML.

  44. O Gateway desconecta a sessão SIP estabelecida com o servidor ASR.

  45. O Gateway desconecta a sessão SIP estabelecida com o servidor TTS.

  46. O Gateway desconecta a chamada na ISDN.

Chamada de Entrada da PSTN

*Jan 18 03:34:52.735: ISDN Se3/0:23
   Q931: RX <- SETUP pd = 8  callref = 0x005A
        Bearer Capability i = 0x8090A2
                Standard = CCITT
                Transfer Capability = Speech
                Transfer Mode = Circuit
                Transfer Rate = 64 kbit/s
        Channel ID i = 0xA98381
                Exclusive, Channel 1
        Called Party Number i = 0x81, '5555'
                Plan:ISDN, Type:Unknown
*Jan 18 03:34:52.735: //-1/2AEE8C2A801C/
   CCAPI/cc_api_display_ie_subfields:
   cc_api_call_setup_ind_common:
   cisco-username=
   ----- ccCallInfo IE subfields -----
   cisco-ani=
   cisco-anitype=0
   cisco-aniplan=0
   cisco-anipi=0
   cisco-anisi=0
   dest=5555
   cisco-desttype=0
   cisco-destplan=1
   cisco-rdie=FFFFFFFF
   cisco-rdn=
   cisco-rdntype=-1
   cisco-rdnplan=-1
   cisco-rdnpi=-1
   cisco-rdnsi=-1
   cisco-redirectreason=-1   fwd_final_type =0
   final_redirectNumber =
   hunt_group_timeout =0

Dial-Peer 1 de Entrada Encontrado

*Jan 18 03:34:52.735:
   //-1/2AEE8C2A801C/
   CCAPI/cc_api_call_setup_ind_common:
   Interface=0x664B4BA4, Call Info(
   Calling Number=,(Calling Name=)(TON=Unknown,
   NPI=Unknown, Screening=Not Screened,
   Presentation=Allowed),
   Called Number=5555(TON=Unknown, NPI=ISDN),
   Calling Translated=FALSE, Subscriber
   Type Str=RegularLine,
   FinalDestinationFlag=TRUE,
   Incoming Dial-peer=1, Progress
   Indication=NULL(0),
   Calling IE Present=FALSE,
   Source Trkgrp Route Label=,
   Target Trkgrp Route Label=,
   CLID Transparent=FALSE),
   Call Id=-1

A Chamada é Passada ao Serviço de Farmácia

*Jan 18 03:34:52.739:
   //127/2AEE8C2A801C/CCAPI
   /cc_process_call_setup_ind:
   >>>>CCAPI handed cid 127 with tag 1 to app
   "_ManagedAppProcess_Pharmacy"
*Jan 18 03:34:52.739:
   //127/2AEE8C2A801C/CCAPI/ccCallSetupAck:
   Call Id=127

A Chamada é Conectada na ISDN.

*Jan 18 03:34:52.739:
   ISDN Se3/0:23 Q931: TX ->
   CONNECT pd = 8  callref =
   0x805A
*Jan 18 03:34:52.739:
   //127/2AEE8C2A801C/CCAPI/ccCallHandoff:
   Silent=FALSE, Application=0x663106C4,
   Conference Id=0xFFFFFFFF
*Jan 18 03:34:52.743: //127//VXML:/Open_CallHandoff:

O Gateway Inicia a Execução do Script VoiceXML CVPSelfServiceBootstrap.vxml


*Jan 18 03:34:52.755:
   //127/2AEE8C2A801C/VXML:
   /vxml_vxml_proc:
<vxml>
   URI(abs):flash:
   CVPSelfServiceBootstrap.vxml
   scheme=flash
   path=CVPSelfServiceBootstrap.vxml
   base=
   URI(abs):flash:
   CVPSelfServiceBootstrap.vxml
   scheme=flash
   path=CVPSelfServiceBootstrap.vxml
   lang=none version=2.0
<script>:
*Jan 18 03:34:52.799: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
*Jan 18 03:34:52.863: //127/2AEE8C2A801C/VXML
   :/vxml_jse_global_switch:
   switch to scope(application)
<var>: namep=handoffstring
   expr=session.handoff_string
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var handoffstring=session.
   handoff_string)
<var>: namep=application expr=getValue('APP')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var application=getValue('APP'))
<var>: namep=port expr=getValue('PORT')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var port=getValue('PORT'))
<var>: namep=callid expr=getValue('CALLID')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var callid=getValue('CALLID'))
<var>: namep=servername expr=getValue('PRIMARY')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var servername=getValue('PRIMARY'))
<var>: namep=var1 expr=getValue('var1')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var var1=getValue('var1'))
<var>: namep=var2 expr=getValue('var2')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var var2=getValue('var2'))
<var>: namep=var3 expr=getValue('var3')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var var3=getValue('var3'))
<var>: namep=var4 expr=getValue('var4')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var var4=getValue('var4'))
<var>: namep=var5 expr=getValue('var5')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var var5=getValue('var5'))
<var>: namep=status expr=getValue('status')
*Jan 18 03:34:52.867: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var status=getValue('status'))
<var>: namep=prevapp expr=getValue('prevapp')
*Jan 18 03:34:52.871: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var prevapp=getValue('prevapp'))
<var>: namep=survive expr=getValue('survive')
*Jan 18 03:34:52.871: //127/2AEE8C2A801C/VXML
   :/vxml_expr_eval:
   expr=(var survive=getValue('survive'))
<var>: namep=handoffExit

O Gateway Envia uma Solicitação HTTP GET ao Servidor VXML.

*Jan 18 03:34:52.875:
   //127//HTTPC:/httpc_write_stream:
   Client write buffer fd(3):
GET /CVP/Server?application=
   GoodPrescriptionRefillApp7&callid=
   2AEE8C2A-0AFB11D6-801C0013-
   803E8C8E&session.connection.remote.uri=555
5&session.connection.local.uri=5555 HTTP/1.1
Host: 172.18.110.75:7000
Content-Type: application/x-www-form-urlencoded
Connection: close
Accept: text/vxml, text/x-vxml, application/vxml,
   application/x-vxml, application/voicexml,
   application/x-voicexml, text/plain, tex
t/html, audio/basic, audio/wav,
   multipart/form-data,
   application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

O Gateway Recebe uma Mensagem 200 OK do Servidor VXML

O corpo da mensagem desta resposta contém VXML document (1). Este documento VXML informa ao Gateway que o arquivo de mídia chamado Welcome-1.wav localizado em um Media Server deve ser tocado.

*Jan 18 03:34:52.883: processing server
   rsp msg: msg(67CA63A8)
   URL:http://172.18.110.75:7000/CVP/
   Server?application=GoodPrescription
RefillApp7&callid=2AEE8C2A-0AFB11D6-801C0013
   -803E8C8E&session.connection.
   remote.uri=5555&session.connection.local.
   uri=5555, fd(3):
*Jan 18 03:34:52.883: Request msg:
   GET /CVP/Server?application=
   GoodPrescriptionRefillApp7&callid=
   2AEE8C2A-0AFB11D6-801C0013-803E8C8
E&session.connection.remote.
   uri=5555&session
   .connection.local.uri=5555 HTTP/1.1
*Jan 18 03:34:52.883:
   Message Response Code: 200
*Jan 18 03:34:52.883:
   Message Rsp Decoded Headers:
*Jan 18 03:34:52.883:
   Date:Mon, 30 Apr 2007 16:58:39 GMT
*Jan 18 03:34:52.883:
   Content-Type:text/xml;
   charset=ISO-8859-1
*Jan 18 03:34:52.883:
   Connection:close
*Jan 18 03:34:52.883:
   Set-Cookie:JSESSIONID=
   BBCE0F948ADFDB720497F587A7997538;
   Path=/CVP

*Jan 18 03:34:52.883: headers:
*Jan 18 03:34:52.883: HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=BBCE0F948ADF
   DB720497F587A7997538; Path=/CVP
Content-Type: text/xml;charset=ISO-8859-1
Date: Mon, 30 Apr 2007 16:58:39 GMT
Connection: close


*Jan 18 03:34:52.883: body:
*Jan 18 03:34:52.883: <?xml version="1.0"
   encoding="UTF-8"?>
<vxml version="2.0" application=
   "/CVP/Server?audium_root=true&amp;
   calling_into=GoodPrescriptionRefillApp7"
   xml:lang="en-us">
  <form id="audium_start_form">
    <block>
      <assign name="audium_vxmlLog" expr="''" />
      <assign name="audium_element
   _start_time_millisecs"
   expr="new Date().getTime()" />
      <goto next="#start" />
    </block>
  </form>
  <form id="start">
    <block>
      <prompt bargein="true">
        <audio src="http://172.18.110.75/
   Welcome-1.wav" />
      </prompt>
      <assign name="audium_vxmlLog"
   expr="audium_vxmlLog
   + '|||audio_group$$$' + 'initial_audio_group'
   + '^^^'
   + application.getEla
psedTime(audium_element_start_time_millisecs)" />
      <submit next="/CVP/Server" method="post"
   namelist=" audium_vxmlLog" />
    </block>
  </form>
</vxml>

O Gateway Envia uma Solicitação HTTP GET ao Media Server para Baixar o Arquivo Welcome-1.wav

GET /Welcome-1.wav HTTP/1.1
Host: 172.18.110.75
Content-Type:
   application/x-www-form-urlencoded
Connection: close
Accept: text/vxml,
   text/x-vxml, application/vxml,
   application/x-vxml,
   application/voicexml,
   application/x-voicexml,
   text/plain, tex
t/html, audio/basic, audio/wav,
   multipart/form-data,
   application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

O Gateway Recebe 200 OK do Media Server e Recebe o Conteúdo de Welcome-1.wav no Corpo da Mensagem HTTP.

*Jan 18 03:34:55.647:
   //127//HTTPC:/httpc_socket_read:
*Jan 18 03:34:55.647:
   read data from the socket 3
   : first 400 bytes of data:
HTTP/1.1 200 OK
Content-Length: 26450
Content-Type: audio/wav
Last-Modified:
   Mon, 30 Apr 2007 15:36:51 GMT
Accept-Ranges: bytes
ETag: "e0c1445f3d8bc71:2d6"
Server: Microsoft-IIS/6.0
Date: Mon, 30 Apr 2007 16:58:42 GMT
Connection: close

RIFFJg(Unprintable char...)
   0057415645666D7420120001010401
   F00401F00108000666163744000176700
   64617461176700FFFFFF807
   FFFFFFF80FFFFFF80F
(other hex information not shown).

O Gateway Envia uma Solicitação POST HTTP ao Servidor como Definida na Opção "Submit" de VXML Document (1).

POST /CVP/Server HTTP/1.1
Host: 172.18.110.75:7000
Content-Length: 67
Content-Type:
   application/x-www-form-urlencoded
Cookie: $Version=0; JSESSIONID=BBCE0F948
   ADFDB720497F587A7997538; $Path=/CVP
Connection: close
Accept: text/vxml, text/x-vxml,
   application/vxml,
   application/x-vxml,
   application/voicexml,
   application/x-voicexml,
   text/plain, tex
t/html, audio/basic, audio/wav,
   multipart/form-data,
   application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

O Gateway Recebe 200 OK para sua Solicitação POST HTTP.

O corpo da mensagem contém VXML document (2). Este documento VXML informa ao Gateway que a mensagem "Thank you for calling Audium pharmacy." deve ser tocada. Observe que este prompt precisa ser sintetizado por um servidor de Text to Speech.

*Jan 18 03:34:55.651:
   processing server rsp msg:
   msg(67CA6960)URL:
   http://172.18.110.75:
   7000/CVP/Server, fd(4):
*Jan 18 03:34:55.651: Request msg:
   POST /CVP/Server HTTP/1.1
*Jan 18 03:34:55.651:
   Message Response Code: 200
*Jan 18 03:34:55.651:
   Message Rsp Decoded Headers:
*Jan 18 03:34:55.651:
   Date:Mon, 30 Apr 2007 16:58:42 GMT
*Jan 18 03:34:55.651:
   Content-Type:text/xml;
   charset=ISO-8859-1
*Jan 18 03:34:55.651: Connection:close
*Jan 18 03:34:55.651: headers:
*Jan 18 03:34:55.651: HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=ISO-8859-1
Date: Mon, 30 Apr 2007 16:58:42 GMT
Connection: close


*Jan 18 03:34:55.655: body:
*Jan 18 03:34:55.655: <?xml version="1.0"
   encoding="UTF-8"?>
<vxml version="2.0" application=
   "/CVP/Server?audium_root=true&amp;
   calling_into=GoodPrescriptionRefillApp7"
   xml:lang="en-us">
  <form id="audium_start_form">
    <block>
      <assign name="audium_vxmlLog" expr="''" />
      <assign name="audium_element
   _start_time_millisecs"
   expr="new Date().getTime()" />
      <goto next="#start" />
    </block>
  </form>
  <form id="start">
    <block>
      <prompt bargein="true">
   Thank you for calling Audium pharmacy.
   </prompt>
      <assign name="audium_vxmlLog" expr=
   "audium_vxmlLog + '|||audio_group$$$'
   + 'initial_audio_group'
   + '^^^' + application.getEla
psedTime(audium_element_start_time_millisecs)" />
      <submit next="/CVP/Server" method="post"
   namelist=" audium_vxmlLog" />
    </block>
  </form>
</vxml>

O Gateway Envia uma Solicitação HTTP POST como Definida na Opção Submit de VXML Document (2)

*Jan 18 03:34:55.667:
   //127//HTTPC:/httpc_write_stream:
   Client write buffer fd(4):
POST /CVP/Server HTTP/1.1
Host: 172.18.110.75:7000
Content-Length: 67
Content-Type:
   application/x-www-form-urlencoded
Cookie: $Version=0; JSESSIONID=
   BBCE0F948ADFDB720497F587A7997538;
   $Path=/CVP
Connection: close
Accept: text/vxml, text/x-vxml,
    application/vxml,
   application/x-vxml, application/voicexml,
   application/x-voicexml, text/plain, tex
t/html, audio/basic, audio/wav,
   multipart/form-data,
   application/octet-stream
User-Agent: Cisco-IOS-C5400/12.4

O Gateway Recebe uma Resposta 200 OK para a Solicitação HTTP POST.

O corpo da mensagem contém VXML document (3). Este documento VXML define um prompt de menu que informa ao chamador para inserir 1 ou dizer Refill, 2 ou dizer pharmacist. Os prompts são sintetizados por um servidor Text-to-Speech. As entradas (fala/DTMF) são reconhecidas usando um Automatic Speech Recognizer.

*Jan 18 03:34:57.499:
   processing server rsp msg:
   msg(67CA6B48)URL:
   http://172.18.110.75:7000/CVP/Server, fd(4):
*Jan 18 03:34:57.499: Request msg:
   POST /CVP/Server HTTP/1.1
*Jan 18 03:34:57.499:
   Message Response Code: 200
*Jan 18 03:34:57.499:
   Message Rsp Decoded Headers:
*Jan 18 03:34:57.499:
   Date:Mon, 30 Apr 2007 16:58:42 GMT
*Jan 18 03:34:57.499:
   Content-Type:text/xml;charset=ISO-8859-1
*Jan 18 03:34:57.499: Connection:close
*Jan 18 03:34:57.499: headers:
*Jan 18 03:34:57.499: HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=ISO-8859-1
Date: Mon, 30 Apr 2007 16:58:42 GMT
Connection: close


*Jan 18 03:34:57.499: body:
*Jan 18 03:34:57.499: ... Buffer too large
   - truncated to (4096) len.
*Jan 18 03:34:57.499: <?xml version="1.0"
   encoding="UTF-8"?>
<vxml version="2.0" application=
   "/CVP/Server?audium_root=true&amp;
   calling_into=GoodPrescriptionRefillApp7"
   xml:lang="en-us">
  <property name="timeout" value="60s" />
  <property name="confidencelevel" value="0.40" />
  <form id="audium_start_form">
    <block>
      <assign name="audium_vxmlLog" expr="''" />
      <assign name="audium_element
   _start_time_millisecs"
   expr="new Date().getTime()" />
      <goto next="#start" />
    </block>
  </form>
  <form id="start">
    <block>
      <assign name="audium_vxmlLog"
   expr="audium_vxmlLog
   + '|||audio_group$$$' + 'initial_audio_group' + '^^^'
   + application.getElapsedTime
   (audium_element_start_time_millisecs)" />
      <goto nextitem="choice_fld" />
    </block>
    <field name="choice_fld" modal="false">
      <property name="inputmodes" value="dtmf voice" />
      <prompt bargein="true">Say refills or press 1.

Or.

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

I did not understand that.

Say refills or press 1.

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

If you are using a speaker phone.

Please use the phone keypad to make
   your selection.

Press 1 for refills.

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


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

I did not hear that.

Say refills or press 1.

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

I still did not hear that.

If you are using a speaker phone.

Please use the phone keypad
   to make your selection.

Press 1 for refills.

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

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

O Gateway Cria as Gramáticas a Serem Usadas para o Reconhecimento de DTMF/Fala

Essas gramáticas serão, em seguida, enviadas ao servidor ASR uma vez que o Gateway estabeleça uma sessão com o servidor ASR.

*Jan 18 03:34:57.523:
   //127//AFW_:/vapp_asr_change_server:
   asr_server=sip:asr@172.18.110.76
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option485@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0" encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root" scope="public">
    prescription</rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=339,
   Event=0x63ACCCF0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option486@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
    <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   mode="dtmf" root=
   "root"><rule id="root" scope=
   "public">1</rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:
   /mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=340,
   Event=0x63ACCAE8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option487@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root" scope="public">
    refills</rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP
   :/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=341,
   Event=0x63ACBC88
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option488@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0" encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root" scope="public">
   prescription refills</rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=342,
   Event=0x63ACBCB0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option489@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar" xml:
   lang="en-us" root="root">
   <rule id="root" scope="public">
    refill my prescription</rule><
/grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94,
   Count=343, Event=0x63ACBCD8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option490@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0" encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
    xml:lang="en-us" root="root">
   <rule id="root" scope="public">
    I want to refill my prescription
   </rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=344,
   Event=0x63ACBD00
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option491@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0" encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
  xml:lang="en-us"
   root="root"><rule id="root" scope="public">
   refills please</rule></grammar
>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=345,
   Event=0x63ACBD28
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option492@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root"
   scope="public"> Pharmacist
   </rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=346,
   Event=0x63ACBB20
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option493@field.grammar
*Jan 18 03:34:57.523:
   //127//AFW_:/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523:
   //127//AFW_:/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   mode="dtmf" root="root">
   <rule id="root" scope=
   "public">2</rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94,
   Count=347, Event=0x63ACBD50
*Jan 18 03:34:57.523:
   //127//AFW_:/vapp_asr_define_grammar:
*Jan 18 03:34:57.523:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar_id=session:
   option494@field.grammar
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root" scope="public">
   I want to speak to a pharmacist
   </rule></grammar>
*Jan 18 03:34:57.523: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94,
   Count=348, Event=0x63ACBFF8
*Jan 18 03:34:57.523: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.527: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar_id=session:option495@field.grammar
*Jan 18 03:34:57.527: //127//AFW_
   :/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.527: //127//AFW_
   :/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.527: //127//AFW_
   :/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.527: //127//AFW_
   :/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root" scope="public">
   pharmacist please
   </rule></grammar>

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

   ****>Caller PC=0x61BE1F94,
   Count=349, Event=0x63ACC048
*Jan 18 03:34:57.527: //127//AFW_
   :/vapp_asr_define_grammar:
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar_id=session:link496@document.grammar
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar xmlns="http://ww
w.w3.org/2001/06/grammar" mode="voice"
   version="1.0"
   root="Hotlink_02_VOICE" xml:lang="en-us">
      <rule id="Hotlink_02_VOICE" scope="public">
        <one-of>
          <item>operator</item>
          <item>agent</item>
          <item>pharmacist</item>
        </one-of>
      </rule>
    </grammar>
*Jan 18 03:34:57.527: //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=350,
   Event=0x63ACC098
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar_id=session:link497@document.grammar
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   remoteupdate=0
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar=<?xml version="1.0" encoding="UTF-8"?>
   <grammar xmlns="http://ww
w.w3.org/2001/06/grammar" mode="voice" version="1.0"
   root="Hotlink_01_VOICE" xml:lang="en-us">
      <rule id="Hotlink_01_VOICE" scope="public">
        <one-of>
          <item>operator</item>
          <item>agent</item>
          <item>pharmacist</item>
        </one-of>
      </rule>
    </grammar>
*Jan 18 03:34:57.527:
   //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=351,
   Event=0x63ACC0C0
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar_id=session:help@grammar
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   xml_lang=en-us
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   encoding_name=UTF-8
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   remoteupdate=1
*Jan 18 03:34:57.527:
   //127//AFW_:/vapp_asr_define_grammar:
   grammar=<?xml version="1.0"
   encoding="UTF-8"?>
   <grammar version="1.0" xm
lns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us"
   root="root"><rule id="root"
   scope="public">
   help</rule></grammar>
*Jan 18 03:34:57.527:
   //-1//MRCP:/mrcp_get_ev:
   ****>Caller PC=0x61BE1F94, Count=352,
   Event=0x63ACBEE0
*Jan 18 03:34:57.527: //127//AFW_:/vapp_asr:
   grammar_id=session:option485@field.grammar
grammar_id=session:option486@field.grammar
grammar_id=session:option487@field.grammar
grammar_id=session:option488@field.grammar
grammar_id=session:option489@field.grammar
grammar_id=session:option490@field.grammar
grammar_id=session:option491@field.grammar
grammar_id=session:option492@field.grammar
grammar_id=session:option493@field.grammar
grammar_id=session:option494@field.grammar
grammar_id=session:option495@field.grammar
grammar_id=session:link496@document.grammar
grammar_id=session:link497@document.grammar
grammar_id=session:help@grammar

O Gateway Executa uma Consulta de Dial-Peer para Configurar uma Sessão SIP com o Servidor Text-to-Speech

O dial-peer 6 de saída é encontrado.

*Jan 18 03:34:57.527:
   //-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

   Destination Pattern=,
   Called Number=sip:tts@172.18.110.76,
   Digit Strip=FALSE

*Jan 18 03:34:57.527:
   //-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

   Calling Number=5555(TON=Unknown, NPI=Unknown,
   Screening=Not Screened,

   Presentation=Allowed),

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

   Redirect Number=, Display Info=

   Account Number=, Final Destination Flag=TRUE,

   Guid=2AEE8C2A-0AFB-11D6-801C-0013803E8C8E,
   Outgoing Dial-peer=6

*Jan 18 03:34:57.531:
   //-1/xxxxxxxxxxxx/CCAPI/cc
   _api_display_ie_subfields:

   ccCallSetupRequest:

   cisco-username=

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

   cisco-ani=5555

   cisco-anitype=0

   cisco-aniplan=0

   cisco-anipi=0

   cisco-anisi=0

   dest=sip:tts@172.18.110.76

   cisco-desttype=0

   cisco-destplan=1

   cisco-rdie=FFFFFFFF

   cisco-rdn=

   cisco-rdntype=-1

   cisco-rdnplan=-1

   cisco-rdnpi=-1

   cisco-rdnsi=-1

   cisco-redirectreason=-1   fwd_final_type =0

   final_redirectNumber =

   hunt_group_timeout =0



*Jan 18 03:34:57.531:
    //-1/xxxxxxxxxxxx/CCAPI/
   ccIFCallSetupRequestPrivate:

   Interface=0x662CE538, Interface Type=3,
   Destination=, Mode=0x0,

   Call Params(Calling Number=5555,
   (Calling Name=)(TON=Unknown,
   NPI=Unknown, Screening=Not Screened,
   Presentation=Allowed),

   Called Number=sip:tts@172.18.110.76
   (TON=Unknown, NPI=ISDN),
   Calling Translated=FALSE,

   Subscriber Type Str=RegularLine,
   FinalDestinationFlag=TRUE,
   Outgoing Dial-peer=6, Call Count On=FALSE,

   Source Trkgrp Route Label=,
   Target Trkgrp Route Label=,
   tg_label_flag=0, Application Call Id=)



O Gateway Envia um SIP INVITE ao Servidor TTS

O SDP da mensagem INVITE contém informações de mídia para o fluxo de áudio e o aplicativo MRCPv2 (canal speechsynth).



*Jan 18 03:34:57.531:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

INVITE sip:tts@172.18.110.76:5060 SIP/2.0

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

Remote-Party-ID: <sip:5555@14.1.16.25>;
   party=calling;screen=no;privacy=off

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

To: sip:tts@172.18.110.76

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

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30
   -3585E95A@14.1.16.25

Supported: 100rel,timer,
   resource-priority,replaces

Min-SE:  1800

Cisco-Guid: 720276522-184226262
   -2149318675-2151582862

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

Allow: INVITE, OPTIONS, BYE,
   CANCEL, ACK, PRACK, UPDATE,
   REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER

CSeq: 101 INVITE

Max-Forwards: 70

Timestamp: 1011324897

Contact: <sip:5555@14.1.16.25:5060>

Expires: 180

Allow-Events: telephone-event

Content-Type: application/sdp

Content-Disposition:
   session;handling=required

Content-Length: 358



v=0

o=CiscoSystemsSIP-GW-UserAgent
   6021 4611 IN IP4 14.1.16.25

s=SIP Call

c=IN IP4 14.1.16.25

t=0 0

m=audio 16984 RTP/AVP 0 101

c=IN IP4 14.1.16.25

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

a=ptime:20

a=recvonly

a=mid:1

m=application 9 TCP/MRCPv2

a=setup:active

a=connection:new

a=resource:speechsynth

a=cmid:1

O Gateway Executa uma Consulta de Dial-Peer para Configurar uma Sessão SIP com o Servidor ASR

O dial-peer 5 de saída é encontrado.

*Jan 18 03:34:57.531:
   //-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

   Destination Pattern=,
    Called Number=sip:asr@172.18.110.76,
   Digit Strip=FALSE

*Jan 18 03:34:57.531:
   //-1/xxxxxxxxxxxx/CCAPI/ccCallSetupRequest:

   Calling Number=5555(TON=Unknown, NPI=Unknown,
   Screening=Not Screened, Presentation=Allowed),

   Called Number=sip:asr@172.18.110.76
   (TON=Unknown, NPI=ISDN),

   Redirect Number=, Display Info=

   Account Number=, Final Destination Flag=TRUE,

   Guid=2AEE8C2A-0AFB-11D6-801C-0013803E8C8E,
   Outgoing Dial-peer=5

*Jan 18 03:34:57.531:
    //-1/xxxxxxxxxxxx/CCAPI/cc_api
   _display_ie_subfields:

   ccCallSetupRequest:

   cisco-username=

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

   cisco-ani=5555

   cisco-anitype=0

   cisco-aniplan=0

   cisco-anipi=0

   cisco-anisi=0

   dest=sip:asr@172.18.110.76

   cisco-desttype=0

   cisco-destplan=1

   cisco-rdie=FFFFFFFF

   cisco-rdn=

   cisco-rdntype=-1

   cisco-rdnplan=-1

   cisco-rdnpi=-1

   cisco-rdnsi=-1

   cisco-redirectreason=-1
   fwd_final_type =0

   final_redirectNumber =

   hunt_group_timeout =0



*Jan 18 03:34:57.535:
    //-1/xxxxxxxxxxxx/CCAPI
   /ccIFCallSetupRequestPrivate:

   Interface=0x662CE538, Interface Type=3,
   Destination=, Mode=0x0,

   Call Params(Calling Number=5555,
   (Calling Name=)(TON=Unknown,
   NPI=Unknown, Screening=Not Screened,
   Presentation=Allowed),

   Called Number=sip:asr@172.18.110.76
   (TON=Unknown, NPI=ISDN),
   Calling Translated=FALSE,

   Subscriber Type Str=RegularLine,
   FinalDestinationFlag=TRUE,
   Outgoing Dial-peer=5, Call Count On=FALSE,

   Source Trkgrp Route Label=,
   Target Trkgrp Route Label=,
   tg_label_flag=0, Application Call Id=)

O Gateway Envia um SIP INVITE ao Servidor ASR

O SDP contém as informações de mídia para o fluxo de áudio, relay DTMF e aplicativo MRCPv2 (canal speechrecog).

*Jan 18 03:34:57.535:
    //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

INVITE sip:asr@172.18.110.76:5060 SIP/2.0

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

Remote-Party-ID: <sip:5555@14.1.16.25>;
    party=calling;screen=no;privacy=off

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

To: sip:asr@172.18.110.76

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

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

Supported: 100rel,timer,
   resource-priority,replaces

Min-SE:  1800

Cisco-Guid: 720276522-184226262-
   2149318675-2151582862

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

Allow: INVITE, OPTIONS, BYE, CANCEL,
   ACK, PRACK, UPDATE,
   REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER

CSeq: 101 INVITE

Max-Forwards: 70

Timestamp: 1011324897

Contact: <sip:5555@14.1.16.25:5060>

Expires: 180

Allow-Events: telephone-event

Content-Type: application/sdp

Content-Disposition:
   session;handling=required

Content-Length: 358



v=0

o=CiscoSystemsSIP-GW-UserAgent
   6805 2057 IN IP4 14.1.16.25

s=SIP Call

c=IN IP4 14.1.16.25

t=0 0

m=audio 19994 RTP/AVP 0 101

c=IN IP4 14.1.16.25

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=fmtp:101 0-16

a=ptime:20

a=sendonly

a=mid:1

m=application 9 TCP/MRCPv2

a=setup:active

a=connection:new

a=resource:speechrecog

a=cmid:1

O Gateway Recebe uma Resposta 200 OK (para SIP INVITE) do Servidor ASR

  1. O codec G711ulaw, o endereço IP e os números das portas RTP para o fluxo de áudio.

  2. O atributo de direção deste fluxo RTP é "recvonly"

  3. O RTP-NTE com base em Relay DTMF.

  4. O número da porta TCP (51001) a ser usada pelo Gateway para estabelecer uma sessão MRCPv2 com o servidor ASR.

*Jan 18 03:34:57.559:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

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

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

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

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

CSeq: 101 INVITE

Contact: <sip:172.18.110.76:5060>

Content-Type: application/sdp

Content-Length: 342



v=0

o=MRCPv2Server 3386937590 3386937590
   IN IP4 172.18.110.76

s=SIP Call

c=IN IP4 172.18.110.76

t=3386937590 0

m=audio 10002 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=recvonly

m=application 51001 TCP/MRCPv2

a=connection:new

a=setup:passive

a=model:besteffort

a=channel:000023B846361276@speechrecog

O Gateway Envia SIP ACK para o Servidor ASR

A sessão SIP para o ASR é estabelecida entre o Gateway e o servidor ASR.

*Jan 18 03:34:57.563:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

ACK sip:172.18.110.76:5060 SIP/2.0

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

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

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

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

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

Max-Forwards: 70

CSeq: 101 ACK

Allow-Events: telephone-event

Content-Length: 0

O Gateway Envia uma Solicitação MRCP "DEFINE-GRAMMAR" ao Servidor ASR

Somente uma solicitação é mostrada aqui.

MRCP/2.0 446      DEFINE-GRAMMAR  1

Channel-Identifier: 000023B846361276@speechrecog

:

Speech-Language: en-us

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

:

Content-Type: application/srgs+xml

Content-Id: option485@field.grammar

Content-Length: 193



:

<?xml version="1.0" encoding="UTF-8"?>
   <grammar version="1.0"
   mlns="http://www.w3.org/2001/06/grammar"
   xml:lang="en-us" root="root"

><rule id="root" scope="public">
   prescription</rule></grammar>

O Gateway Recebe uma Resposta 200 COMPLETE para sua Solicitação DEFINE-GRAMMAR

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

   Table=mrcpv2_socket_connect_table, Key=0:

MRCP/2.0 80 1 200 COMPLETE

Channel-Identifier: 000023B846361276@speechrecog

O Gateway Recebe uma Resposta 200 OK (para SIP INVITE) do Servidor TTS

O SDP da mensagem SIP INVITE especifica o seguinte:

  1. O codec G711ulaw, o endereço IP e os números das portas RTP para o fluxo de áudio.

  2. O atributo de direção deste fluxo RTP é "sendonly".

  3. O RTP-NTE com base em Relay DTMF.

  4. O número da porta TCP (51000) a ser usada pelo Gateway para estabelecer uma sessão MRCPv2 com o servidor TTS.

*Jan 18 03:34:57.591:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

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

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

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

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30-
   3585E95A@14.1.16.25

CSeq: 101 INVITE

Contact: <sip:172.18.110.76:5060>

Content-Type: application/sdp

Content-Length: 342



v=0

o=MRCPv2Server 3386937590 3386937590
   IN IP4 172.18.110.76

s=SIP Call

c=IN IP4 172.18.110.76

t=3386937590 0

m=audio 10000 RTP/AVP 0 101

a=rtpmap:0 PCMU/8000

a=rtpmap:101 telephone-event/8000

a=sendonly

m=application 51000 TCP/MRCPv2

a=connection:new

a=setup:passive

a=model:besteffort

a=channel:000023EC46361276@speechsynth

O Gateway Envia SIP ACK para o Servidor TTS

A sessão SIP para o Text-to-Speech é estabelecida entre o Gateway e o servidor TTS.

*Jan 18 03:34:57.595:
   //-1/xxxxxxxxxxxx/SIP/
   Msg/ccsipDisplayMsg:

Sent:

ACK sip:172.18.110.76:5060 SIP/2.0

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

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

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

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

Call-ID: 2DCA5BEF-AFB11D6-80D3DC30
   -3585E95A@14.1.16.25

Max-Forwards: 70

CSeq: 101 ACK

Allow-Events: telephone-event

Content-Length: 0

O Gateway Envia uma Solicitação MRCP "RECOGNIZE" ao Servidor ASR

MRCP/2.0 987
   RECOGNIZE  15

Channel-Identifier:
   000023B846361276@speechrecog

:

Speech-Language: en-us

Confidence-Threshold: 0.40

Sensitivity-Level: 0.50

Speed-Vs-Accuracy: 0.50

Cancel-If-Queue: false

Dtmf-Interdigit-Timeout: 10000

Dtmf-Term-Timeout: 0

Dtmf-Term-Char: #

No-Input-Timeout: 60000

N-Best-List-Length: 1

Logging-Tag: 127:127

Accept-Charset: charset: utf-8

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

Media-Type: audio/basic

Start-Input-Timers: false

:

Content-Type: text/uri-list

Content-Length: 453



:

session:option485@field.grammar

session:option486@field.grammar

session:option487@field.grammar

session:option488@field.grammar

session:option489@field.grammar

session:option490@field.grammar

session:option491@field.grammar

session:option492@field.grammar

session:option493@field.grammar

session:option494@field.grammar

session:option495@field.grammar

session:link496@document.grammar

session:link497@document.grammar

session:help@grammar

O Servidor ASR Envia a Resposta "IN PROGRESS" (para a Solicitação RECOGNIZE) ao Gateway

MRCP/2.0 84 15 200 IN-PROGRESS

Channel-Identifier:
   000023B846361276@speechrecog

O Gateway Termina o Download do Arquivo de Mídia Welcome-1.wav

Ele o armazena em cache e toca o prompt para o chamador.

*Jan 18 03:35:04.335:
   //127//HTTPC:/httpc_is_cached:
   HTTPC_FILE_IS_CACHED

*Jan 18 03:35:04.335: //-1//HTTPC:
   /httpc_set_cache_revoke_cb:
   Registering revoke_callback(0x61CDD948)
   +pcontext(0x63A7AAA8) for cach

ep(0x68734930)

*Jan 18 03:35:04.335: //127//AFW_:/vapp_driver:
   evtID: 146 vapp record state: 0



*Jan 18 03:35:04.335: //127//AFW_:/vapp_play_done:
   evID=146 reason=17,
   protocol=5, status_code=0, dur=3291, rate=0

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

O Gateway Envia a Solicitação MRCP "SPEAK" ao Servidor TTS para Tocar o Prompt Thank-You

MRCP/2.0 376      SPEAK  1

Channel-Identifier:
   000023EC46361276@speechsynth

:

Kill-On-Barge-In: true

Speech-Language: en-us

Logging-Tag: 127:127

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

:

Content-Type: application/ssml+xml

Content-Length: 123



:

<?xml version="1.0" encoding="UTF-8"?>
   <speak version="1.0" xml:lang="en-us">
   Thank you for calling Audium pharmacy.</speak>

O Servidor TTS Envia a Resposta "IN-PROGRESS" para a Solicitação SPEAK

MRCP/2.0 83 1 200 IN-PROGRESS

Channel-Identifier:
   000023EC46361276@speechsynth

O Servidor TTS Envia uma Mensagem "SPEAK-COMPLETE" Após Falar o Prompt Thank-You

MRCP/2.0 141 SPEAK-COMPLETE 1 COMPLETE

Channel-Identifier:
   000023EC46361276@speechsynth

Completion-Cause: 000 normal

Speech-Marker: ""

O Chamador da PSTN Insere "1" para Escolher Refill

O Gateway envia esse dígito como um evento RTP-NTE ao servidor ASR.

*Jan 18 03:35:12.583:
   s=DSP d=VoIP payload 0x65 ssrc
   0x15 sequence 0x1E9B timestamp 0x2FADCC60

*Jan 18 03:35:12.583:          Pt:101    Evt:1
   Pkt:03 00 00  <Snd>>>

*Jan 18 03:35:12.587:
   s=DSP d=VoIP payload 0x65 ssrc
   0x15 sequence 0x1E9C timestamp 0x2FADCC60

*Jan 18 03:35:12.587:          Pt:101    Evt:1
   Pkt:03 00 00  <Snd>>>

*Jan 18 03:35:12.631:
   s=DSP d=VoIP payload 0x65 ssrc
   0x15 sequence 0x1E9E timestamp 0x2FADCC60

*Jan 18 03:35:12.631:          Pt:101    Evt:1
    Pkt:03 01 90  <Snd>>>

*Jan 18 03:35:12.683:
   s=DSP d=VoIP payload 0x65 ssrc
   0x15 sequence 0x1E9F timestamp 0x2FADCC60

*Jan 18 03:35:12.683:          Pt:101    Evt:1
   Pkt:03 03 20  <Snd>>>

*Jan 18 03:35:12.703:
   s=DSP d=VoIP payload 0x65 ssrc
   0x15 sequence 0x1EA0 timestamp 0x2FADCC60

*Jan 18 03:35:12.703:          Pt:101    Evt:1
   Pkt:83 03 38  <Snd>>>

*Jan 18 03:35:12.707:          s=DSP d=VoIP payload
   0x65 ssrc 0x15 sequence 0x1EA1 timestamp 0x2FADCC60

*Jan 18 03:35:12.707:          Pt:101    Evt:1
   Pkt:83 03 38  <Snd>>>

*Jan 18 03:35:12.711:          s=DSP d=VoIP payload
   0x65 ssrc 0x15 sequence
   0x1EA2 timestamp 0x2FADCC60

*Jan 18 03:35:12.711:          Pt:101    Evt:1
   Pkt:83 03 38  <Snd>>>

O Servidor ASR Envia uma Mensagem "RECOGNITION-COMPLETE" ao Gateway

Isso notifica o gateway que ele reconheceu um dos eventos solicitados (neste caso o dígito 1).

MRCP/2.0 513
   RECOGNITION-COMPLETE 15 COMPLETE

Channel-Identifier:
   000023B846361276@speechrecog

Proxy-Sync-Id: 0B82553000000027

Completion-Cause: 000 success

Content-Type: application/nlsml+xml

Content-Length: 292



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

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

        <interpretation grammar=
   "session:option486@field.grammar"
   confidence="0.000000">

                <instance>

                        1

                </instance>

                <input mode="dtmf"
   confidence="1.000000">

                        1

                </input>

        </interpretation>

</result>

O Gateway VXML Recebe uma Notificação de Êxito no Reconhecimento do Servidor ASR

Após o recebimento desta notificação, o Gateway VXML envia uma solicitação HTTP POST como especificada na marca SUBMIT de VXML document (3). Essa solicitação POST informa ao servidor VXML que o dígito 1 foi inserido pelo chamador da PSTN.

*Jan 18 03:35:12.863:
   //127/2AEE8C2A801C/VXML:/vxml_vapp_bgpost:

   url http://172.18.110.75:7000/CVP/Server
   cachable 1 timeout
   0 body audium_vxmlLog=%7C%7C%7Caudio
   _group$$$initial_audio_group%5E%

5E%5E4%7C%7C%7Cutterance$$$1%5E%5E%5E153
   40%7C%7C%7Cinputmode
   $$$dtmf%5E%5E%5E15344%7C%7C%7C
   interpretation$$$refills%5E%5E%5E15344%7C

%7C%7Cconfidence$$$0%5E%5E%5E15344&confidence=
   0&choice_fld=refills
   len 258maxage -1 maxstale -1

*Jan 18 03:35:12.863: //127//AFW_:/vapp_bgpost:
   url=http://172.18.110.75:7000/CVP/Server;
   mime_type=application/x-www-form-urlencod

ed; len=258; iov_base=audium_vxmlLog=%7C%7C%7Caudio_
   group$$$initial_audio_group
   %5E%5E%5E4%7C%7C%7Cutterance
   $$$1%5E%5E%5E15340%7C%7C

%7Cinputmode$$$dtmf%5E%5E%5E15344%
   7C%7C%7Cinterpretation$$$refills
   %5E%5E%5E15344%7C%7C%7Cconfidence$$$0
   %5E%5E%5E15344&confidence=0&

choice_fld=refills



*Jan 18 03:35:12.931:
   about to send data to the socket 3
   : first 400 bytes of data:

POST /CVP/Server HTTP/1.1

Host: 172.18.110.75:7000

Content-Length: 258

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

Cookie: $Version=0; JSESSIONID=
   BBCE0F948ADFDB720497F587A7997538;
   $Path=/CVP

Connection: close

Accept: text/vxml, text/x-vxml, application/vxml,
   application/x-vxml,
   application/voicexml, application/x-voicexml,
   text/plain, tex

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

O ASR Reconhece o Número da Prescrição de 4 Dígitos

O ASR envia uma mensagem MRCP RECOGNITION-COMPLETE para o IOS VXML Gateway.

MRCP/2.0 533
   RECOGNITION-COMPLETE 21 COMPLETE

Channel-Identifier:
   000023B846361276@speechrecog

Proxy-Sync-Id: 0B82553000000028

Completion-Cause: 000 success

Content-Type: application/nlsml+xml

Content-Length: 312



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

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

        <interpretation grammar=
   "session:field498@field.grammar"
   confidence="0.738968">

                <instance>

                        1234

                </instance>

                <input mode="speech"
   confidence="0.752155">

                        one two three four

                </input>

        </interpretation>

</result>



    The final VXML document sent by the
   VXML server contains just the
   <exit\> tag in the <form>

    This tells the Gateway to
   terminate the VXML session

O Último Documento VXML Enviado pelo Servidor VXML Contém Somente a Marca Exit em Form

Isso informa ao Gateway que a sessão VXML deve ser encerrada.

*Jan 18 03:36:07.159:
   processing server rsp msg:
   msg(67CA85F8)URL:
   http://172.18.110.75:7000/CVP/Server, fd(3):

*Jan 18 03:36:07.159: Request msg:
   POST /CVP/Server HTTP/1.1

*Jan 18 03:36:07.159:
   Message Response Code: 200

*Jan 18 03:36:07.159:
   Message Rsp Decoded Headers:

*Jan 18 03:36:07.159: D
   ate:Mon, 30 Apr 2007 16:59:53 GMT

*Jan 18 03:36:07.159:
   Content-Type:text/xml;charset=ISO-8859-1

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

*Jan 18 03:36:07.159: Set-Cookie:
   JSESSIONID=NULL;
   Expires=Thu, 01-Jan-1970
   00:00:10 GMT; Path=/CVP

*Jan 18 03:36:07.159: headers:

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

Server: Apache-Coyote/1.1

Set-Cookie: JSESSIONID=NULL; Expires=Thu,
   01-Jan-1970 00:00:10 GMT; Path=/CVP

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

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

Connection: close





*Jan 18 03:36:07.159: body:

*Jan 18 03:36:07.159: <?xml version="1.0"
   encoding="UTF-8"?>

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

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

    <exit />

  </catch>

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

    <exit />

  </catch>

  <catch event="telephone.disconnect">

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

  <catch event="error.unsupported">

    <exit />

  </catch>

  <catch event="error.semantic">

    <exit />

  </catch>

  <catch event="error.noresource">

    <exit />

  </catch>

  <catch event="error.noauthorization">

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

  <catch event="error.com.cisco.
   media.resource.unavailable">

    <exit />

  </catch>

  <catch event=
   "error.com.cisco.handoff.failure">

    <exit />

  </catch>

  <catch event=
   "error.com.cisco.callhandoff.failure">

    <exit />

  </catch>

  <catch event=
   "error.com.cisco.aaa.authorize.failure">

    <exit />

  </catch>

  <catch event=
   "error.com.cisco.aaa.authenticate.failure">

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

  <catch event="error.badfetch">

    <exit />

  </catch>

  <catch event="error">

    <exit />

  </catch>

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

    <exit />

  </catch>

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

    <exit />

  </catch>

  <catch event="connection.disconnect">

    <exit />

  </catch>

  <form>

    <block>

      <exit />

    </block>

  </form>

</vxml>

O Gateway Encerra o Aplicativo VXML

*Jan 18 03:36:14.155:
   //127/2AEE8C2A801C/VXML:/vxml_vapp_terminate:

   vapp_status=0 ref_count 0

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

*Jan 18 03:36:14.155: //127//AFW_
   :/vapp_session_exit_event_name:
   Exit Event vxml.session.complete

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

*Jan 18 03:36:14.155:
    //131/2AEE8C2A801C/CCAPI/ccCallDisconnect:

   Cause Value=16, Tag=0x0, Call Entry
   (Previous Disconnect Cause=0,
   Disconnect Cause=0)

*Jan 18 03:36:14.155:
    //131/2AEE8C2A801C/CCAPI/ccCallDisconnect:

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

O Gateway Desconecta a Sessão SIP Estabelecida com o Servidor ASR

*Jan 18 03:36:14.159:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

BYE sip:172.18.110.76:5060 SIP/2.0

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

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

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

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

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

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

Max-Forwards: 70

Timestamp: 1011324974

CSeq: 102 BYE

Reason: Q.850;cause=16

Content-Length: 0



*Jan 18 03:36:14.607:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

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

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

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

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

CSeq: 102 BYE

Contact: <sip:172.18.110.76:5060>

Content-Length: 0

O Gateway Desconecta a Sessão SIP Estabelecida com o Servidor TTS

*Jan 18 03:36:14.159:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Sent:

BYE sip:172.18.110.76:5060 SIP/2.0

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

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

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

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

Call-ID: 2DCA5BEF-AFB11D6-
   80D3DC30-3585E95A@14.1.16.25

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

Max-Forwards: 70

Timestamp: 1011324974

CSeq: 102 BYE

Reason: Q.850;cause=16

Content-Length: 0



*Jan 18 03:36:14.215:
   //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:

Received:

SIP/2.0 200 OK

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

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

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

Call-ID:
   2DCA5BEF-AFB11D6-80D3DC30-3585E95A@14.1.16.25

CSeq: 102 BYE

Contact: <sip:172.18.110.76:5060>

Content-Length: 0

O Gateway Desconecta a Chamada na ISDN

*Jan 18 03:36:14.611: ISDN Se3/0:23 Q931: TX ->
   DISCONNECT pd = 8  callref = 0x805A

        Cause i = 0x8090 - Normal call clearing

*Jan 18 03:36:14.623: ISDN Se3/0:23 Q931:
   RX <- RELEASE pd = 8  callref = 0x005A

*Jan 18 03:36:14.623: ISDN Se3/0:23 Q931:
   TX -> RELEASE_COMP pd = 8  callref = 0x805A

Discussões relacionadas da comunidade de suporte da Cisco

A Comunidade de Suporte da Cisco é um fórum onde você pode perguntar e responder, oferecer sugestões e colaborar com colegas.


Document ID: 98582