DTMF definition: Digital keys (0 ~ 9 * # a B C D ).
There are usually three methods for detecting DTMF in VoIP: SIP info, inband, and out band (rfc2833). In addition, the latest RFC has been adopted for the requirements of DTMF In the 3GPP IMS specification.
4733 replaces RFC 2833.
1. Sip info
For out-of-band detection, DTMF Data is transmitted through the sip signaling channel. There is no unified implementation standard, which is sent through the SIP info method. The signal field in the package recognizes the DTMF button. Note: When DTMF is "*", the corresponding signal = * or signal = 10 for different standard implementations. The advantage of SIP info is that it does not affect the transmission of RTP data packets, but may cause non-synchronization.
2. out band (rfc2833)
This is an in-band detection method. During RTP transmission, the special RTP payloadtype is called teleponeevent to mark rfc2833 data packets. The same DTMF button usually corresponds to multiple RTP packets, and the time stamps of these RTP packets are the same. This can be used as a basis for identifying the same key, the end flag of the last RTP packet is set to 1, indicating that the DTMF Data ends. In addition, many sip
UA including IAD provides teleponeevent settings such as 3cx phone, billion-IAD, ZTE-IAD and Other Default teleponeevent 101, but can be manually modified, in this case, you must obtain the teleponeevent parameter negotiated by SDP before rfc2833 DTMF detection.
3. In band
It is an in-band detection method and is transmitted together with common RTP voice packets. The only way to perform inband DTMF detection is to extract RTP data packets for spectrum analysis. After spectrum analysis, we can obtain the high and low frequency frequencies, and then obtain the corresponding buttons in the table, the algorithm used for spectrum analysis is generally Goertzel. The implementation of this algorithm is also very simple. There are many lower-end algorithms available on the Internet. However, it is recommended to use the fixed-point algorithm, which is very inefficient at floating-point algorithms.
From the usage perspective, rfc283 is generally used, that is, out band. Generally, Softswitch servers support these methods. The asterisk I know supports the SIP info, RFC 2833, and inband methods, however, rfc2833 has the best compatibility. Because IMS uses RFC 47233 to replace rfc2833 for dtfm, there may be compatibility issues when the IMS client is connected to SoftSwitch.