SIP 180 Ringing: генерация КПВ, Early Media и согласование SDP
- Вызывающий абонент слышит тишину вместо гудков вызова (КПВ), хотя телефон вызываемого звенит.
- Двойная генерация гудков (наложение локального тонального генератора телефона на медиапоток оператора).
- Раннее списание средств у оператора до момента фактического ответа абонента (поднятия трубки).
- Проблемы отображения статуса вызова на дисплеях SIP-телефонов и в WebRTC клиентах.
1. Архитектура ответа SIP 180 Ringing (RFC 3261 §21.1.2)
Ответ 180 Ringing сигнализирует вызывающей стороне, что запрос INVITE успешно доставлен на терминал получателя и устройство начало физическую процедуру оповещения (звонок, вибрация, индикация). Получив чистый ответ 180 (без тела SDP), терминал звонящего обязан самостоятельно генерировать сигнал КПВ (Ringback tone) из своего локального звукового чипа.
2. Сравнение SIP 180 Ringing и SIP 183 Session Progress
| Параметр | SIP 180 Ringing | SIP 183 Session Progress |
|---|---|---|
| Тело SDP | Обычно отсутствует (но допустимо) | Присутствует обязательно |
| Источник КПВ | Генерируется локально клиентом A | Передается в аудиопотоке RTP от узла B |
| Типичное применение | Внутрикорпоративные вызовы | Мобильные сети, автоответчики, IVR |
3. Устранение тишины при вызовах через Asterisk
Если при звонках во внешние транки в трубке звонящего возникает тишина, принудительно включите генерацию сигнала вызова в диалплане через опцию r команды Dial():
[outbound-dial]
exten => _89XXXXXXXXX,1,NoOp(Исходящий вызов с генерацией КПВ)
same => n,Dial(PJSIP/${EXTEN}@operator_trunk,60,r)
same => n,Hangup()Внимание: флаг r заставляет Asterisk слать 180 Ringing и подменять реальные голосовые сообщения оператора (например, «Абонент временно недоступен») стандартными гудками.
4. Конфигурация inband_progress в PJSIP
Для корректной трансляции раннего аудио настройте параметры эндпоинта в /etc/asterisk/pjsip.conf:
[my_endpoint]
type=endpoint
inband_progress=yes
100rel=yes Частые вопросы (FAQ)
Почему при ответе 180 Ringing в трубке слышна тишина?
Если вызывающий IP-телефон или софтфон ожидает аудиопоток RTP (Early Media), но получает чистый пакет 180 Ringing без SDP, а его локальный генератор тонов отключен или поврежден в прошивке, абонент будет слышать тишину.
Может ли SIP 180 содержать SDP?
Да, RFC 3261 разрешает передачу SDP в 180 Ringing. В этом случае клиент должен открыть RTP-порт и воспроизводить аудиопоток, приходящий из сети.
Что такое заголовок 100rel и PRACK при обработке 180 Ringing?
Механизм 100rel (RFC 3262) обеспечивает гарантированную надежную доставку предварительных ответов 18x с помощью подтверждения специальным запросом PRACK.
Как убрать эффект 'двойных гудков'?
Уберите флаг 'r' из команды Dial() в Asterisk и убедитесь, что оператор шлет либо чистый 180 (для локального тона), либо 183 с RTP-потоком, но не оба одновременно.