Записки Астерискера — АТС дома на базе Asterisk

в 8:04, , рубрики: asterisk, офис

Делюсь опытом:

Начну с железных характеристик, пожалуй.
• 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. Это значит, что пускать через сервер я могу только входящие звонки.
image

Теперь про дела технарьские.

Устанавливать 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

Автор:

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js