SIP 488 Not Acceptable Here: несовпадение кодеков, SDP и RTP параметров
Сбой вызова происходит на этапе согласования медиа-параметров (SDP Offer/Answer):
- Звонящий слышит автоинформатор о невозможности установить соединение или быстрый отбой.
- В SIP-трассировке возвращается статус
SIP/2.0 488 Not Acceptable Here. - В логах сервера фиксируется сообщение:
No compatible codecs foundилиUnsupported media format. - Проблема возникает при звонках на домофоны/СКУД (несовпадение видеокодеков H.264/H.265) или при включении шифрования SRTP без поддержки на стороне пира.
1. Анализ секции SDP в пакетах INVITE и 488
Захватите сессию с помощью sngrep и проверьте блок SDP:
v=0
o=root 1234 1234 IN IP4 192.168.1.10
s=Asterisk
c=IN IP4 192.168.1.10
t=0 0
m=audio 10540 RTP/AVP 0 8 18 107
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:107 opus/48000/2Если принимающая сторона поддерживает только кодек G.722, а в списке Offer его нет, сервер отклонит вызов с кодом 488.
2. Настройка списка кодеков в pjsip.conf / chan_sip
Сконфигурируйте универсальный список поддерживаемых кодеков для транка или абонента:
[my_endpoint]
type=endpoint
context=from-internal
disallow=all
; Разрешаем базовые кодеки в порядке приоритета:
allow=alaw
allow=ulaw
allow=g729
allow=opus
; Если требуется видео (домофоны, видеотерминалы):
allow=h264
allow=vp83. Проверка параметров шифрования медиа (SRTP vs RTP)
Если на сервере включен обязательный SRTP, а клиент шлет обычный RTP/AVP, соединение будет сброшено с 488:
; Для конечных точек без шифрования:
[unencrypted_phone]
type=endpoint
media_encryption=no
; Для WebRTC / защищенных клиентов:
[webrtc_client]
type=endpoint
media_encryption=sdes ; или dtls
media_encryption_optimistic=no4. Проверка транскодинга в Asterisk
Убедитесь, что в системе установлены и загружены модули транскодирования кодеков:
asterisk -rx "core show translation"Если между форматами стоят прочерки -, транскодинг невозможен из-за отсутствия нужного модуля (например, codec_g729.so или codec_opus.so).
Частые вопросы (FAQ)
Что именно означает статус SIP 488 Not Acceptable Here?
Он указывает на то, что целевая сторона успешно нашла абонента, но не может принять вызов из-за несовместимости параметров сессии, переданных в SDP (аудио/видео кодеки, параметры DTMF, размер пакета ptime или протокол передачи медиаданных).
Как несовпадение DTMF может вызвать ошибку 488?
Если вызывающий шлюз жестко требует передачу DTMF по стандарту RFC 2833 (telephone-event), а принимающая сторона настроена исключительно на inband или info и блокирует несогласованные типы payload, сервер может вернуть 488.
Почему видеовызов на SIP-домофон отбивается с 488?
Чаще всего домофон отдает видеопоток в формате H.264 с конкретным профилем (например, Baseline Profile Level 3.1). Если софтфон или АТС не поддерживают H.264 passthrough / транскодинг, вызов будет отклонен.
В чем разница между 488 и 606 Not Acceptable?
Код 488 сообщает, что медиа-параметры неприемлемы для данной конкретной точки/транка (но могут подойти другому ресурсу). Код 606 означает глобальную несовместимость параметров сессии для всех возможных адресатов.