DTMF Tone Detection and Processing within SwyxWare (kb3767)
Le informazioni contenute nel presente articolo riguardano i seguenti prodotti:
- SwyxWare 2011
- SwyxWare v7.00
- SwyxWare v6.12
- SwyxWare v6.11
- SwyxWare v6.10
This article describes how SwyxWare detects and processes DTMF. In addition, it provides technical information.
Since SwyxWare v6.10, DTMF tone detection is always activated for Trunk calls. This has become necessary because MobileExtensionManager is controlled by DTMF tones in many cases.
Outside SwyxWare, DTMF tones are usually transmitted within the audio stream. Within SwyxWare, DTMF tones are transmitted as a Callcontrol message with an additional length information in milliseconds. If DTMF information are detected within the audio stream of a Trunk call, SwyxGate or the LinkManager will send Callcontrol messages containing the DTMF tone and a length information to the SwyxServer.
On the other hand, Callcontrol messages are used within SwyxWare to generate DTMF tones, which SwyxGate und LinkManager convert into audio information when they are transferred outside SwyxWare (PSTN, SIP provider).
This can cause problems, when an external call is transferred to another external subscriber, because DTMF information may be generated twice which will impair the audio signal.
An incoming call from the ISDN arrives at SwyxGate and DTMF tones are detected, transformed into a Callcontrol message and sent to SwyxServer. This is necessary to make sure that e.g. script control of the DTMF blocks works. In addition, the DTMF tones are included in the audio data stream. If the call is then transferred to an external subscriber, the DTMF tones are included in the audio data stream on the one hand and would then be generated again based on the Callcontrol message by SwyxGate. This would lead to corrupted information at the target of the call, because the Callcontrol messages and the audio data stream with the DTMF tones would not arrive synchronously at the SwyxGate.
To avoid this, SwyxWare uses a special length information for DTMF tones within the Callcontrol messages. These are detected at the trunks during the transmission between the external (PSTN) and the internal (SwyxWare) network. Therefore, for all detected DTMF tones at SwyxGate and LinkManager Callcontrol messages with a length of 1 millisecond are transferred. The use of the length information of 1 ms allows for the use of Callcontrol messages (such as SIP INFO) for transferring these information. Since the DTMF tones are available in form of Callcontrol messages, the script control is still working, despite the length information of 1 ms. For the above mentioned example scenario, where an external call is transferred to another external subscriber, SwyxGate and the LinkManager recognize based on the length information of 1 ms that the DTMF tones are already included in the audio data stream. This means that SwyxGate and the LinkManager will not add the DTMF tones to the audio data stream again, if the DTMF tone Callcontrol message is there with a length information of 1 ms. DTMF tone information generated by a SwyxClient or by a script contain a length information of more than 1 ms and are therefore converted into audio information by SwyxGate and LinkManager.
At SwyxGate, DTMF tones are only contained within the audio data stream, SIP trunks and the LinkManager on the other hand use various procedures. In addition to the DTMF tones in the audio stream, SIP providers usually send the detected DTMF tones in the form of information elements. Some SIP providers use SIP callcontrol messages (SIP INFO), others send the DTMF tones as Control message within the RTP data stream (as information element in the RTP data stream). This is done according to RFC2833. SwyxWare (LinkManager) transforms this type of coding into DTMF tones, or call control messages to SwyxServer with the length information 1 ms, because the tones are usually contained inside the audio data stream as well.
Configuring the DTMF Tone Detection
However, since this may cause undesired effects in special cases, this behavior can be adapted by changing the Registry. The following options are available:
Switch DTMF tone detection on/off in the SwyxGate per Controller (X = ControllerNo):
(DWORD) DTMFDetectionAlwaysOn: 0 = off, 1 = on (default as of SwyxWare v6.1x)
Switch DTMF tone detection on/off in the LinkManager via the Trunk configuration (see Manual)
Transferring the DTMF CallControl messages, despite the length information of 1 ms to the SIP provider via the LinkManager. Coding is done according to the setting for the provider (RFC2833 or SIP INFO):
(DWORD) SignalDTMFWithDuration1: 0 = do not transfer (default), 1 = transfer
3rd Party Equipment
If 3rd party SIP equipment (e.g. SIP terminal adapter, SIP gateways etc.) should be used with SwyxWare you should make sure, that they are configured to use the SIP INFO method to signal DTMF tones instead of RFC2833!