Tone monitoring monitors the media stream of a call for specified tones. A tone is described by its component frequencies and cadence. An implementation of TSPI may allow several different tones to be monitored simultaneously. TSPI uses a two-level identification scheme to identify the tones monitored. There is a tone group and an application-defined tag field, identifying a specific tone within a group.
The tapi32.dll can request monitoring for multiple concurrent tone groups, which the service provider should support if it has sufficient resources. Groups are monitored or canceled as a group; there is no finer granularity. Tone monitoring is enabled/disabled on a per-call basis using TSPI_lineMonitorTones.
When tones are detected, the LINE_MONITORTONE callback message notifies The tapi32.dll. This message includes the tone-group identifier and the application-specific identifier within that tone group to identify the tone that was detected. An application can tag each tone in order to be able to differentiate tones for which it requests detection. The scope of tone monitoring is bound by the lifetime of the call. Tone monitoring on a call ends as soon the call disconnects or goes idle.
The monitoring of tones, digits, or media modes often requires resources that the service provider may have only in finite amounts. A request for monitoring may be rejected if resources are not available. For the same reason, client applications should disable any monitoring that is not needed.