Outbound or inbound calls

Tone detection works as follows for outbound or inbound calls:

  1. An RTP (audio) connection is established between the Nuance Speech Server and the gateway (SIP) or NMS card.
  2. Audio tones are sent through the RTP connection.
  3. Because the Speech Server has been enabled to detect tones by setting server.toneDetector.configFile, it passes the audio to the tone library.
  4. The tone library analyzes the audio stream:
    1. If it detects an answering machine, fax, SIT, or TTY tone, it notifies the Speech Server, which notifies the Voice Browser service in a SIP INFO message.
    2. If it detects a DTMF tone, it notifies the Speech Server, which then passes the tone on to the recognition service for recognition. This assumes that the active grammar covers DTMF tones.
  5. The Voice Browser service reacts by throwing a VoiceXML event for answering machine, fax, SIT, and TTY tones. Note:
    • No event is thrown for DTMF tones as these are considered part of the normal recognition process.
    • Though possible, it’s highly unlikely that an event is thrown for SIT tones. Typically, the Voice Browser service detects SIT tones before the call is connected and drops the call. SIT detection applies only to outbound calls.
  6. The application catches the event and takes appropriate action.

To catch the thrown VoiceXML event using the following syntax:

nuance.interrupt.device.tone_event.nss

Where tone_event is the tone detected, for example, answering-machine, fax, (and variants), sit (and variants), and tty. Fax variants are:

  • fax.ced (can be used to detect a fax on an outbound call)
  • fax.cng (can be used to detect a fax on an inbound call)

For example:

nuance.interrupt.device.answering-machine
nuance.interrupt.device.fax
nuance.interrupt.device.fax.cng
nuance.interrupt.device.fax.ced
nuance.interrupt.device.sit
nuance.interrupt.device.tty

Write a <catch> handler in your application to determine the course of action for the thrown event. Note that the Voice Browser service strips off the nss from the event. This example would handle all fax-related events:

<!--Catch handler that applies to when a fax is detected. -->
<catch event="nuance.interrupt.device.fax">
  <goto next="fax-detected.vxml"/>
</catch>

Note: Though possible, it’s highly unlikely the Voice Browser service throws a sit event since it drops the call as soon as it detects these tones. This detection usually happens before the call connects.

For more information see the<catch> element.