Asterisk. Команда DISA.

DISA() - Direct Inward System Access (Прямой внутрисистемный доступ). Позволяет внешним абонентам выполнять исходящие звонки, так как если бы они находились внутри системы и являлились локальными пользователями АТС.

DISA(пароль[,контекст[,callerid[,почтовыйящик[@vmконтекст]]]])
DISA(файл-пароля[,callerid[,почтовыйящик[@vmконтекст]]])

Позволяет внешним абонентам получать «внутренний» тональный сигнал системы и совершать вызовы с АТС так, как будто они являются ее локальными пользователями. Абоненту посылается  тональный сигнал, после чего тот должен ввести свой секретный код и нажать в конце кнопку #. Если код правильный, абонент услышит тональный сигнал системы и сможет выполнять звонки.
Такой тип доступа создает серьезную угрозу безопасности!!! Его необходимо использовать чрезвычайно осторожно, чтобы не ухудшить безопасность своей системы телефонной связи.

Аргументы.
пароль – это числовой секретный код, который абонент должен ввести, для получения возможности выполнять исходящие звонки. При использовании такого синтаксиса, все абоненты набравшие этот добавочный номер, будут применять один пароль. Чтобы абоненты могли использовать DISA() без пароля, нужно вместо пароля указать строку no-password (пароль не использовать).
контекст - определяет контекст, в котором абонент будет набирать номер. Если контекст не задан, по умолчанию приложение DISA() использует контекст disa.
callerid - определяет новую строку Caller ID, которая будет использоваться для исходящего звонка.
почтовыйящик – номер почтового ящика (и необязательный контекст голосовой почты, vmконтекст) голосовой почты. При использовании этого аргумента, если в указанном ящике голосовой почты есть новые сообщения, вызывающий абонент будет слышать прерывистый тональный сигнал.

Также, можно использовать альтернативный синтаксис и передавать вместо описанных выше аргументов (пароль и контекст) имя глобального файла паролей. В каждой строке файла может содержаться пароль или пароль и контекст, разделенные символом косой черты |. Если контекст не задан, приложение по умолчанию использует контекст disa.
Если регистрация абонента прошла успешно, приложение проводит синтаксический разбор набранного номера в заданном контексте.

Пример:
Позволяем внешним абонентам звонить на номера 8-800, если они знают секретный код. Задаем им Caller ID, чтобы создать впечатление, что они звонят из компании
[office_incoming]
exten => 123,1,DISA(12345678,disa,"Company Name" <(777) 123-4567>)
[disa]
exten => _8800NXXXXXX,1,Dial(DAHDI/1/${EXTEN})

 

См. также: Authenticate(), VMAuthenticate()