SIP 183 Session Progress: траблшутинг Early Media и односторонней слышимости
- Абонент не слышит голосовые автоинформаторы («Неправильно набран номер», «Номер занят») перед сбросом.
- Односторонняя слышимость или полная тишина на этапе дозвона до поднятия трубки.
- Разрыв вызова через 5-10 секунд после получения ответа
183 Session Progress. - Блокировка раннего RTP-потока межсетевым экраном (NAT traversal failure).
1. Назначение SIP 183 Session Progress и Early Media (RFC 3261 §21.1.5)
Ответ 183 Session Progress используется для инициализации сеанса Early Media (раннего аудио) до окончательного установления соединения (до получения 200 OK). Это позволяет передавать вызывающему абоненту индивидуальные сигналы КПВ, национальные тоны вызова или голосовые подсказки оператора без старта биллинга.
2. Анализ прохождения RTP-пакетов раннего медиа
# Захват сигнальных и медиа-пакетов на интерфейсе
tcpdump -nnvv -i any port 5060 or portrange 10000-20000 -w /tmp/early_media.pcapВ утилите sngrep проверьте наличие тела SDP в пакете 183 и совпадение IP-адресов в строке c=IN IP4 ....
3. Решение проблем с NAT для Early Media в PJSIP
Если входящий RTP-поток раннего аудио блокируется NAT-роутером, настройте параметры асимметричного RTP в pjsip.conf:
[operator_endpoint]
type=endpoint
transport=transport-udp
context=from-trunk
disallow=all
allow=alaw,ulaw
; Включение обработки Early Media
inband_progress=yes
; Поддержка NAT и симметричного RTP
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
direct_media=no4. Принудительное открытие раннего медиаканала в Asterisk Dialplan
Если необходимо воспроизвести голосовое приветствие звонящему без снятия трубки (Early Audio):
[early-announcement]
exten => _X.,1,NoOp(Проигрывание Early Media)
same => n,Progress() ; Отправка 183 Session Progress с SDP
same => n,Playback(custom-welcome,noanswer) ; Воспроизведение без отправки 200 OK
same => n,Dial(PJSIP/200,30)
same => n,Hangup() Частые вопросы (FAQ)
Взимается ли плата за разговор при получении 183 Session Progress?
В сетях общего пользования биллинг начинается только после получения ответа 200 OK. Раннее медиа (183) тарифицироваться не должно.
Почему при 183 слышна тишина, а при 180 гудки есть?
При ответе 183 телефон отключает свой внутренний генератор КПВ и ждет RTP-пакеты от сервера. Если эти RTP-пакеты блокируются NAT или файрволом, наступает полная тишина.
Что делает команда Progress() в Asterisk?
Команда Progress() формирует и отправляет инициатору вызова пакет 183 Session Progress с текущими медиа-параметрами SDP для запуска трансляции звука.
Для чего используется заголовок P-Early-Media?
Заголовок P-Early-Media (RFC 5009) управляет авторизацией и направлением потоков раннего медиа (sendrecv, sendonly, inactive) в сетях IMS/VoLTE.