Делюсь опытом:
Начну с железных характеристик, пожалуй.
• Intel Celeron 350MHz;
• 256MB RAM;
• 10GB;
• 3Com FastEthernet.
Так как я, вдобавок к SIP, хотел обрабатывать входящие звонки с моей обычной телефонной линии (PSTN), появилась нужда в приобретении AIC (Analog Interface Card), которая поддерживается Asterisk'ом. Выбор пал на дешевенькую X100P. Это клон знаменитых и дорогих карт от Digium. Для изучения в самый раз.
Итак, что касается этих карт, стоит обратить внимание на два ключевых акронима: FXO (Foreign Exchange Office) и FXS (Foreign Exchange Station). По идее, моя карта имеет один FXO и один FXS, но работает только FXO. Это значит, что пускать через сервер я могу только входящие звонки.
Теперь про дела технарьские.
Устанавливать Asterisk советуют либо на RedHat/CentOS, либо на Debian. В моем случае — выбор пал на второе.
Для успешной работы придется установить три вещи. Сам Asterisk, тел. драйвера Zapata (zaptel) и PRI-библиотеки (libpri). Я был удивлен обязательности в установке libpri, т.к. у меня нет ISDN, но эти библиотеки нужны.
Представим, что вы поставили все необходимое. Осталось отконфигурировать FXO-канал, настроить SIP и создать простенький dial-plan.
Файлы, которые мы заденем:
• zaptel.conf;
• zapata.conf;
• extensions.conf;
• sip.conf;
• voicemail.conf
Foreign Exchange Office отсылает сигнал Foreign Exchange Station. Следовательно, для того, чтоб отконфигурировать FXO-канал (входящие звонки), нужно отконфигурировать FXS-канал и наоборот.
Для начала отконфигурируем FXO в zaptel.conf следующим образом:
fxsks=1
loadzone=no
defaultzone=no
Не вдаваясь сильно в подробности, прокомментирую три строки в zaptel.conf:
fxsks=1; Конфигурирую FXO на первом порте карты. «ks» расшифровывается как «kewlstart» и является сигнальным протоколом для аналоговых схем.
loadzone=no; Загружаю зону (В моем случае — Norway).
defaultzone=no; Задаю зону по умолчанию.
Время проверить проделанное:
asterisk:~# ztcfg -vv
Zaptel Configuration
======================
Channel map:
Channel 01: FXS Kewlstart (Default) (Slaves: 01)
1 channels configured.
Следующим шагом будет файл zapata.conf, в котором описываются установки и конфигурация установленной X100P.
Мой файл выглядит так:
[trunkgroups]
[channels]
language=en
context=incoming
signalling=fxs_ks
usecallerid=yes
cidsignalling=dtmf
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
echotraining=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=yes
musiconhold=default
channel => 1
Теперь создадим dial-plan, который будет обрабатывать входящие PSTN-звонки. Делается это редатированием extensions.conf
Вот моя конфигурация с комментариями:
[general]
static=yes
writeprotect=yes
[globals]
timeout_incoming=60
options_incoming=
timeout_outgoing=60
timeout_outgoing=
[incoming]
exten => s,1,Answer(); Открыть входящий звонок
exten => s,2,Background(me-ivr/away); Проигрывается сообщение «Здравствуйте. В настоящий момент меня нет на месте. Если это срочно, то нажмите «1» и ваш звонок будет перенаправлен на мой сотовый или нажмите «2», чтоб оставить сообщение».
exten => i,1,Goto(incoming,s,1); При нажатии любых других клавиш, кроме «1» и «2», проигрывать сообщение выше.
Здесь немного хитрый момент. На самом деле, при нажатии на «1», звонок не переадресовывается тут же на мой сотовый, а сначала переадресовывается на мой Soft Phone (X-LITE), установленный на ноутбуке. Если же я не отвечаю в течении пяти секунд, то тогда звонит мой сотовый.
exten => 1,1,Dial(SIP/ruslan,5)
exten => 1,2,Dial(SIP/004741128324@voipbuster); Так как я не могу управлять FXS-каналом моей карты, то наружние звонки я реализую, пользуясь услугами VoipBuster. Я могу, например, бесплатно звонить на домашние телефоны почти по всей Европе, а звонки на сотовые стоят копейки.
exten => 1,3,Hangup()
exten => 2,1,VoiceMail(4444@default); При нажатии на «2», записать голосовое сообщение для ящика «4444», который принадлежит мне.
exten => 2,2,Hangup()
exten => t,1,Hangup()
[internal]
exten => 1000,1,Dial(SIP/ruslan); Мой внутренний SIP-номер.
exten => 2000,1,Dial(SIP/olessia) ;SIP-номер жены.
[default]
Осталось два файла: sip.conf и voicemail.conf
sip.conf
[general]
context=default
bindport=5060 ;SIP-порт по умолчанию.
bindaddr=0.0.0.0; Привязать к какому адресу/сетевой карте.
srvlookup=yes; Делать DNS-запросы.
register => designerus:mypassword@sip.voipbuster.com:5060; Регистрирую моего VoIP-провайдера.
[authentication]
[voipbuster]
type=peer
host=sip.voipbuster.com
username=designerus
fromuser=designerus
secret=mypassword
canreivite=no
[ruslan] ;SIP-пользователь «ruslan».
type=friend; Может принимать и делать звонки.
callerid=(«Ruslan Valiyev» <1000>) ;Caller ID, который будет высвечиваться на телефоне.
username=ruslan
secret=mysecret
qualify=yes; Разрешить мониторинг аккаунта.
nat=no
host=dynamic
canreinvite=yes
context=internal
mailbox=4444@default; Персональный голосовой ящик «4444».
[olessia]
type=friend
callerid=(«Olessia Skuratovich» <2000>)
username=olessia
secret=mysecret
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=internal
voicemail.conf я почти не трогал, а добавил только себя в конце:
[default]
4444 => 6774,Ruslan Valiyev,welcome@myasterisk.ru ;«6774» является пин-кодом, который я ввожу, когда хочу прослушать свои сообщения
Ну вот вроде и все. Что касается голосовых меню или IVR, то в наборе идет английский пакет со звуками в /usr/share/asterisk/sounds. Если вы хотите записать свои звуки, то, например, я делаю это в Audacity, сохраняю в wav, а потом конвертирую в gsm путем:
asterisk:~# sox inputfile.wav -r 8000 -c 1 outputfile.gsm resample -ql
Начну с железных характеристик, пожалуй.
• Intel Celeron 350MHz;
• 256MB RAM;
• 10GB;
• 3Com FastEthernet.
Так как я, вдобавок к SIP, хотел обрабатывать входящие звонки с моей обычной телефонной линии (PSTN), появилась нужда в приобретении AIC (Analog Interface Card), которая поддерживается Asterisk'ом. Выбор пал на дешевенькую X100P. Это клон знаменитых и дорогих карт от Digium. Для изучения в самый раз.
Итак, что касается этих карт, стоит обратить внимание на два ключевых акронима: FXO (Foreign Exchange Office) и FXS (Foreign Exchange Station). По идее, моя карта имеет один FXO и один FXS, но работает только FXO. Это значит, что пускать через сервер я могу только входящие звонки.
Теперь про дела технарьские.
Устанавливать Asterisk советуют либо на RedHat/CentOS, либо на Debian. В моем случае — выбор пал на второе.
Для успешной работы придется установить три вещи. Сам Asterisk, тел. драйвера Zapata (zaptel) и PRI-библиотеки (libpri). Я был удивлен обязательности в установке libpri, т.к. у меня нет ISDN, но эти библиотеки нужны.
Представим, что вы поставили все необходимое. Осталось отконфигурировать FXO-канал, настроить SIP и создать простенький dial-plan.
Файлы, которые мы заденем:
• zaptel.conf;
• zapata.conf;
• extensions.conf;
• sip.conf;
• voicemail.conf
Foreign Exchange Office отсылает сигнал Foreign Exchange Station. Следовательно, для того, чтоб отконфигурировать FXO-канал (входящие звонки), нужно отконфигурировать FXS-канал и наоборот.
Для начала отконфигурируем FXO в zaptel.conf следующим образом:
fxsks=1
loadzone=no
defaultzone=no
Не вдаваясь сильно в подробности, прокомментирую три строки в zaptel.conf:
fxsks=1; Конфигурирую FXO на первом порте карты. «ks» расшифровывается как «kewlstart» и является сигнальным протоколом для аналоговых схем.
loadzone=no; Загружаю зону (В моем случае — Norway).
defaultzone=no; Задаю зону по умолчанию.
Время проверить проделанное:
asterisk:~# ztcfg -vv
Zaptel Configuration
======================
Channel map:
Channel 01: FXS Kewlstart (Default) (Slaves: 01)
1 channels configured.
Следующим шагом будет файл zapata.conf, в котором описываются установки и конфигурация установленной X100P.
Мой файл выглядит так:
[trunkgroups]
[channels]
language=en
context=incoming
signalling=fxs_ks
usecallerid=yes
cidsignalling=dtmf
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
echotraining=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=yes
musiconhold=default
channel => 1
Теперь создадим dial-plan, который будет обрабатывать входящие PSTN-звонки. Делается это редатированием extensions.conf
Вот моя конфигурация с комментариями:
[general]
static=yes
writeprotect=yes
[globals]
timeout_incoming=60
options_incoming=
timeout_outgoing=60
timeout_outgoing=
[incoming]
exten => s,1,Answer(); Открыть входящий звонок
exten => s,2,Background(me-ivr/away); Проигрывается сообщение «Здравствуйте. В настоящий момент меня нет на месте. Если это срочно, то нажмите «1» и ваш звонок будет перенаправлен на мой сотовый или нажмите «2», чтоб оставить сообщение».
exten => i,1,Goto(incoming,s,1); При нажатии любых других клавиш, кроме «1» и «2», проигрывать сообщение выше.
Здесь немного хитрый момент. На самом деле, при нажатии на «1», звонок не переадресовывается тут же на мой сотовый, а сначала переадресовывается на мой Soft Phone (X-LITE), установленный на ноутбуке. Если же я не отвечаю в течении пяти секунд, то тогда звонит мой сотовый.
exten => 1,1,Dial(SIP/ruslan,5)
exten => 1,2,Dial(SIP/004741128324@voipbuster); Так как я не могу управлять FXS-каналом моей карты, то наружние звонки я реализую, пользуясь услугами VoipBuster. Я могу, например, бесплатно звонить на домашние телефоны почти по всей Европе, а звонки на сотовые стоят копейки.
exten => 1,3,Hangup()
exten => 2,1,VoiceMail(4444@default); При нажатии на «2», записать голосовое сообщение для ящика «4444», который принадлежит мне.
exten => 2,2,Hangup()
exten => t,1,Hangup()
[internal]
exten => 1000,1,Dial(SIP/ruslan); Мой внутренний SIP-номер.
exten => 2000,1,Dial(SIP/olessia) ;SIP-номер жены.
[default]
Осталось два файла: sip.conf и voicemail.conf
sip.conf
[general]
context=default
bindport=5060 ;SIP-порт по умолчанию.
bindaddr=0.0.0.0; Привязать к какому адресу/сетевой карте.
srvlookup=yes; Делать DNS-запросы.
register => designerus:mypassword@sip.voipbuster.com:5060; Регистрирую моего VoIP-провайдера.
[authentication]
[voipbuster]
type=peer
host=sip.voipbuster.com
username=designerus
fromuser=designerus
secret=mypassword
canreivite=no
[ruslan] ;SIP-пользователь «ruslan».
type=friend; Может принимать и делать звонки.
callerid=(«Ruslan Valiyev» <1000>) ;Caller ID, который будет высвечиваться на телефоне.
username=ruslan
secret=mysecret
qualify=yes; Разрешить мониторинг аккаунта.
nat=no
host=dynamic
canreinvite=yes
context=internal
mailbox=4444@default; Персональный голосовой ящик «4444».
[olessia]
type=friend
callerid=(«Olessia Skuratovich» <2000>)
username=olessia
secret=mysecret
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=internal
voicemail.conf я почти не трогал, а добавил только себя в конце:
[default]
4444 => 6774,Ruslan Valiyev,welcome@myasterisk.ru ;«6774» является пин-кодом, который я ввожу, когда хочу прослушать свои сообщения
Ну вот вроде и все. Что касается голосовых меню или IVR, то в наборе идет английский пакет со звуками в /usr/share/asterisk/sounds. Если вы хотите записать свои звуки, то, например, я делаю это в Audacity, сохраняю в wav, а потом конвертирую в gsm путем:
asterisk:~# sox inputfile.wav -r 8000 -c 1 outputfile.gsm resample -ql