SIP ошибка 480 Temporarily Unavailable: устранение на стороне АТС
Симптомы SIP ответа 480 Temporarily Unavailable
При совершении входящего или исходящего вызова абонент слышит сигнал «Занято» или голосовое сообщение автоответчика. В дампе сетевого трафика Wireshark / sngrep и журнале Asterisk фиксируется ответ: SIP/2.0 480 Temporarily Unavailable.
| Контекст сбоя | Журнал Asterisk | Причина |
|---|---|---|
| Внутренний вызов (абонент-абонент) | chan_pjsip: Contact is unreachable / Inactive | IP-телефон потерял регистрацию или перешел в режим «Не беспокоить» (DND) |
| Исходящий вызов через SIP-транк | Dial failed due to trunk congestion | Провайдер связи перегружен, нет свободных каналов или тайм-аут INVITE |
| Проблема NAT / Firewall | Retransmission timeout on SIP transaction | Голосовой шлюз за NAT не отвечает на периодические OPTIONS Keep-Alive |
Алгоритм устранения ошибки 480 в Asterisk / FreePBX
- Проверьте статус регистрации и статус DND на абонентском устройстве: убедитесь, что на IP-телефоне абонента случайно не нажата кнопка DND (Не беспокоить). В консоли Asterisk проверьте статус конечной точки:
asterisk -rx "pjsip show endpoint 101" asterisk -rx "pjsip show aors" - Диагностика проблем прохождения NAT (SIP Keep-Alive): если IP-телефон находится за роутером, таблица трансляций NAT может закрывать UDP-порт 5060 через 30 секунд простоя. Включите форсированную отправку пакетов Keep-Alive в настройках PJSIP (
pjsip.conf):[101] type=endpoint transport=transport-udp aors=101 rewrite_contact=yes rtpreturn=yes [101] type=aor qualify_frequency=30 max_contacts=1 - Анализ SIP-сигнализации в реальном времени: запустите встроенный сетевой сниффер sngrep на сервере АТС:
sngrep -d any sipОтследите диалог
INVITE -> 100 Trying -> 480 Temporarily Unavailable. Если ответ 480 возвращает вызываемый софтфон/телефон, причина в настройках клиентского устройства. - Увеличьте тайм-аут ожидания ответа на диалплане (extensions.conf): если 480 возвращается из-за быстрого сброса вызова при отсутствии ответа:
exten => 101,1,Dial(PJSIP/101,45,tT) ; увеличиваем ожидание вызова до 45 секунд exten => 101,n,Hangup()
Внимание: Если ошибку 480 возвращает транк вышестоящего оператора связи, проверьте согласование аудиокодеков (alaw/ulaw/g729). Если ни один кодек не совпал, некоторые провайдеры возвращают 480 вместо стандартного 488 Not Acceptable Here.
Частые вопросы (FAQ)
В чем разница между ошибками SIP 480 и SIP 486 Busy Here?
Код 486 означает, что абонент прямо сейчас разговаривает по другой линии (занят). Код 480 указывает на то, что абонент в данный момент недоступен технически (выключен аппарат, режим DND, потеря соединения с базой DECT).
Почему вызовы на софтфоны на смартфонах часто завершаются ошибкой 480?
Мобильные ОС (iOS/Android) переводят фоновые софтфоны в режим глубокого сна для экономии аккумулятора. Для корректной работы софтфонов требуется интеграция Push-уведомлений (Apple APNs / Google FCM).
Как сбросить статус DND для экстеншена во FreePBX?
Выполните в консоли: asterisk -rx "database del DND 101".
Может ли SIP ALG на роутере вызывать ответ 480?
Да, встроенный механизм SIP ALG на офисных роутерах часто повреждает заголовки Contact и Via, приводя к потере сессий и ошибке 480. Отключите SIP ALG в роутере.