SIP Error 415 Unsupported Media Type: причины и решение проблем с кодеками SDP
- Абонент слышит короткие гудки или автоответчик с сообщением о сбое связи при попытке исходящего вызова.
- В дампе SIP-трафика (sngrep, Wireshark) на исходящий
INVITEвозвращается ответSIP/2.0 415 Unsupported Media Type. - В логах IP-АТС (Asterisk, FreeSWITCH, Kamailio) фиксируются ошибки вида
No compatible codecs foundилиUnsupported Content-Type in message body. - Вызовы успешно инициируются, но сбрасываются на этапе согласования сессии (Session Description Protocol).
1. Анализ тела запроса SDP в сетевом дампе
Запустите захват сигнального трафика с помощью sngrep или tcpdump на сервере IP-АТС:
sngrep -O /tmp/sip_415_debug.pcap port 5060
tcpdump -nnvv -i any port 5060 -s 0 -w /tmp/sip_capture.pcapОткройте транзакцию INVITE и изучите заголовок Content-Type (должен быть application/sdp) и секции m=audio / a=rtpmap. Ошибка 415 возникает, когда принимающая сторона не поддерживает ни один из предложенных аудиокодеков (например, шлюз отправляет только G729, а АТС ожидает PCMA/alaw или Opus).
2. Настройка списка разрешенных кодеков в Asterisk (chan_pjsip)
Отредактируйте конфигурационный файл /etc/asterisk/pjsip.conf для соответствующего endpoint/trunk:
[my-trunk-endpoint]
type=endpoint
context=from-trunk
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=opus
allow=telephone-event ; Поддержка RFC 2833 / DTMF payload
dtmf_mode=rfc4733
direct_media=noПримените настройки в консоли Asterisk:
asterisk -rx "pjsip reload"3. Конфигурация FreeSWITCH (sip_profiles)
В файле профиля SIP /etc/freeswitch/sip_profiles/external.xml или internal.xml задайте глобальную строку кодеков:
<param name="inbound-codec-prefs" value="PCMA,PCMU,G729,OPUS"/>
<param name="outbound-codec-prefs" value="PCMA,PCMU,G729,OPUS"/>
<param name="inbound-late-negotiation" value="true"/>Перезагрузите профиль в консоли fs_cli:
sofia profile external rescan
sofia profile external reload4. Проверка нестандартного Content-Type и транзита SIP INFO / SMS
Если в INVITE передается многокомпонентное тело (multipart/mixed) со специфическими XML/Q.931 данными, отключите отправку неподдерживаемых MIME-типов на пограничном контроллере сессий (SBC) или включите поддержку multipart в ядре АТС.
Частые вопросы (FAQ)
В чем ключевое отличие ошибки 415 от SIP 488 Not Acceptable Here?
Ошибка 415 указывает, что формат тела запроса или MIME-тип (например, неподдерживаемый Content-Type или кодировка) не распознан сервером вообще, в то время как 488 означает, что SDP понятен, но конкретные параметры медиа-потока (кодеки, полоса пропускания) неприемлемы для конечной точки.
Может ли несовпадение номеров динамических Payload Type для DTMF (telephone-event) вызвать 415 ошибку?
Да, если принимающая сторона жестко привязана к определенному номеру dynamic payload type (например, 101) и отказывается парсить offer с альтернативным номером (например, 96 или 102) без включенного автосогласования.
Как включить автоматический транскодинг в Asterisk для предотвращения 415 ошибки?
Убедитесь, что в системе загружены модули трансляции (например, codec_alaw.so, codec_g729.so, codec_resample.so). Проверить матрицу транскодинга можно командой 'core show translation'.
Почему ошибка 415 возникает при передаче факсов по T.38?
Это происходит при отправке re-INVITE с SDP-атрибутом 'm=image udptl t38', если оператор связи или оконечный шлюз не имеет лицензии или отключил поддержку протокола T.38 в настройках транка.