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 и научимся маршрутизировать звонки.
By Dimitricus, 25.11.2009 @ 15:02
Отличная статья. Доступно.
By Shunya, 30.12.2009 @ 13:49
Спасибо за статью.