Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

PBX_INVALID_EXTENSION IP-Телефония и СКУД

Asterisk: Channel sent to invalid extension in context (Ошибки маршрутизации)

Обновлено: 24.08.2026 · Официальная документация ↗
  • В журнале появляется предупреждение 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-internal

2. Проверка диалплана в 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"
💡 Практика специалистов: Всегда включайте экстеншены i (invalid) и h (hangup) во все рабочие контексты extensions.conf. Это предотвращает утечку ресурсов каналов и помогает быстро локализовать опечатки в номерах пользователей.

Частые вопросы (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.

Полезные материалы
Рекомендуем