Установка Asterisk на Ubuntu 12.04

Как известно, Asterisk набирает всё большую популярность в мире. По официальным данным количество инсталляций данной IP-АТС превышает 1.000.000. Что неудивительно ввиду того, что современный IT-мир уже давно смотрит в сторону opensource-решений, которые разрабатываются и поддерживаются непосредственно сообществом девелоперов.


asterisk

На наш взгляд такая ситуация обусловлена ростом популярности и стандартизацией протокола SIP, который год от года привлекает новых пользователей и развитием интернета в целом. SIP-протокол дает очень важное преимущество: ваш номер больше не привязан географически к местности, в которой вы находитесь, то есть ничто не мешает вам физически находясь, скажем, в Новосибирске и звоня по работе в основном по Москве и области, иметь московский номер, что приведет к огромной экономии бюджета на телефонию.


Ключевые преимущества Asterisk уже заложены в его философии или, если хотите, в его ДНК: т.к. это IP-АТС (для простоты можно сказать, что это - просто софт, несколько тысяч строк кода), то Asterisk можно поставить на любую linux-машину, что делает нас независимыми от вендоров и дает грандиозные возможности масштабирования АТС, потому что это не закрытое коробочное решение. Если есть возможность масштабировать свою АТС именно под ваши нужды и в объемах, не заложенных производителем, а в таких как надо вам - то зачем искусственно ограничивать свои возможности?


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


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


В данном мануале использовался дистрибутив Ubuntu 12.04


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


sudo apt-get update && apt-get upgrade -y && reboot

После чего ставим необходимые зависимости:


aptitude install build-essential wget libssl-dev libncurses5-dev libnewt-dev  libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev

Скачиваем архивы исходников Asterisk, LIBPRI (библиотека, необходимая для работы цифровых плат) и DAHDI (необходим для работы аналоговых и цифровых плат):

cd /usr/src/

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

Извлекаем файлы из архивов:

tar zxvf dahdi-linux-complete* 

tar zxvf libpri* 

tar zxvf asterisk*

Вместо * будет ваша версия исходников

Установка DAHDI:

cd /usr/src/dahdi-linux-complete* 

make && make install && make config

Установка LIBPRI:

cd /usr/src/libpri* 

make && make install

Установка Asterisk:


cd /usr/src/asterisk* 

./configure && make menuselect && make && make install && make config && make samples

Запуск DAHDI:

/etc/init.d/dahdi start

Запускаем Asterisk и переходим в интерфейс CLI:

/etc/init.d/asterisk start 

asterisk -rvvv

Проверяем корректность установки DAHDI и LIBPRI:

*CLI> dahdi show version 

DAHDI Version: 2.7.1

 Echo Canceller: HWEC 

*CLI> pri show version 

libpri version: 1.4.14

Поздравляем! Вы успешно установили Asterisk, DAHDI, LIBPRI на Ubuntu 12.04

Теперь нужно сконфигурировать нужное количество абонентов (внутренних номеров телефонов) и правила совершения звонков между ними. За то в Asterisk отвечают два конфигурационных файла sip.conf и extensions.conf (по умолчанию находятся в директории /etc/asterisk).

Пример базовой конфигурации файла sip.conf (в котором происходит объявление пиров, то есть неких оконечных sip-точек, будь то внутренние абоненты, устройства провайдера или другие, связанные с вашей, АТС):

[general] - секция в которой определяются некие общие правила системы


bindport=5060

maxexpiry=3600

defaultexpiry=1800

srvlookup=no

qualify=yes


register => username@ip.addres:password:5060/callerid - строка регистрации, если ваш sip-провайдер требует регистрации на своем оборудовании




[sip-provider] - объявление атрибутов внешнего sip-аккаунта

type=friend

secret=password

defaultuser=user1

srvlookup=no

host=sip.provider.ru

insecure=port,invite

dtmfmode=rfc2833

disallow=all

allow=alaw,ulaw,gsm,ilbc

context=from-provider

fromdomain=sip.provider.ru

fromuser=user1

nat=force_rport,comedia




[6000] - объявление атрибутов каждого внутреннего абонента (внутренний номер)

defaultuser=6000

secret=12345678

callerid="Иван Иванов" <6000>

mailbox=6000

type=friend

context=from-users

qualify=yes

host=dynamic


[6001] - объявление атрибутов каждого внутреннего абонента (внутренний номер)

type=friend

defaultuser=6001

secret=12345678

callerid="Петр Петров." <6001>

context=from-users

mailbox=6001

qualify=yes

host=dynamic


[6002] - объявление атрибутов каждого внутреннего абонента (внутренний номер)

type=friend

defaultuser=6002

secret=12345678

callerid="Василий Васильев" <6002>

context=from-users

mailbox=6002

qualify=yes

host=dynamic


Пример базовой конфигурации файла extensions.conf (в котором происходит объявление пиров, то есть неких оконечных sip-точек, будь то внутренние абоненты, устройства провайдера или другие, связанные с вашей, АТС):

[from-provider]

exten => 74958888888,1,Dial(SIP/6001,60) - при звонке на ваш внешний номер будет звонить телефон абонента 6001

exten => 74958888888,n,Hangup()


[from-users]

exten => _XXXX,1,Dial(SIP/${EXTEN},30). - при наборе внутреннего номера телефон звонит 30 секунда

same => n,Voicemail(${EXTEN},${IF($["{DIALSTATUS}" = "BUSY"]?b:u)}).- если никто не взял турбку вызов идет в голосовую почту

same => n,Hangup() - вешается трубка


exten => _9X.,1,Dial(SIP/sip-provider/${EXTEN:1}) - через префикс “9” идет звонок на sip-провайдеру, 9 потом отрезается

same => n, Hangup()

Итак, простейший диалплан готов: мы сделали связь между внутреннними абонентами и сделали выход на SIP-провайдера.

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


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