Asterisk, совершаем первый вызов на городскую линию.

И так, Asterisk у нас работает на входящие звонки, но не работает на исходящие. Надо решать.
Для того чтобы совершать и принимать звонки (да, то что мы описывали в предыдущей статье в разделе [default] тоже работает, но после внесения изменений описанных здесь, потребность и возможность в использовании этого раздела для приема звонков отпадет) добавим конфигурацию для нашего оператора.
Т.к. у нас оператор связи работает по SIP протоколу, обратимся для редактирования к файлу sip.conf

 sudo nano /etc/asterisk/sip.conf

И внесем данные об операторе

[Operator_SIP]
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         ;

Далее нам требуется отредактировать диалплан.

 sudo nano /etc/asterisk/extensions.conf

Отредактируем его до такого вида

[general]

[globals]

[default]

[incoming_calls]
exten => _X.,1,Verbose(Получен вызов с внешней линии)
exten => _X.,n,Dial(SIP/100)

Как видно в контекст

[incoming_calls]

который мы описали в sip.conf поступает звонок и мы его сразу переводим на номер 100.
Перезапустим в Asterisk конфигурационные файлы.

sudo asterisk -rcvv
AsteriskGARS*CLI> dialplan reload
AsteriskGARS*CLI> sip reload

И попробуем совершить звонок с городского номера на телефонный аппарат.
Теперь требуется совершить звонок с внутреннего номера на городской. Для этого снова отредактируем файл диалплана

 sudo nano /etc/asterisk/extensions.conf

Следующим образом. Создадим раздел [outgoing_calls].

[outgoing_calls]
exten => _X.,1,Verbose(Совершается исходящий вызов)
exten => _X.,n,Dial(SIP/Operator_SIP/${EXTEN})

${EXTEN} — переменная которая содержит набранный вами номер.
Еще один важный момент, т.к. у нас телефонный аппарат находится в контексте phones, а метод вызова находится в контексте outgoing_calls, то они между собой не связаны, для того чтобы связать между собой эти два контекста воспользуемся выражением include. Добавим в фаил extensions.conf вот такие строки

[phones]
include => outgoing_calls

Сохраняем пере запускаем конфиги и пробуем дозвониться на городские линии.

sudo asterisk -rcvv
AsteriskGARS*CLI> dialplan reload

Все должно работать.

Добавить комментарий

Ваш e-mail не будет опубликован.