Штука полезная и нужная. Правда не всегда очевидная. В данной заметке хотелось бы осветить основные методы передачи DTMF сигналов и их Debug (для закрепления в своей голове материала и на разбор для других).
И так. Приступим. Для начала нужно вспомнить что методы DTMF могут быть 2 видов in-band (передающиеся внутри разговорного тракта) и out-of-band(предающиеся вне разговорного тракта по средствам какого либо сигнального канала). Рассмотрим основные методы DTMF, а так же несколько и способов их трассировки.
1. h245 методы:
h245-signal:
Метод передачи DTMF по средствам канала сигнализации h.245 в протоколе h.323. Данный метод передает сообщения, которые содержат в себе не только само значение переаваемой цифры, но и его продолжительность
р245-alphanumeric:
Так же как и первый передает сообщения в канале h.245 протокола h.323, но его отличие от предыдущего в том, что число пердается в виде символа ASCII с фиксированной продолжительностью в 500ms.
Трассировку данных методов можно выполнить командой
debug h245 asn1
2. cisco-rtp:
Как видно из названия- этот метод придуман инженерами cisco, а значит и рекомендован он для передачи между оборудованием cisco. Он передает сообщения по тому же каналу что и голосовой траффик, но сами сообщения закодированы иным образом и идентифицруются различными индексами Payload Type.
3. SIP INFO:
Метод протокола SIP. пердает сообщения по сигнальному каналу протокола SIP а значит является out-of-band методом. По умолчанию включен, но не всегда используется из-за приоритета использования протоколов, поэтому чтобы его увидеть нужно включить в функйии dtmf-relay какой нибудь из h.245 методов. Трассировка производится командой
debug ccsip messages
4. rtp-nte:
Метод который можно использовать вне зависимости от протокола. Это метод описанный в стандарте RFC2833. in-band метод, который использует для пердачи DTMF специальные NTE (named telephone events), которые пердатся в одном потоке с RTP траффиком, но кодируются несколько иначе. Описания этих событий можно найти по выше указанной ссылке на стандарт RFC2833 а так же в стандарте 4733. Наше событие имеет номер 101 ( Line lockout tone ).
debug voip rtp session named-event 101
P.S.
G.723.1 и G.729 кодеки неправильно декодируют NTE, поэтому рекомендуется использовать метод SIP INFO.
Надеюсь инофрмация будет полезной читателю.
Автор: Ovoshlook