Asterisk: sig_pri.c Received DISCONNECT cause code 21 (Call rejected)
- В консоли Asterisk выводится
WARNING: sig_pri.c: Received DISCONNECT with cause code 21 (Call rejected). - Исходящий вызов в город прерывается сразу после отправки SETUP.
- SIP-абоненты видят завершение вызова с ошибкой
SIP/2.0 403 ForbiddenилиSIP/2.0 603 Declined. - В дампе PRI возвращается
Cause: [21] Call rejected.
1. Анализ диагностических данных в PRI дампе
Включите расширенный трейс PRI:
asterisk -rx "pri set debug on span 1"Изучите диагностические байты в структуре Cause IE:
-- PRI Span: 1 < DISCONNECT (len 9) [ 08 02 81 95 ]
-- PRI Span: 1 < Cause: [21] Call rejected (Location: Public network serving the local user)2. Проверка соответствия исходящего CallerID (А-номера)
Операторы ISDN PRI отклоняют вызовы с кодом 21 при подмене А-номера на несогласованный:
[macro-outbound-callerid]
exten => s,1,Set(CALLERID(num)=74955550199)
same => n,Set(CALLERID(ANI-num)=74955550199)
same => n,Set(CALLERID(pres)=allowed)
same => n,Dial(DAHDI/g1/${ARG1})3. Проверка параметров канала в chan_dahdi.conf
Проверьте права на передачу CallerID и категорию номера:
[channels]
usecallingpres=yes
sendcallerid=yes
hidecallerid=no
callerid=asreceived
switchtype=euroisdn
signalling=pri_cpe
channel => 1-15,17-314. Обработка ошибки 21 в диалплане для резервного маршрута
exten => _89XXXXXXXXX,1,Dial(DAHDI/g1/${EXTEN},30)
same => n,GotoIf($["${HANGUPCAUSE}" = "21"]?failover:end)
same => n(failover),Verbose(1, [PRI-FAILOVER] Primary E1 rejected call, routing through PJSIP Trunk)
same => n,Dial(PJSIP/${EXTEN}@backup-sip-provider,30)
same => n(end),Hangup(${HANGUPCAUSE}) Частые вопросы (FAQ)
Почему оператор возвращает Q.931 Cause 21?
Основные причины: блокировка аккаунта оператором за неуплату, запрет на совершение международных/междугородних вызовов, поддельный или незарегистрированный CallerID, либо отсутствие прав на вызов по тарифному плану.
Какой SIP-статус формирует Asterisk при получении Cause 21?
Asterisk транслирует Q.931 Cause 21 в статус SIP 603 (Declined) или SIP 403 (Forbidden) в зависимости от контекста сессии.
Что означает параметр usecallingpres=yes в chan_dahdi.conf?
Параметр предписывает Asterisk передавать флаги приватности и презентации CallerID (Presentation Allowed / Restricted) в сигнальный поток ISDN PRI.
Может ли Cause 21 вызываться нехваткой каналов B-каналов?
Нет, при нехватке B-каналов оператор возвращает Cause 34 (Circuit/channel congestion) или Cause 44 (Requested channel not available).