программную АТС Asterisk, естественно, хочется каким-то образом заюзать ее по прямому назначению, чем я собственно и озаботился.

Настройка как оказалось ничего заумного из себя не представляет (правда стоит сказать, что в глубокие дебри я все-таки не лазил), поэтому рассмотрим простенький пример.

Все действия производятся в каталоге /etc/asterisk (применительно к моей системе, у кого-то это будет /usr/local/etc/asterisk или еще где-нибудь). Первым делом создадим парочку аккаунтов-абонентов примерно вот так

vi users.conf
[111]
type=friend ;может звонить и принимать звонки
host=dynamic ;не имеет постоянного IP
username=111 ;логин
md5secret=641b4f168c6117a4badd3d743e21cfe6 ;пароль в md5
language=ru ;локализация
nat=no ;не за натом
canreinvite=no
context=home ;контекст в нашем плане номеров
callerid="First number" <111> ; АОН
mailbox=111@home ; голосовая почта в контексте
disallow=all ; сначала отключаем кодеки и включаем ниже
allow=ulaw
allow=alaw
allow = g729
allow = g723
allow = gsm
call-limit=2 ; 1 входящий + 1 исходящий

Теперь надо описать правила для соединения абонентов иначе даже при наличии аккаунта позвонить никуда мы не сможем. Делается это так

vi extensions.conf
[home]
exten => 111,1,Macro(stdexten,555,SIP/555) ;звоним с помощью макроса
exten => user1,1,Goto(555×1) ;делаем алиас в виде ника к номеру

Упомянутый мною макрос уже есть в конфиге, так что делать нам практически ничего не придется, нужно только чуть-чуть его подправить приведя для нашего примера вот к такому виду

[macro-stdexten]
exten => s,1,Dial(${ARG2},20)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(${ARG1}@home,u)
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(${ARG1}@home,b)
exten => s-BUSY,2,Goto(default,s,1)
exten => _s- .,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1}@home)

Данный макрос звонит абоненту, в случае если ответа нет, либо абонент занят, либо по нажатию кнопки (*) перенаправляет звонящего в ящик голосовой почты. Ящиков пока нету, надо создать примерно вот так

vi voicemail.conf
[home]
111 => 1234,Test User1,user1@mail.ru

Теперь уже можно даже позвонить друг другу, для этого нужен какой-нибудь телефон, например SJphone, а можно и MSN Messanger'ом обойтись.

Побаловавшись вдоволь звонками с ноута на домашний комп и обратно я подумал, что все-таки полезность сего мероприятия весьма сомнительна без возможности позвонить куда-нибудь за пределы собственного дома, как оказалось в этом тоже нет никаких проблем, достаточно настроить Asterisk на работу с каким-нибудь провайдером IP-телефонии, коих сейчас предлагается великое множество.

Рассмотрим вариант подобной настройки на примере Sipnet. Название почему-то на слуху, хотя надо сказать, что это не самый лучший вариант и для себя я выбрал другого провайдера, не русского, но позволяющего совершать бесплатные звонки на стационарные телефоны почти по всей России (и еще в кучу стран), за исключением, кажется, Сахалина и Алтайского края.

И так, для начала создадим пользователя в users.conf

[sipnet]
secret = Ваш_пароль_в_sipnet
username = Ваш_ID_в_sipnet
trunkname = sipnet
callerid =
hasexten = no
hassip = yes
hasiax = no
registeriax =
registersip = yes
host = sipnet.ru
context = sipnet-in
insecure = invite
fromuser = Ваш_ID_в_sipnet
fromdomain = sipnet.ru
contact = 300
disallow=all
allow = alaw
allow = ulaw
allow = g729
allow = g723
allow = gsm
nat = no
canreinvite = nonat
dtmfmode = info

Настройка для других провайдеров аналогична, на сайтах, обычно присутсвуют инструкции по настройке различных железных и софтовых АТС. Теперь нужно в нашем номерном плане сделать обработку входящих вызовов из sipnet и решить какие вызовы делать через него. Делается это так

vi extensions.conf
[sipnet-in]
exten => 300,1,Set(CALLERID(name)="Sipnet call")
exten => 300,2,Answer
exten => 300,3,Wait,3
exten => 300,4,BackGround(sipnet-welcome)
exten => 300,5,Queue(incoming)
include => home
[sipnet-out-int]
exten => _XXXXXXX,1,Set(CALLERID(all)=SipPhone <6034937>)
exten => _XXXXXXX,2,Dial(SIP/sipnet/${EXTEN},120)
exten => _XXXXXXX,3,PlayBack(noanswer)
exten => _XXXXXXX,4,HangUp
exten => _XXXXXXX,305,PlayBack(busy)
exten => _XXXXXXX,306,HangUp
; Sipnet balance check
exten => 00,1,Set(CALLERID(all)=SipPhone <6034937>)
exten => 00,2,Dial(SIP/sipnet/${EXTEN},120)
exten => 00,3,PlayBack(noanswer)
exten => 00,4,HangUp
exten => 00,305,PlayBack(busy)
exten => 00,306,HangUp
exten => _73952XXXXXX,1,Set(CALLERID(all)=SipPhone <6034937>)
exten => _73952XXXXXX,2,Dial(SIP/sipnet/${EXTEN},120)
exten => _73952XXXXXX,3,PlayBack(noanswer)
exten => _73952XXXXXX,4,HangUp
exten => _73952XXXXXX,305,PlayBack(busy)
exten => _73952XXXXXX,306,HangUp

В указанном примере я сделал возможность звонить внутри sipnet набирая ID пользователя и проверять баланс по номеру 00 и набирать стационарные Иркутские телефоны с использованием полного номера в международном формате. Входящие звонки будут слышать приветсвие, которое можно записать, и переводиться в очередь вот такую

vi queues.conf
[incoming]
musicclass = default
strategy = ringall
member => SIP/111
member => SIP/112

Т.е. звонок будет приходить на все телефоны, а уж кто-нибудь трубку да возьмет.

Кстати если не хочется сидеть за компьютером с наушниками и микрофоном, можно подключить в локальную сеть железку, например вот такую

ata_151_1

а в нее подключить обычный телефон и звонить как все нормальные люди.

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

З.Ы. Для звонков наружу я использовал Voipcheap. Звонится нормально, качество голоса вполне устроило, задержка небольшая, эха нету, цены приемлемые. Стационарные телефоны бесплатно после пополнения баланса (при чем не только Россия), мобильник по рублю.

З.З.Ы. Если хочется чтобы люди могли не парясь дозвониться до Вашего IP-телефона с обычного можно сходить на ipkall.com и получить нахаляву американский телефонный номер.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Связанные записи