Добрый день!
Причина такой ситуации кроется в стандартной логике маршрутизации 3CX.
Когда абонент набирает несуществующий номер со своего телефона, АТС сначала ищет его в списке локальных абонентов. Не найдя совпадений, система автоматически предполагает, что это внешний номер, и передает вызов в маршрутизацию для исходящих звонков (Исходящие правила / Outbound Rules).
Далее АТС пытается отправить этот звонок провайдеру через SIP-транк. Так как номер некорректный (например, слишком короткий), провайдер отклоняет вызов, и 3CX воспроизводит стандартное системное сообщение об ошибке исходящей связи — то самое NO_OUTBOUND.
При звонке извне ситуация иная: вызов обрабатывается Голосовым меню (IVR). IVR работает в строгом локальном контексте и ожидает ввода только внутреннего номера. Если номер не существует, IVR не пытается звонить наружу, а сразу воспроизводит корректное сообщение об ошибке.
Как это проверить и исправить:
1. Проверьте Журнал событий (Activity Log): Сделайте тестовый звонок на несуществующий внутренний номер и посмотрите лог вызова. Вы увидите, что АТС применила к этому звонку одно из ваших Исходящих правил (в логе будет указано его название) и попыталась отправить его в транк.
2. Скорректируйте Исходящие правила: Это происходит из-за того, что ваши правила для исходящих звонков настроены слишком широко. Вам нужно настроить правила так, чтобы они не захватывали номера, длина которых совпадает с длиной ваших внутренних номеров.
Как вариант, установите в настройках Исходящих правил ограничение по длине номера (например, применять правило только для номеров длиной от 7 цифр) или используйте обязательный префикс для выхода в город (например, набор через 9).