Содержание
Asterisk - это открытый программный сервер телефонии, значительно превосходящий по функционалу все другие существующие решения для организации офисных АТС, включая самые дорогие отдельные телефонные станции Enterprise класса. В сочетании с необходимым интерфейсным оборудованием, обеспечивающим подключение к компьютера к существующим телефонным сетям, Asterisk может воистину всё, что вы только способны себе представить, и даже больше. И это при том, что сам Asterisk является полностью открытым проектом - вам необходимо всего лишь купить интерфейсные платы и подходящий по мощности компьютер, и вы сможете создать АТС любого уровня и сложности. Компьютер на базе Intel Atom с пассивным охлаждением способен обслужить до 50 внутренних и внешних линий.
Голосовое меню, автоответчики, голосовая почта с доставкой аудиофайлов на email ящики, поддержка всех существующих протоколов обмена голосом и кодеков для них, видеозвонки и передача текстовой информации, возможность коммутации различных каналов, например, SIP и обычного телефона - это далеко не полный список возможностей Asterisk.
Общие вопросы
Asterisk доступен в репозиториях Ubuntu, однако настоятельно рекомендуется всегда ставить самую последнюю версию с официального сайта, вручную компилируя её и все необходимые дополнительные модули.
Базовая установка Asterisk состоит из четырёх частей:
- Библиотека LibPRI. Эта библиотека предназначена для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface) и BRI (Basic Rate Interface).
- Модули поддержки телекоммуникационного оборудования DAHDI.
- Утилиты DAHDI.
- Собственно сам сервер Asterisk.
Ставить их необходимо именно в таком порядке. Если у вас нет никакого внешнего оборудования, то можно ограничиться установкой чистого Asterisk, однако разработчики всегда рекомендуют ставить полный пакет. Все необходимые пакеты с исходным кодом можно скачать на официальном сайте:
Имейте ввиду, модули и утилиты DAHDI можно загрузить по отдельности, а можно в виде одного пакета DAHDI Complete. При этом в названии пакета DAHDI Complete всегда содержится два номера версии - первый для включённого в него пакета модулей DAHDI Linux, а второй - для DAHDI Tools. Вообще говоря эти номера могут и не совпадать.
Для сборки Asterisk вам потребуется компилятор GCC и некоторые сопутствующие библиотеки.Минимальный же набор необходимого можно поставить командой:
sudo apt-get install build-essential libncurses5-dev openssl libxml2-dev
Если вы собираете DAHDI кроме самого Asterisk, то так же понадобятся исходники ядра.
Установка из репозитория
Чтобы поставить всё необходимое достаточно просто запустить скрипт install_prereq
из каталога contrib/scripts/
в исходных текстах Asterisk с параметром install
. Например, вот так:
sudo ./contrib/scripts/install_prereq install
Однако этот скрипт ставит очень много по сути бесполезного мусора.
Установка из исходников
В статье будет описан процесс установки для сервера 12.04. Начнем с установки необходимых библиотек и дополнительных пакетов.
sudo apt-get install libncurses5-dev openssl libssl-dev zlib1g zlib1g-dev mpg123 linux-headers-`uname -r` build-essential mysql-server libmysqlclient15-dev php5 php5-cli php5-mysql php5-gd php-pear apache2 curl sox bison flex cpp g++ gcc make libauthen-pam-perl libio-pty-perl libnet-ssleay-perl libxml2 libxml2-dev libtiff5 libtiff5-dev libaudiofile-dev subversion libsqlite3-dev libghc-uuid-dev uuid-dev libgtk2.0-dev
Качаем исходники DAHDI с утилитами. Распаковываем, и входим в каталог с исходниками.
sudo make all sudo make install sudo make config
В конце появится сообщение, что не найдены устройства DAHDI, ничего страшного. Даже если нет оборудования, драйверами эмулируется внутренний таймер, использующийся, к примеру, для корректной работы конференции.
Качаем LibPRI. Распаковываем, и входим в каталог с исходниками.
sudo make sudo make install
Качаем spandsp. Распаковываем, и входим в каталог с исходниками.
./configure sudo make sudo make install
Как было указано выше, берем последнюю LTS версию с официального сайта, а именно, со страницы загрузки всех версий, распаковываем и заходим в каталог исходников. В новых версиях Asterisk необходима установка дополнительных библиотек для работы WebRTC. Для этого выполняем скрипт, входящий в комплект исходников Asterisk.
contrib/scripts/install_prereq install
После установки библиотек необходимо установить дополнительные пакеты libsrtp и pjproject, т.к. они необходимы для работы WebRTC.
.contrib/scripts/install_prereq install-unpackaged
Если вдруг возникнут ошибки, собираем всё ручками.
sudo su cd /usr/src/ git clone https://github.com/cisco/libsrtp.git cd libsrtp ./configure CFLAGS=-fPIC make libsrtp.a make uninstall make install cd .. echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local.conf ldconfig git clone https://github.com/asterisk/pjproject.git cd pjproject ./configure --enable-shared --with-external-speex --with-external-gsm --with-external-srtp --disable-sound --disable-resample make dep make make install ldconfig
Жмем Ctrl+D для выхода из рутовой консоли.
Вот теперь можно продолжить установку Asterisk. Выполняем
./configure
Если всех библиотек хватает, вы должны увидеть сообщение об успешном выполнении и лого Asterisk.
Выполняем
sudo make menuselect
Если вы делаете установку по ssh, то предварительно должны убедиться, что размер терминала больше, чем 80×25. Здесь необходимо включить нужные модули для компиляции. К примеру, в разделе Add-ons я включил модули format_mp3, app_mysql, cdr_mysql, т.к. дальше планируется установка панели управления FreePBX. В разделе Core Sound Packages включаем CORE-SOUNDS-EN-ALAW, CORE-SOUNDS-EN-GSM, CORE-SOUNDS-EN-G729, CORE-SOUNDS-RU-ALAW, CORE-SOUNDS-RU-GSM, CORE-SOUNDS-RU-G729 (куда же без великого и могучего ).
Далее в разделе Music On Hold File Packages включаем модуль MOH-OPSOUND-WAV просто для того, чтоб он установился. После установки эти мелодии можно будет заменить на свои. Последний раздел Extras Sound Packages. Тут опять же включаем модули для выбранных кодеков ALAW, GSM и G729. Из корневого раздела нажимаем Esc и видим, что нам предложили три варианта выхода. Смело жмем S для сохранения сделанных изменений.
Поскольку мы включили поддежку mp3, то выполняем
contrib/scripts/get_mp3_source.sh
Далее делаем
sudo make install
Пьем кофе минут 10-30, в зависимости от мощности компьютера и толщины канала. Будут качаться архивы звуковых сообщений. Ну вот, все скачалось, установилось. Создаем тестовые конфиги.
sudo make samples
И мы уже можем сделать первый запуск нашей станции.
asterisk -vvvcd
Для того, чтоб не сочинять скрипт автозапуска выполняем
sudo make config
Теперь мы уже можем запустить нашу станцию как демон.
sudo /etc/init.d/asterisk start
И подключиться к его консоли.
sudo asterisk -rvvvcd
Выйти из консоли можно по Ctrl+Ctrl или набрав quit и нажав Enter. Осталось взять модуль кодека g729 с русской страницы проекта, который больше соответствует конфигурации вашего железа и положить его в /usr/lib/asterisk/modules. Затем следует перезагрузить Asterisk, или загрузить модуль из консоли управления.
Сделаем ему отдельного пользователя, предварительно остановив Asterisk, если запустили, добавим его в нужные группы.
sudo adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk sudo adduser asterisk dialout sudo adduser asterisk audio sudo adduser www-data asterisk
Создадим каталог запуска.
sudo mkdir -p /var/run/asterisk
Изменим права на нужные каталоги.
sudo chown -R asterisk:asterisk /var/lib/asterisk sudo chown -R asterisk:asterisk /var/log/asterisk sudo chown -R asterisk:asterisk /var/run/asterisk sudo chown -R asterisk:asterisk /var/spool/asterisk sudo chown -R asterisk:asterisk /usr/lib/asterisk sudo chown -R asterisk:asterisk /dev/dahdi sudo chmod -R u=rwX,g=rX,o= /var/lib/asterisk sudo chmod -R u=rwX,g=rX,o= /var/log/asterisk sudo chmod -R u=rwX,g=rX,o= /var/run/asterisk sudo chmod -R u=rwX,g=rX,o= /var/spool/asterisk sudo chmod -R u=rwX,g=rX,o= /usr/lib/asterisk sudo chmod -R u=rwX,g=rX,o= /dev/dahdi sudo chown -R root:asterisk /etc/asterisk sudo chmod -R u=rwX,g=rX,o= /etc/asterisk
В файле /etc/default/asterisk раскомментируем две строчки. AST_USER=«asterisk» AST_GROUP=«dialout»
Вот теперь можно запустить Asterisk.
sudo /etc/init.d/asterisk start
Смотрим, от какого пользователя запустился Asterisk.
ps aux|grep aster
Получаем.
asterisk 2547 0.1 1.6 40680 16532 ? Ssl 12:49 0:01 /usr/sbin/asterisk -U asterisk -G dialout
Спокойно пользуемся дальше.
Вот, собственно, и весь процесс установки этого замечательного продукта.
Постскриптум
Для ознакомления с языком программирования Asterisk, можете почитать книгу Asterisk™ - будущее телефонии. А, изучив язык программирования и структуру конфигурационных файлов Asterisk, вы будете обладать поистине безграничными возможностями «взрослой» АТС в вашем офисе. Хотя, вопреки различным оппозиционно настроенным к этому продукту людям, называть этот продукт «детской АТС» или «недостанцией», по меньшей мере, неправильно. Есть поклонники АТС Panasonis, есть Nortel. У каждой есть свои преимущества. Но нет основного, бесплатности. Тот же Panasonic берет деньги за лицензии на внешние подключения, лицензии на системный телефон, берет еще за множество вещей, которые в Asterisk уже есть. Если у вас в офисе 4-6 телефона и одна внешняя линия, тут, бесспорно, лучше взять недорогую железку, прокинуть провода и настроить АТСку как надо. При количестве телефонов больше 8, лучше уже перейти на цифру. В таких офисах уже есть, как правило, сетевая инфраструктура. Встроить в нее несколько SIP телефонов и станцию будет не сложно. О преимуществах перед аналоговой станцией говорить не приходится. Никаких подвижных контактов, коммутирующих элементов. Никаких плинтов, кроссов, если не используется аналоговая часть. Беспроблемное подключение различных VoIP и GSM шлюзов, интеграция с провайдерами IP телефонии. Объединение офисов в других городах в общее адресное пространство. Автообзвон клиентов, получение и передача данных в различные бухгалтерские и CRM системы. При всем при этом, система достаточно безопасна в пользовании при правильной настройке. Хотелось бы надеяться, что данная статья кому-то поможет установить Asterisk.
Звонки с/на Skype
Инструкция написана для Asterisk 1.8 на Ubuntu server 9.04. Задача - привязать к астериску аккаунт скайп, чтобы принимать звонки из скайпа на SIP телефон, и звонить с SIP телефона по скайпу. Для этого существует штатное расширение Asterisk производства Digium, но оно коммерческое и лицензии стоят денег. Однако, существует свободный проект - SipToSis, позволяющий сделать то же самое.
Для запуска Skype в консольном Linux используем Xvfb (X Virtual Frame Buffer) и для настройки Skype с другой машины - x11vnc:
apt-get install xvfb x11vnc
Скачаем и установим собственно Skype: Качаем последнюю версию с http://www.skype.com, устанавливаем:
dpkg -i skype.deb
Для работы SipToSis необходима Java версии не ниже 1.5.
Добавляем репозитарий webupd8team. Более подробную информацию можете прочитать на https://launchpad.net/~webupd8team/+archive/java
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update
Установим java:
sudo apt-get install oracle-java7-installer
Разархивируем в /etc/siptosis
и проставим chmod
на исполняемый файл:
chmod +x /etc/siptosis/SipToSis_linux
man hier не согласится с этим
Теперь настроим asterisk.
В users.conf
добавим:
[Skype] username=Skype type=friend context=Skype secret= host=dynamic nat=no dtmfmode=auto canreinvite=no incominglimit=1 outgoinglimit=1 call-limit=1 busylevel=1
В extensions.conf
добавим
exten => 1001,1,Dial(SIP/Skype/echo123)
И перезагрузим asterisk.
sudo /etc/init.d/asterisk restart
Теперь правим конфиг SipToSis:
sudo nano /etc/siptosis/siptosis.cfg
Закомментируем блок настроек, начинающийся с «#Sample AUTO config with NO registration» Раскомментируем блок «#Sample Asterisk registration example», поправим:
host_port=5070 contact_url=sip:Skype@127.0.0.1:5070 from_url="Skype" <sip:Skype@127.0.0.1:5060> username=Skype realm=asterisk passwd= expires=300 do_register=yes minregrenewtime=120 regfailretrytime=15
Запускаем:
sudo /usr/bin/Xvfb :101 -ac & sudo DISPLAY=:101 /usr/bin/skype & sudo x11vnc -display :101 &
Подключаемся с другой машины (в моем случае, с Windows XP через VNC Viewer), вводим в Skype логин-пароль, отключаем все лишнее.
Теперь запускаем :
DISPLAY=:101 /etc/siptosis/SipToSis_linux
Если все сделано правильно, SipToSis запустится и попытается подключиться к Skype. Skype выдаст вопрос - разрешить ли подключение. Разрешаем и ставим галку «запомнить».
Проверяем: набираем с подключенного к Asterisk клиента 1001 - мы должны услышать тестовый звонок Skype.
Чтобы принимать входящие звонки, в /etc/siptosis/SkypeToSipAuth.props
прописываем соответствующее правило. Например:
*,sip:user1@127.0.0.1:5060
-перенаправлять все входящие звонки Skype SIP-юзеру «user1».
Естественно, нужно создать в extensions.conf
контекст «Skype
», в котором разрешить звонки на этот extension.
Ссылки
- Asterisk: будущее телефонии — книга, с которой следует начинать серьёзное знакомство с Asterisk