Pull to refresh

Asterisk – система компьютерной телефонии уровня предприятия

Reading time 9 min
Views 259K
Я хочу рассказать о свободном решении для компьютерной телефонии от компании 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 Не нужна
G.723.1 6.4 Кбит/с (кадр имеет размер 189 битов, дополненных до 24 байтов) и 5,3 Кбит/с (кадр имеет размер 158 битов, дополненных до 20 байтов). Режим работы может меняться динамически от кадра к кадру Нужна (не нужна для транзита)
MP3


Видео кодеки


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.

Дистрибутив Elastix от PaloSanto Solutions по функциональности не намного обходит Trixbox Community Edition. Распространяется по лицензии GNU GPL. Основой Elastix послужил CentOS 5 с ядром 2.6.18. Основу системы VoIP составляет Asterisk 1.4.18, разработчики дополнили его утилитами собственной разработки и модулями сторонних производителей. В качестве системы биллинга использован переработанный A2Billing. В поставку входит и сервер Openfire 3.4.2 обеспечивающий обмен сообщениями по протоколу XMPP/Jabber. Также в комплекте дистрибутива поставляются две CRM (Customer relationship management) — SugarCRM и VTigerCRM
Обзор и установку можно подсмотреть в статье Linuxoid.

Продолжим


Загружать статью общими вопросами установки и настройки 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–системами.

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.

На ресурсе ivrvoice.ru можно скачать и использовать в любых мирных целях, включая бизнес, русские промты для Asterisk.

Если Вы решитесь самостоятельно записать промты, то основное требование – это нормализация записей до -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

Информационные ресурсы


Форумы (малый список)


Магазины (малый список)



Компании предлагающие Asterisk — решения


Для интересующихся вопросами сертификации и лицензирования телекоммуникационных платформ, прошу на форум Астериск и сертификация, где i1 – Ваш покорный слуга.

Официальный mailing lists для тех, кому интересен Asterisk.

Asterisk — это FUN !!!

Tags:
Hubs:
+105
Comments 67
Comments Comments 67

Articles