Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Q931_CAUSE_17_USER_BUSY IP-Телефония и СКУД

Asterisk: sig_pri.c Received DISCONNECT cause code 17 (User busy)

Обновлено: 24.08.2026  ·  Официальная база знаний
  • В CLI Asterisk появляется предупреждение WARNING: sig_pri.c: Received DISCONNECT with cause code 17 (User busy).
  • Вызывающий абонент слышит сигнал «занято» или короткие гудки при звонке через цифровой поток E1/T1 (ISDN PRI).
  • SIP-клиенты получают ответ SIP/2.0 486 Busy Here или SIP/2.0 600 Busy Everywhere.
  • В дампе DAHDI PRI фиксируется кадр Q.931 DISCONNECT с информационным элементом Cause: [17] User busy.

1. Анализ трассировки ISDN PRI

Включите расширенную отладку DAHDI/PRI на консоли Asterisk:

asterisk -rvvv
pri set debug on span 1

Убедитесь, что удаленная АТС или оператор действительно возвращает статус занятости терминала:

-- PRI Span: 1 < DISCONNECT (len 9) [ 08 02 81 91 ]
-- PRI Span: 1 < Cause: [17] User busy (Location: Private network serving the local user)

2. Корректная обработка статуса в extensions.conf

Перехватывайте переменную ${HANGUPCAUSE} и ${DIALSTATUS} для перенаправления вызова на голосовую почту или резервный номер:

[outgoing-e1]
exten => _XXXX,1,Dial(DAHDI/g1/${EXTEN},30)
same => n,Goto(s-${DIALSTATUS},1)

exten => s-BUSY,1,Verbose(1, [ISDN-PRI] Abonent ${EXTEN} is busy, HANGUPCAUSE is ${HANGUPCAUSE})
same => n,Playback(user-busy-short)
same => n,Voicemail(${EXTEN}@default,b)
same => n,Hangup(17)

exten => s-NOANSWER,1,Playback(no-answer)
same => n,Hangup(19)

exten => _s-.,1,Hangup(16)

3. Проверка параметров сигнализации в chan_dahdi.conf

Убедитесь, что switchtype и signalling соответствуют спецификации оператора связи:

[channels]
switchtype=euroisdn
signalling=pri_cpe
pridialplan=unknown
prilocaldialplan=unknown
resetinterval=never
overlapdial=no
group=1
channel => 1-15,17-31

4. Отключение отладки после завершения диагностики

pri set debug off span 1
Практический опыт инженера: Если Cause 17 приходит мгновенно (менее 100 мс после отправки SETUP), проверяйте включенный режим DND на терминале абонента или правила черного списка в маршрутизаторе оператора.

Частые вопросы (FAQ)

Является ли Cause 17 критической ошибкой Asterisk?

Нет, Cause 17 — это штатный код завершения вызова по спецификации ITU-T Q.850 / Q.931, сигнализирующий о том, что вызываемый абонент разговаривает по другой линии или отклонил входящий вызов.

Какой SIP-код соответствует Q.931 Cause 17?

По RFC 3398 код Q.931 Cause 17 (User busy) транслируется модулем chan_pjsip / chan_sip в статус SIP 486 (Busy Here).

Почему оператор возвращает Cause 17 при свободной трубке абонента?

Такое возможно при некорректно настроенном количестве одновременных линий (Call Waiting отключен на АТС), блокировке DND (Не беспокоить) или лимите транковых каналов на стороне вышестоящего провайдера.

Как принудительно вернуть SIP 486 вызывающему клиенту при Cause 17?

Используйте в диалплане команду Hangup(17). Asterisk автоматически преобразует этот ISDN Cause в ответ SIP 486 Busy Here.