Я хочу рассказать о свободном решении для компьютерной телефонии от компании Digium™. Asterisk™ – это ATC созданная хакерами (в первоначальном смысле этого слова), а точнее, это супер конвергентная платформа компьютерной телефонии, распространяемая по лицензии GNU GPL, изначально разрабатываемая Марком Спенсером (Mark Spenser), позже ставшим президентом и техническим директором компании Digium. Благодаря коммерческой поддержке Его компании и лицензии GNU GPL Asterisk активно развивается и поддерживается тысячами людей со всей планеты.
Asterisk может работать как с аналоговыми линиями (FXO/FXS модули), так и цифровыми (ISDN BRI и PRI — потоки Т1/E1). С помощью компьютерных плат (наиболее известными производителями которых являются Digium, Sangoma, OpenVox, Rhino, AudioCodes) Asterisk можно подключить к высокопропускным линиям Т1/E1, которые позволяют работать с десятками и сотнями телефонных линий. По материалам Википедии
Asterisk работает с ОКС-7 (Общеканальная сигнализация №7, в Европе известной как SS7 – Signaling System №7) — это набор сигнальных телефонных протоколов, для организации мультисервисной (интеллектуальной) сети.
Опытные данные производительности систем представлены на форуме [ru] и оригинальный текст [en].
Основные рекомендации такие1
Назначение
Кол-во каналов
Минимальная конфигурация
Любительская система
не более 5
400 MГц, 256 МБ RAM
SOHO-система
от 5 до 10
1 ГГц, 512 МБ RAM
Малая бизнес система
до 25
3 ГГц, 1 ГБ RAM
Средняя или большая система
более 25
2 ЦП или несколько серверов в распределенной архитектуре
ОС
Asterisk – может работать практически на любой платформе Linux плюс некоторых других ОС, таких как Solaris, BSD, MacOS X и есть даже проект Asterisk for Win32. По поводу выбора ОС для Asterisk развивать холивар не хочу и предлагаю выбрать Вам самим, при этом не мешает прочитать ветку форма посвященному этому вопросу. В заключении, скажу, что сам использую CentOS – популярный дистрибутив, используемый с Asterisk (собран из сырцов RedHat) версии 5.2. Подробное руководство по установке CentOS 5.2 из блога Linuxoid.
Иксы рекомендую не ставить, так как с Asterisk они будут конкурировать за ресурсы.
Установка и настройка Asterisk
Asterisk в базовой комплектации включает три основных пакета доступных к загрузке на официальном сайте:
Modules and addons, содержит модули для работы с MySQL и проигрывания mp3 – файлов, ИМХО не вошло в официальный дистрибутив и не надо. К примеру, Asterisk установлен с поддержкой ODBC и при установке аддона для работы с MySQL система может не работать, поэтому одновременно рекомендуется использовать только один из драйверов и отключить другой. Проигрывание mp3 – файлов, в свою очередь, вызовет дополнительную нагрузку на систему т.к. проигрываемый файл необходимо будет разжать.
Необходимые пакеты Linux
GCC 3.x;
ncurses-devel;
libtermcap-devel;
Kernel Development Headers;
GCC C++ 3.x;
OpenSSL (опционально) ;
newt-devel (опционально) ;
zlib-devel (опционально) ;
unixODBC; unixODBC-devel (опционально) ;
libtool (рекомендуется) ;
GNU make (версия 3.80 и выше).
В моем случае все уже содержалось в системе, я лишь обновил ядро (пусть это никому не кажется страшным).
Небольшое отступление
Против всего выше описанного, существует также программный продукт AsteriskNOW доступна бета 1.5 – это специализированный дистрибутив Linux уже включающий Asterisk со всем необходимым ПО, плюс web–based GUI. Этот дистрибутив также распространяется по лицензии GNU GPL и свободен для скачивания 32-bit и 64-bit. Скриншоты можно посмотреть на официальном сайте.
Особой популярностью и любовью пользуется дистрибутив Trixbox — это программный комплекс, основанный на CentOS и Asterisk, основной задачей которого является создание в кротчайшие сроки сервера IP телефонии. На данный момент доступна версия 2.6.2. Этапы установки можно подсмотреть на сайте voiceip.com.ua.
Продолжим
Загружать статью общими вопросами установки и настройки Asterisk не буду, тем более, что в сети есть замечательные статьи, подробно рассказывающие о каждом из этапов. Не смотря на то, что статьи написаны 3 – 4 года назад, поверьте, они не теряют своей актуальности, не спорю, версии сменились с 1.2 аж до 1.6, сменилось даже название телефонного драйвера и функционал существенно расширился, но Вас это не должно пугать.
Asterisk и Linux: миссия IP-телефония. Действие 3 – заключительная из этого цикла статья, рассматривающая вопросы голосовой почты, конференций и web–интерфейсов, значительно облегчающих работу, как пользователей, так и администраторов Asterisk.
Примечание: в статьях используются утилиты zaptel, который сменил название на DAHDI ztcfg -> dahdi_cfg ztmonitor -> dahdi_monitor ztscan -> dahdi_scan ztspeed -> dahdi_speed zttest -> dahdi_test zttool -> dahdi_tool zapconf -> dahdi_genconf ранее известная, как genzaptelconf)
И изменились пути:
Системный файл конфигурации был переименован из /etc/zaptel.conf в /etc/dahdi/system.conf
Утилита dahdi_cfg теперь может использоваться для выбора эхо-подавителя для каждого из канала или группы каналов на основании настроек из файла конфигурации: system.conf; Полный перечень изменений на svn-транке разработчиков или по-русски на сайте voip.rus.net.
К сожалению, в статьи по разным причинам, не вошли важные аспекты Asterisk, поэтому попробую обратить Ваше внимание на них.
AGI, EAGI, DeadAGI и FastAGI
Asterisk Gateway Interface (AGI) – это шлюзовой интерфейс посредством которого внешние программы(сценарии) могут влиять на логику диалплана Asterisk. Сценарии AGI (по аналогии с CGI для http серверов) могут быть написаны практически на любом языке программирования, взаимодействуют с Asterisk посредством описателей файлов STDIN (стандартный ввод), STDOUT(стандартный вывод) и STDERR(стандартная ошибка) и реализуют расширенную логику работы с БД и внешними ресурсами. EAGI – это AGI, который помимо всего дает возможность сценарию читать входящий аудиопоток, к примеру, для нужд распознавания речи. DeadAGI – это AGI который корректно исполняется для «мертвого» — разъединенного канала. FastAGI – позволяет запустить удаленный AGI сценарий через TCP сокет – это уменьшает нагрузку системы и перекладывает её на другой сервер, к примеру, множество серверов Asterisk, могут использовать единые AGI – сценарии.
Наиболее популярными языками программирования для AGI являются Perl, Python и PHP. Скажу только, то, что для этих и других языков программирования существуют “обёртки” – фрэймворки, позволяющие абстрагироваться от логики запрос-ответ AGI и программировать на более высоком уровне абстракции.
AMI
Asterisk Manager Interface (AMI) – это программный интерфейс, позволяющий соединиться с Asterisk через TCP/IP и полностью контролировать Asterisk, используется для связи c CRM–системами [http://ru.wikipedia.org/wiki/CRM]].
AJAM
Aynchronous Javascript and XML (AJAM) – доступен с Asterisk версии 1.4, предоставляет web-браузеру или любому другому приложению связаться с AMI через HTTP. Используется в web–based GUI для Asterisk плюс в том, что он использует библиотеку Prototype, что избавляет разработчиков от многих кросбраузерных проблем.
Интеграция с Базами Данных
Важным моментом является способность Asterisk хранить свою конфигурацию и состояние в БД. Эта ключевая особенность позволяет строить, по истине, потрясающие распределенные телефонные системы.
Asterisk архитектуры реального времени
Это метод хранения конфигурационных файлов не в файловой системе, а в таблицах Базы Данных. Существуют два типа архитектур реального времени:
Статическая – аналогична методу хранения в конфигурационных файлах, но чтение данных происходит из БД и любое изменение опций конфигурации влечет за собой необходимость перезагрузки сервера Asterisk;
Динамическая – используется для хранения конфигураций файлов SIP, IAX2, голосовой почты и загружает данные по необходимости и соответственно не требует перезагрузки.
Важная часть диалплана, обеспечивающая ему мощь и динамичность – это func_odbc, она позволяет создавать и применять в диалплане функции извлечения и использования информации из БД.
IVR
Interactive Voice Response (IVR) – это уже неотъемлемая часть любой платформы и бизнеса занимающимся обслуживанием клиентов. Стоимость коммерческих IVR систем (Avaya, Cisco, Genesys, Nortel или Dialogic) достаточна, высока, а Asterisk просто создан для этого. К сожалению, русского женского голоса для Asterisk нет (бесплатного). После инсталляции Asterisk говорит с нами голосом Эллисон Смит (Allison Smith) — это порядка 300 промтов, плюс еще 600 в дополнении asterisk–sounds.
Доступен текстовый перевод голосовых промтов для Asterisk версий 1.4, 1.6
Если Вы решитесь самостоятельно записать промты, то основное требование – это нормализация записей до -3дБ с паузами в начале и завершении записи. Для конвертации аудио файла используется утилита SoX (Sound eXchange).
Однако, системы IVR – это “не только ценный мех” и DTMF, но и системы Automatic Speech Recognition(ASR – системы распознавания речи) и Text–to–speech(TTS) движки речевого воспроизведения. Правда, с русским тут пока туго. Но знать должны:
Оpen source ASR – engine Sphinx. Описание как связать Asterisk со Sphinx [en].
Не могу не сказать про, замечательный пример применения всего этого — ZoIP от Симона Дитнера (Simon Ditner). Это порт популярной игры Zork c механизмом полной поддержки речи, работающим на Asterisk.
Интересный ресурс sip.fontventa.com, жаль, что последнее обновление 19 января 2007 года, содержащий исходный код библиотеки для работы с протоколом H.324 использующимся в UMTS 3G видео звонках.
DUNDi™
Distributed Universal Number Discovery(DUNDi), создан Марком Спенсером – “это одноранговая система для поиска интернет–шлюзов в сервисы телефонии, является полностью распределенным и вообще не имеет никакой централизованной службы”. В некотором роде – это протокол маршрутизации для VoIP. DUNDi – позволяет запрашивать у равноправных участников сети альтернативный VoIP маршрут к добавочному номеру или телефонному номеру ТфОП. DUNDi можно использовать как в локальной сети – для упрощения управления добавочными номерами в системах Asterisk крупной компании, так и в глобальной сети, но тут для доступа нужно подписать Общее Пиринговое Соглашение (General Peering Agreement — GPA), его также можно найти в подпапке исходного кода doc/. GPA имеет обязательную юридическую силу, для защиты участников сети от людей злоупотребляющих протоколом.
1[en] Asterisk: The Future of Telephony, Авторы: Jim Van Meggelen, Jared Smith, Leif Madsen или на books.google.ru [ru] к сожалению, книга вышла не так давно но все ж и за это БОЛЬШОЕ СПАСИБО! Можно заказать на books.ru в 2-х вариантах:
Для интересующихся вопросами сертификации и лицензирования телекоммуникационных платформ, прошу на форум Астериск и сертификация, где i1 – Ваш покорный слуга.
Официальный mailing lists для тех, кому интересен Asterisk.