Неправильное расширение Астериска


Каждый контекст в extensions.conf может иметь расширение i, которое используется для неверных расширение, т.е. для несуществующих расширений, набранных клиентами.

Не автоматическое


Вы можете думать, что асткриск будет автоматически перепрыгивать на расширение “i”, если клиент набрал номер, которому не соответствуют какие-либо расширения. Но это не так. Рассмотрим пример:


[testing]
exten => 1,1,Dial(Zap/3,20)
exten => 2,1,Dial(Zap/4,20)
exten => i,1,Answer
exten => i,2,Playback(pbx-invalid)
exten => i,3,Hangup


Если клиент набрал “1” или “2”, все хорошо; его соединят с соответствующим расширением. Но если он набрал “3”, астреиск не перепрыгнет на расширение “i” и н проиграет звуковой файл “pbx-invalid”.

Расшиерние “i” только тогда запустится, когда приглашение или ввод будут осуществлены с помощью “background”. Вы можете настроить “exten => i,1…” для подсказки неправильных нажатий клавиш – для обиды клиентов и т.д. Так этот обычай работает, если кто-нибудь наберет что-нибудь неправильное.

Где настоящий номер?

Настоящий набранный номер находится в канальной переменной ${INVALID_EXTEN}.

Альтернатива к i

Включите отдельный (!) контекст, подобный ниже, для того, чтобы поймать все другие несуществующие расщирения:


[bogons]
exten => _.,1,что_всегда_делать_жирным_пальцам_при_направильном_наборе_номера


Редактировать:
Для того, чтобы не прерывать дважды расширение, если пользователь повесил телефонную трубку (когда не определено расширение h), вы можете использовать _X. вместо _. для перехвата только цифровых вызовов (X = 0..9, а не h, i или любых других).

Альтернатива не использовать “i”

Замечательно работает!
Trapping for incorrectly dialed extentions.

Как получить “i” работающим в вашем диалплане

После многочисленных срывов я вычислил, как получить расширение “i” для регистрации в диалплане. Проблема такова, что когда канал вводит контекст, иногда не принимает на обработку “i”, но если вы используете macro и Goto/GoSub, вы будете знать, что расширение “i” работает здесь. Объяснение – от Goto/GoSub к ответвлению расширения в вашем реальном расширении.
Например, если ваши SIP пользователи оборвались в контексте “sip-users”, вы можете сконфигурировать что-то типа:


[sip-users]
exten => _.,1,Goto(local-users,BYEXTENSION,1)

[local-users]
exten => 1,1,Dial(Zap/3,20)
exten => 2,1,Dial(Zap/4,20)
exten => i,1,Answer
exten => i,2,Playback(pbx-invalid)
exten => i,3,Hangup


Запускание другими командами

Следующие команды Астериска могут автоматически запускать расширение “i”