Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

DTMF_RELAY_MISMATCH IP-Телефония и СКУД

Траблшутинг передачи DTMF: RFC 2833 / 4733 против In-band и SIP INFO

Обновлено: 24.08.2026 · Официальная документация ↗
  • Голосовое меню (IVR) не реагирует на нажатия клавиш тонального набора абонентом.
  • Задвоение цифр при вводе пин-кода или добавочного номера (вместо '1' нажимается '11').
  • Домофоны и контроллеры СКУД не открывают дверь по DTMF-коду.
  • В логах АТС фиксируются ошибки несоответствия динамического Payload Type.

1. Проверка согласования DTMF в SDP (RFC 4733)

Проверьте наличие атрибута telephone-event в дампе SDP:

a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

Если оба плеча вызова не договорились о едином номере Payload Type (обычно 101), тональные сигналы не будут декодированы.

2. Выбор правильного метода передачи DTMF

  • RFC 4733 / RFC 2833 (Out-of-band RTP) — золотой стандарт для большинства операторов и IP-АТС.
  • SIP INFO — передача цифр через сигнальные SIP-сообщения (часто используется в СКУД и специфических банкоматах).
  • In-band — передача тонов непосредственно в аудиопотоке. Работает только с кодеком G.711 (alaw/ulaw) и ломается на компрессированных кодеках G.729/Opus.

3. Настройка в Asterisk PJSIP / FreeSWITCH

Для Asterisk (pjsip.conf):

[endpoint-trunk]
type=endpoint
dtmf_mode=rfc4733
;
; Если оператор требует передачу через SIP INFO:
; dtmf_mode=info

4. Устранение задвоения DTMF-сигналов (DTMF Bounce)

Задвоение происходит, когда шлюз транслирует сигнал одновременно через RFC 2833 и пропускает остаточный звук через In-band. Отключите пропуск тонального звука:

# Asterisk sip.conf / pjsip.conf
relaxdtmf=no
# Включение подавления тонов из аудиотракта
dsp_drop_silence=yes
💡 Практика специалистов: Для интеграции SIP-домофонии (True IP, BAS-IP, Akuvox, Bopcom) со СКУД всегда выставляйте RFC 4733 с фиксированным payload=101. Если замок не открывается — проверьте длительность импульса DTMF (Tone Duration).

Частые вопросы (FAQ)

Почему In-band DTMF не работает при использовании кодека G.729?

Кодек G.729 использует психоакустическую компрессию (CS-ACELP), которая вырезает неречевые частоты. Тональные частоты DTMF искажаются до неузнаваемости и не распознаются декодером IVR.

Что делать, если СКУД принимает DTMF только через SIP INFO?

Настройте транк к панели СКУД с явным указанием dtmf_mode=info (в Asterisk) или dtmf-type=sip-info (в FreeSWITCH) и проверьте наличие заголовка Content-Type: application/dtmf-relay.

Что означает параметр '0-16' в строке a=fmtp:101 0-16?

Он указывает диапазон поддерживаемых событий: цифры 0-9, символы * и #, спецсимволы A-D и событие Flash (сигнал 16).

Как исправить проблему слишком короткого нажатия клавиши абонентом?

Увеличьте длительность генерации тона в настройках шлюза/АТС (параметр minimal DTMF duration, рекомендуется не менее 100 мс).

Полезные материалы
Рекомендуем