И так, Asterisk у нас работает на входящие звонки, но не работает на исходящие. Надо решать.
Для того чтобы совершать и принимать звонки (да, то что мы описывали в предыдущей статье в разделе [default] тоже работает, но после внесения изменений описанных здесь, потребность и возможность в использовании этого раздела для приема звонков отпадет) добавим конфигурацию для нашего оператора.
Т.к. у нас оператор связи работает по SIP протоколу, обратимся для редактирования к файлу sip.conf
И внесем данные об операторе
type=peer ;указываем что при получении INVITE(вызов) будем сравнивать не имя поставщика сервисов а его IP адрес
host=sipprovaider.ru ;указываем от кого мы должны получать/отправлять INVITE
fromuser=8800000 ;имя пользователя для аутентификации
defaultuser= 8800000
secret=p@ssword$
context=incoming_calls ;задаем контекст, на него же будем принимать звонки
dtmfmode=rfc2833 ;метод генерации тонального DTFM-кода
disallow=all ;запрещаем все кодеки
allow=gsm ;разрешаем кодек GSM
allow=ulaw ;разрешаем кодек
insecure=invite ;
Далее нам требуется отредактировать диалплан.
Отредактируем его до такого вида
[globals]
[default]
[incoming_calls]
exten => _X.,1,Verbose(Получен вызов с внешней линии)
exten => _X.,n,Dial(SIP/100)
Как видно в контекст
который мы описали в sip.conf поступает звонок и мы его сразу переводим на номер 100.
Перезапустим в Asterisk конфигурационные файлы.
AsteriskGARS*CLI> dialplan reload
AsteriskGARS*CLI> sip reload
И попробуем совершить звонок с городского номера на телефонный аппарат.
Теперь требуется совершить звонок с внутреннего номера на городской. Для этого снова отредактируем файл диалплана
Следующим образом. Создадим раздел [outgoing_calls].
exten => _X.,1,Verbose(Совершается исходящий вызов)
exten => _X.,n,Dial(SIP/Operator_SIP/${EXTEN})
${EXTEN} — переменная которая содержит набранный вами номер.
Еще один важный момент, т.к. у нас телефонный аппарат находится в контексте phones, а метод вызова находится в контексте outgoing_calls, то они между собой не связаны, для того чтобы связать между собой эти два контекста воспользуемся выражением include. Добавим в фаил extensions.conf вот такие строки
include => outgoing_calls
Сохраняем пере запускаем конфиги и пробуем дозвониться на городские линии.
AsteriskGARS*CLI> dialplan reload
Все должно работать.