Asterisk – система компьютерной телефонии уровня предприятия
Раздел:
Телефоны и связь
@
18.03.2009 |
Ключевые слова: asterisk телефония
Автор: iv1 Источник: habrahabr
Я хочу рассказать о свободном решении для компьютерной телефонии от компании Digium™. Asterisk™ – это ATC созданная хакерами (в первоначальном смысле этого слова), а точнее, это супер конвергентная платформа компьютерной телефонии, распространяемая по лицензии GNU GPL, изначально разрабатываемая Марком Спенсером (Mark Spenser), позже ставшим президентом и техническим директором компании Digium. Благодаря коммерческой поддержке Его компании и лицензии GNU GPL Asterisk активно развивается и поддерживается тысячами людей со всей планеты.
Asterisk поддерживает
Протоколы
Аудио кодеки
Название |
Скорость передачи, Кбит/с |
Необходимость лицензии |
G.711 |
64 |
Не нужна |
G.726 |
16, 24, 32 или 40 |
Не нужна |
G.729A |
8 |
Нужна (не нужна для транзита) |
GSM |
13 |
Не нужна |
iLBC |
13,3 (кадры по 30 мс) или 15,2 (кадры по 20 мс) |
Не нужна |
Speex |
Переменная между 2,15 и 22,4 |
Не нужна |
MP3 |
GSM – безусловно, самый любимый кодек Asterisk.
Видео кодеки
Asterisk может работать как с аналоговыми линиями (FXO/FXS модули), так и цифровыми (ISDN BRI и PRI — потоки Т1/E1). С помощью компьютерных плат (наиболее известными производителями которых являются Digium, Sangoma, OpenVox, Rhino, AudioCodes) Asterisk можно подключить к высокопропускным линиям Т1/E1, которые позволяют работать с десятками и сотнями телефонных линий. По материалам Википедии
Asterisk работает с ОКС-7 (Общеканальная сигнализация №7, в Европе известной как SS7 – Signaling System №7) — это набор сигнальных телефонных протоколов, для организации мультисервисной (интеллектуальной) сети.
Презентация освещающая работу с SS7 с astricon.net Автор Мэттью Фредриксон (Matthew Fredrickson)An introduction to SS7 and its support in Asterisk — pdf
Важные моменты для выбораПроизводительность Asterisk системОпытные данные производительности систем представлены на форуме [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 в базовой комплектации включает три основных пакета доступных к загрузке на официальном сайте:
- Сам Asterisk, доступна версия 1.6.0.6;
- Драйверы телефонии DAHDI – акроним Digium Asterisk Hardware Device Interface, бывший zaptel + DAHDI Tools;
- PRI – библиотеки Libpri.
ссылки на 32-bit версии, но доступны и 64–bit Если планируется использовать только VoIP, то достаточно пакета Asterisk, но рекомендуется установить все пакеты.
Дополнительно, можно установить
- Asterisk GUI 2.0;
- 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, сменилось даже название телефонного драйвера и функционал существенно расширился, но Вас это не должно пугать.
Моя рекомендация – MUST READ: Статьи о 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: организуем автоматическое распределение поступающих вызовов – рассматриваются вопросы организации очереди обработки вызовов, так необходимой в службах работающих с клиентами. Автор Сергей Яремчук
Марк Спенсер: «Это Asterisk привлекает пользователей к Linux, а не наоборот!» Интервью с Марком Спенсером 2006 год, текст: Дмитрий Шурупов, фото: Йон Холл
Вопросы безопасности Asterisk обсуждаются в статье Безопасный Asterisk Автор Максим Литницкий — ПРОШУ УДЕЛИТЬ ЭТОМУ БОЛЬШОЕ ВНИМАНИЕ
К сожалению, в статьи по разным причинам, не вошли важные аспекты 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://www.rusdoc.ru/go.php?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, голосовой почты и загружает данные по необходимости и соответственно не требует перезагрузки.
Подробный материал [ru] и [en – оригинал].
Хранение файлов CDR в Базе Данных Call Detail Records (CDR) – файл записи параметров вызовов прошедших через систему. Asterisk позволяет хранить CDR файлы в:
Важная часть диалплана, обеспечивающая ему мощь и динамичность – это 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
А также мужской русский голос от romik_g для Asterisk 1.4.
Если Вы решитесь самостоятельно записать промты, то основное требование – это нормализация записей до -3дБ с паузами в начале и завершении записи. Для конвертации аудио файла используется утилита SoX (Sound eXchange).
Однако, системы IVR – это “не только ценный мех” и DTMF, но и системы Automatic Speech Recognition(ASR – системы распознавания речи) и Text–to–speech(TTS) движки речевого воспроизведения. Правда, с русским тут пока туго. Но знать должны:
Не могу не сказать про, замечательный пример применения всего этого — ZoIP от Симона Дитнера (Simon Ditner). Это порт популярной игры Zork c механизмом полной поддержки речи, работающим на Asterisk.
Видео и Asterisk Ссылки по работе с Видео в Asterisk [ru] и [en – оригинал].
Интересный ресурс 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 имеет обязательную юридическую силу, для защиты участников сети от людей злоупотребляющих протоколом.
Для изучения рекомендую статью How to use DUNDi to distribute calls among the DUNDi Peering Network.
Подробности — это темы будущих статей.
Книги 1[en] Asterisk: The Future of Telephony, Авторы: Jim Van Meggelen, Jared Smith, Leif Madsen или на books.google.ru [ru] к сожалению, книга вышла не так давно но все ж и за это БОЛЬШОЕ СПАСИБО! Можно заказать на books.ru в 2-х вариантах:
Свободный перевод глав книги Asterisk: The Future of Telephony
(Максим, чтоб мы без тебя делали ;) [в последний момент нашел ru] Asterisk: будущее телефонии — DRAFT-copy
[en] trixbox Without Tears The Dumb-Me guide — свободна для скачивания
Видеоматериалы [en]Free Video Tutorials for trixbox FreePBX and Asterisk Systems
Информационные ресурсы
Форумы (малый список)
Магазины (малый список)
Для интересующихся вопросами сертификации и лицензирования телекоммуникационных платформ, прошу на форум Астериск и сертификация, где i1 – Ваш покорный слуга.
Официальный mailing lists для тех, кому интересен Asterisk.
Вернуться в раздел:
Телефоны и связь
|