DTMF являются двухтональными аналоговыми сигналами, аналоговые телефоны могут легко отправлять / транспортировать / получать их, потому что сигналы находятся в частотном диапазоне, который способны обрабатывать телефонные системы.
Системы VoIP отличаются, они используют кодеки для преобразования голоса в пакеты данных.
Некоторые из кодеков не сжимают аудио, но большинство из них делают.
Когда вы берете звук (обычно человеческий голос), сжимаете его, чтобы он проходил через IP-сеть, а с другой стороны распаковываете его, результат не совсем совпадает с оригиналом.
Однако наши слуховые органы очень терпимы и способны распознавать голоса и человеческую речь, хотя она и была слегка изменена.
в случае тонов DTMF, например: ключ 2 - это сочетание частот 1336 Гц и 697 Гц. Если мы пропустим его через сжатие и распаковку, то конечный результат не будет совпадать с двумя частотами, что не позволит принимающей стороне понять, какая клавиша была нажата.
Есть 3 способа преодолеть эту проблему в системах VoIP:
- In-Band: отправить тоны как есть. Работает только с несжимающими кодеками.(G.711)
- Информация SIP: отправка тонов DTMF в виде событий в пути SIP.
- RFC2833: отправьте тональные сигналы в виде данных в голосовой тракт.
RFC2833 является рекомендуемым способом в большинстве случаев.
Чтобы это работало, ваш программный телефон, УАТС и клиент, получающий тональные сигналы, должны быть настроены на RFC2833. Микширование не работает, и большинство систем не могут автоматически определить используемый метод.