| Руслан Валиев ( @ 2007-05-14 20:21:00 |
| Entry tags: | voip |
DID+SIP+Asterisk
Есть такая ситуация: человек живет в Европе, а в России у него много друзей или родственники, которым звонки в, например, Францию обходятся недешево. Что с этим можно поделать? Можно звонить через интернет посредством Skype, MSN (тогда это требует подключения к нему в обоих концах), либо не жалеть денег и не читать дальше :-)
Есть еще один вариант. А именно — обзавестись российским номером, чтоб человек в России платил локальную таксу. Кстати, то, о чем речь пойдет ниже, не требует наличия интернета со стороны России.
Концепт довольно стар, но мало кому известен. Называют такие номера просто — Direct Inward Dialing.
Есть еще Direct Outward Dialing, но о них я не буду рассказывать в этот раз. DID-номера, как правило, продаются телком-компаниями более мелким операторам или же таким geek'ам, у кого дома стоит свой Asterisk-сервер :-)
Что можно сделать с таким номером? Можно просто иметь второй домашний номер, можно переадресовывать звонки на мобильный или другой домашний телефон, ну и так далее.
Я купил один такой номер и решил перенаправлять звонки на один из моих SIP-телефонов (Siemens C450 IP).
Сам номер стоит 3 доллара + по 3 доллара надо платить ежемесячно.
У меня свой Asterisk-сервер, конфигами которого я буду с вами делиться.
Открываем sip.conf и добавляем туда новым аккаунт:register => 00849095:passw0rd@callwithus.com
[00849095]
type=friend
context=default
host=callwithus.com
username=00849095
secret=passw0rd
qualify=no
insecure=invite
00849095 — мой логин с сайта, passw0rd — пароль.
Ниже еще один аккаунт для телефона:[siemens]
type=friend
callerid=("Ruslan Valiyev" <4000>)
username=siemens
secret=try2hack
qualify=yes
nat=yes
host=dynamic
canreinvite=no
context=internal
mailbox=4000@default
dtmfmode=info
Закрываем sip.conf и открываем extensions.conf
Добавляем:[internal]
exten => i,1,Goto(internal,4000,2) ; При нажатии любой другой клавишы, кроме 1 и 2, вернуть в начало сообщения.
exten => 1,1,Dial(SIP/41128324@trunk-out) ; При нажатии на 1, перенаправить звонок на сотовый.
exten => 1,2,Hangup()
exten => 2,1,VoiceMail(4000@default) ; При нажатии на 2, направить в голосовую почту.
exten => 2,2,Hangup()
exten => t,1,Hangup()
exten => 4000,1,Dial(SIP/siemens,15) ; Звонить пятнадцать секунд, что примерно равно трем гудкам.
exten => 4000,2,Background(me-ivr/away) ; Если нет ответа, проиграть сообщение о недоступности.
[default]
exten => siemens,1,Dial(SIP/siemens,,) ; Звонки на +33170613367 падают на Siemens (номер 4000).
exten => siemens,2,Hangup()
exten => t,1,Hangup()
Делаем reload Asterisk'а и проверяем зарегистрировались ли мы:foo.com:~# asterisk -rx reload && asterisk -rx "sip show registry"
Host Username Refresh State
callwithus.com:5060 00849095 105 Registered
Ну, а теперь идем на сайт, заходим в контроль-панель и задаем переадресацию на наш SIP-аккаунт@foo.com: SIP/siemens@foo.com
Ставим verbose на 1000 и набираем номер (+33170613367):foo.com:~# asterisk -r
foo.com*CLI> set verbose 1000
Verbosity is at least 1000
-- Executing Dial("SIP/00849095-082481e8", "SIP/siemens||") in new stack
-- Called siemens
-- SIP/siemens-08254740 is ringing
Телефон зазвенел, ура! Теперь все думают, что я в Париже :-) Я в детали не вдавался, так что буду рад помочь с настройкой, если что.