AllInfo
Main: Info Blog Temp Mail


unix 2012-01-21 20-37-28

Asterisk добавляем SIP клиентов.


Астериск замечательно подходит на роль внутриоффисной АТС, даже если у вас нет выходя на внешнюю линию, уже сейчас можно замечательно звонить друг другу и общаться через Asterisk. Для этого нужен сервер с Asterisk, компьютеры с установленным SIP фоном и наушники(колонки) с микрофоном. Использовать можно ekiga, это софтфон под FreeBSD, Linux и т.п. И к примеру X-Lite, он меня не подводил. Теперь остается настроить Asterisk.
Начнем с настройки SIP аккаунтов. Для этого откроем для редактирования файл sip.conf. В нем находятся настройки отвечающие за SIP.

В первую очередь нужно запретить принимаить по SIP анонимные звонки. В первую очередь это касается PBXов которые имеют доступ к Интернет с маршрутизируемым IP адресом. Для этого находим строку:

;allowguest=no
и убрать точку с запятой, которая находится в начале. Вот так:

allowguest=no
Это в принципе единственный глобальный параметр, который стоит поменять. Остальные параметры будем описывать непосредственно в настройках клиента.
Клиент в настройках sip.conf выглядит так:

[hilik]
type=friend
secret=hilik
nat=yes
host=dynamic
username=hilik
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip-dialout
callerid=333
Начинается клиент c имени(loginа) клиента заключенного в квадратные скобки в нашем случае это [hilik].

Следующая опция type описывает тип клиента, в нашем случае friend. Вообще существует три типа user – это когда идентификация клиента осуществляется по полю From SIP заголовка, который исходит от клиента. peer – идентификация происходит по адресу хоста с которого осуществляется регистрация. И тот тип, что мы применили friend – это смесь peer и user, идентифкация происходит любым методом(либо адрес хоста, либо юзернейм).

secret – это пароль пользователя.

nat=yes – обозначает, что клиент может находится за натом и для открытия медиаканала при звонке этого пользователя требуется трансляция заголовков.

host=dynamic – привязка к адресу хоста клиента отсутствует.

username=hilik – имя пользователя. Этот логин потом используется в настройках сип клиента.

dtmfmode=rfc2833 – метод передачи dtmf – тонов набора номера. Существует еще метод info, должен совпадать с настройками в SIP клиенте.

disallow=all – запрещаем все кодеки
allow=ulaw – разрешаем кодек ulaw, кодек должен быть такой, который поддерживается клиентом

context=sip-dialout – контекст описывает через какую секцию диалплана будут проходить звонки клиента

callerid=333 – устанавливаем презентацию звонка. При исходящих звонках будет высвечиваться этот номер.

Настройку клиента нужно внести в конце файла. И нужно подключится к астериск:

asterisk -r
и в появившейся командной строке астериск выполнить команду:

asterisk*CLI> sip reload
asterisk*CLI>
Теперь тут же в коммандной строке проверим:

zapp*CLI> sip show users
Username Secret Accountcode Def.Context ACL NAT
hilik hilik sip-dialout No Always
zapp*CLI>
Все хорошо, появился клиент. Но теперь нужно настроить маршрутизацию звонков на него и от него. Для этого служит специальный файл extensions.conf, в нем описываются правила дозвона. В следующих статьях я подробно опишу работу с этим файлом, а теперь расскажу коротко как сделать так что бы 2 клиента SIP могли общаться между собой.

Для этого введем в sip.conf еще одного клиента:

[sergey]
type=friend
secret=sergey
nat=yes
host=dynamic
username=sergey
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip-dialout
callerid=444
И в настройках диалплана(extentions.conf), где то в конце файла:

[sip-dialout]
exten => 333,1,Dial(SIP/hilik)
exten => 444,1,Dial(SIP/sergey)
Все, теперь абонент зарегестрированный под именем hilik может звонить на номер 444, абоненту sergey и принимать звонки приходящие на номер 333 от абонента зарегистрированного под именем sergey. В вашем контексте sip-dialout всего два префикса, поэтому только между ними и есть возможность обмениваться звонками.

На сегодня на этом все. В дальнейшем продолжим разбираться с extentions.conf и научимся маршрутизировать звонки.

18.188.40.207 / 2024-04-28_07-43-40 UTC.