Asterisk: Channel sent to invalid extension in context (Ошибки маршрутизации)
- В журнале появляется предупреждение
WARNING[6789]: pbx.c: Channel 'PJSIP/101-00000001' sent to invalid extension '89991234567' in context 'from-internal'. - Вызывающий абонент слышит системное сообщение автоответчика 'Congestion' или мгновенный отбой
SIP 404 Not Found. - Исходящий или входящий вызов не попадает ни под один паттерн диалплана.
- Команда
dialplan show 89991234567@from-internalсообщаетThere is no existence of context/extension.
1. Проверка контекста в конфигурации PJSIP
Убедитесь, какой контекст назначен абоненту или транку в /etc/asterisk/pjsip.conf:
[101]
type = endpoint
context = from-internal2. Проверка диалплана в CLI
asterisk -rx "dialplan show from-internal"
asterisk -rx "dialplan show 89991234567@from-internal"3. Корректировка шаблонов номеров в extensions.conf
Отредактируйте /etc/asterisk/extensions.conf, добавив корректные маски регулярных выражений и экстеншен для обработки ошибок i (invalid):
[from-internal]
; Разрешить 11-значные номера с 7 или 8
exten => _[78]XXXXXXXXXX,1,NoOp(Исходящий вызов на номер ${EXTEN})
same => n,Dial(PJSIP/${EXTEN}@trunk-provider,60)
same => n,Hangup()
; Локальные 3-значные номера
exten => _XXX,1,NoOp(Внутренний вызов на ${EXTEN})
same => n,Dial(PJSIP/${EXTEN},30)
same => n,Hangup()
; Обработка неверно набранного номера (Invalid Extension)
exten => i,1,NoOp(Неверно набран номер: ${INVALID_EXTEN})
same => n,Playback(pbx-invalid)
same => n,Hangup()4. Применение диалплана без перезагрузки сервера
asterisk -rx "dialplan reload" Частые вопросы (FAQ)
Что означает символ 's' в диалплане?
Экстеншен 's' (Start) используется для входящих аналоговых вызовов (FXO/DAHDI) или контекстов, куда вызов поступает без явно указанного номера назначения в поле TO/Request-URI.
Что делает специальный экстеншен 'i'?
Экстеншен 'i' (Invalid) перехватывает управление, когда абонент набирает номер, отсутствующий в данном контексте, позволяя проиграть голосовое уведомление вместо разрыва связи.
Как работают спецсимволы шаблонов _, X, Z, N, . в Asterisk?
_ начинает шаблон; X означает цифру 0-9; Z цифру 1-9; N цифру 2-9; точка . соответствует любому количеству любых символов до конца строки.
Почему транк шлет вызов в контекст default?
Если в секции [endpoint] транка в pjsip.conf не указан параметр context = your-incoming-context, Asterisk автоматически направляет вызов в дефолтный небезопасный контекст default.