Asterisk: sig_pri.c Received DISCONNECT cause code 1 (Unallocated number)
- В журнале Asterisk регистрируется
WARNING: sig_pri.c: Received DISCONNECT with cause code 1 (Unallocated number). - Вызов в ТфОП немедленно прерывается после набора номера с автоинформатором «Номер не существует».
- SIP абоненты получают ответ
SIP/2.0 404 Not Found. - В PRI дампе возвращается статус Q.850
Cause: [1] Unallocated (unassigned) number.
1. Проверка формата отправляемого номера
Включите отладку PRI и проверьте информационный элемент Called Party Number в пакете SETUP:
asterisk -rx "pri set debug on span 1"
asterisk -rx "core set verbose 4"В логе найдите блок SETUP:
-- PRI Span: 1 > [05 01 01] SETUP (len 32)
-- PRI Span: 1 > Called Party Number (len 13) [ 81 37 39 39 39 31 32 33 34 35 36 37 ]
-- PRI Span: 1 < DISCONNECT with cause code 1 (Unallocated number)2. Нормализация формата номера и Dialplan Type (TON/NPI)
Отредактируйте параметры плана нумерации в /etc/asterisk/chan_dahdi.conf:
[channels]
pridialplan=unknown
prilocaldialplan=unknown
internationalprefix=00
nationalprefix=0
localprefix=3. Корректировка префиксов в extensions.conf
Убедитесь, что номер отправляется провайдеру в требуемом формате (например, E.164, 10 цифр или 11 цифр):
[outbound-pstn]
; Обрезка 8 и отправка 10 цифр
exten => _89XXXXXXXXX,1,Verbose(2, Normalizing dialed number to 10 digits)
same => n,Dial(DAHDI/g1/${EXTEN:1},45)
same => n,Goto(s-${DIALSTATUS},1)
exten => s-CONGESTION,1,Playback(ss-noservice)
same => n,Hangup(1)
exten => s-CHANUNAVAIL,1,Playback(ss-noservice)
same => n,Hangup(1)4. Проверка валидности CallerID (А-номера)
Многие операторы возвращают Cause 1, если исходящий CallerID не принадлежит выделенному пулу номеров клиента:
same => n,Set(CALLERID(num)=74951234567)
same => n,Set(CALLERID(all)="Office" <74951234567>) Частые вопросы (FAQ)
Что означает Q.931 Cause 1?
Этот код указывает, что запрошенный номер назначения (B-номер) не существует в коммутационной таблице оператора или не выделен ни одному абоненту.
Почему оператор отбивает вызов с Cause 1 при правильном номере?
Причиной может быть неверный параметр Type of Number (TON) в pridialplan (например, national вместо unknown) или блокировка оператором из-за неподтвержденного CallerID (А-номера).
В какой SIP код Asterisk переводит Cause 1?
По умолчанию транслируется в SIP 404 (Not Found).
Как передать национальный номер без префикса страны через DAHDI?
Используйте срез строки ${EXTEN:1} в диалплане для отсечения префикса выхода на межгород или установите pridialplan=national.