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

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

Установка

Asterisk доступен в репозиториях Ubuntu, однако настоятельно рекомендуется всегда ставить самую последнюю версию с официального сайта, вручную компилируя её и все необходимые дополнительные модули.

Базовая установка Asterisk состоит из четырёх частей:

  1. Библиотека LibPRI.
  2. Модули поддержки телекоммуникационного оборудования DAHDI.
  3. Утилиты DAHDI.
  4. Собственно сам сервер Asterisk.

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

Имейте ввиду, модули и утилиты DAHDI можно загрузить по отдельности, а можно в виде одного пакета DAHDI Complete. При этом в названии пакета DAHDI Complete всегда содержаться два номера версии - первый для включённого в него пакета модулей DAHDI Linux, а второй - для DAHDI Tools. Вообще говоря эти номера могут и не совпадать.

Для сборки Asterisk вам потребуется компилятор GCC и некоторые сопутствующие библиотеки. Чтобы поставить всё необходимое достаточно просто запустить скрипт install_prereq из каталога contrib/scripts/ в исходных текстах Asterisk с параметром install. Например, вот так:

sudo ./contrib/scripts/install_prereq install

Однако этот скрипт ставит очень много по сути бесполезного мусора. Минимальный же набор необходимого можно поставить командой:

sudo apt-get install build-essential libncurses5-dev openssl libxml2-dev

Если вы собираете DAHDI кроме самого Asterisk, то так же понадобятся исходники ядра:

FIXME

Звонки с/на 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. Установим:

sudo apt-get install sun-java6-jre

Cкачаем SipToSis.

Разархивируем в /etc/siptosis и проставим chmod на исполняемый файл:

chmod +x /etc/siptosis/SipToSis_linux

FIXME 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'' добавим
<file>exten => 1001,1,Dial(SIP/Skype/echo123)

И перезагрузим asterisk.

Теперь правим конфиг 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.

Ссылки