Asterisk
Asterisk (англ. asterisk — «звёздочка», от др.-греч. ἀστερίσκος — «звёздочка») — это программное обеспечение с открытым исходным кодом для организации телефонной связи (IP-АТС), конференций, голосовой почты и других телекоммуникационных сервисов. Разрабатывается компанией Sangoma Technologies (до 2021 года — компанией Digium). Asterisk позволяет превратить обычный компьютер в полнофункциональную телефонную станцию, поддерживающую как традиционные телефонные линии (PSTN), так и IP-телефонию (VoIP). Является одним из наиболее распространённых решений для построения корпоративных и операторских систем связи.
История
Разработка Asterisk была начата в 1999 году американским программистом Марком Спенсером (Mark Spencer). Первоначально проект создавался как альтернатива дорогим проприетарным телефонным станциям. В 2001 году Спенсер основал компанию Digium, которая стала основным спонсором и разработчиком Asterisk. Первая стабильная версия (Asterisk 1.0) вышла в 2004 году.
Ключевым моментом в истории стало решение о лицензировании Asterisk под двойной лицензией: GNU General Public License (GPL) версии 2 для свободного использования и коммерческой лицензии для встраивания в проприетарные продукты. Это позволило привлечь большое сообщество разработчиков и интеграторов.
В 2011 году вышла версия Asterisk 10, которая принесла значительные улучшения в поддержку протоколов и аудиокодеков. В 2013 году — версия 11, ставшая одной из самых долгоживущих и стабильных. В 2018 году вышла версия 16, которая считается одной из самых популярных. В 2021 году компания Digium была приобретена канадской компанией Sangoma Technologies, которая продолжила развитие проекта. На 2024 год актуальной является версия Asterisk 21 (LTS — Long Term Support).
Архитектура и принцип работы
Asterisk работает по модульному принципу. Ядро системы (core) отвечает за базовые функции: обработку звонков, управление каналами, диспетчеризацию. Все остальные функции реализуются через динамически загружаемые модули.
Основные компоненты
- Ядро (core) — управляет вызовами, очередями, таймерами.
- Канальные драйверы (channel drivers) — обеспечивают взаимодействие с различными протоколами и оборудованием (SIP, IAX2, ISDN, FXS/FXO и др.).
- Приложения (applications) — выполняют действия над вызовом (например, воспроизведение звукового файла, запись разговора, перевод на другой номер).
- Функции (functions) — расширяют возможности диалплана (например, преобразование строк, работа с базами данных).
- Форматтеры (format handlers) — кодируют/декодируют аудио (GSM, G.711, G.729, Opus и др.).
- Ресурсы (resource modules) — предоставляют доступ к внешним сервисам (например, к базе данных или HTTP-запросам).
Диалплан
Центральным элементом управления в Asterisk является диалплан (dialplan) — скриптовый язык, описывающий логику обработки вызовов. Диалплан состоит из контекстов (contexts), расширений (extensions) и приоритетов (priorities). Каждый входящий вызов попадает в определённый контекст, где последовательно выполняются команды (приложения). Пример простого диалплана:
`` [default] exten => 100,1,Answer() same => n,Playback(hello-world) same => n,Hangup() ``
Этот код отвечает на вызов, воспроизводит файл «hello-world» и завершает соединение.
Протоколы и совместимость
Asterisk поддерживает широкий спектр протоколов VoIP и традиционной телефонии:
- SIP (Session Initiation Protocol) — основной протокол для IP-телефонии. Asterisk может работать как SIP-сервер (регистратор) и как SIP-клиент.
- IAX2 (Inter-Asterisk eXchange, версия 2) — собственный протокол Asterisk, оптимизированный для связи между серверами Asterisk и для работы с низкой пропускной способностью.
- H.323 — устаревший, но всё ещё используемый протокол видеоконференций.
- MGCP (Media Gateway Control Protocol) — протокол управления медиашлюзами.
- SCCP (Skinny Client Control Protocol) — протокол, используемый в оборудовании Cisco.
- PRI/BRI (ISDN) — поддержка цифровых линий через драйверы PRI.
- FXS/FXO (аналоговые линии) — через специальные платы (например, Digium) или шлюзы.
Функциональные возможности
Asterisk предоставляет набор функций, типичных для профессиональных АТС:
- Голосовая почта — с возможностью отправки сообщений на email, хранения на сервере.
- Конференц-связь — многосторонние аудиоконференции с управлением.
- IVR (Interactive Voice Response) — голосовое меню для автоматической маршрутизации вызовов.
- Очереди вызовов (queues) — распределение входящих звонков между операторами по заданным алгоритмам (FIFO, Round Robin, Least Recent и др.).
- Запись разговоров — по требованию или для всех вызовов.
- Call Parking — временное удержание вызова с последующим перехватом.
- Call Pickup — перехват звонка, адресованного другому абоненту.
- Blacklist/Whitelist — фильтрация вызовов по номерам.
- Music on Hold — воспроизведение музыки или сообщений во время ожидания.
- Транскодирование — преобразование аудиокодеков на лету.
- Интеграция с базами данных — через ODBC, MySQL, PostgreSQL.
- AMI (Asterisk Manager Interface) — интерфейс для внешнего управления и мониторинга.
- ARI (Asterisk REST Interface) — современный RESTful API для управления вызовами.
Применение
Asterisk используется в самых разных сферах:
- Корпоративные АТС — замена традиционных офисных телефонных станций. Позволяет объединить несколько офисов в единую сеть.
- Центры обработки вызовов (Call Centers) — с поддержкой очередей, статистики, интеграции с CRM.
- Операторы связи — для построения транзитных узлов, виртуальных АТС (Hosted PBX).
- Домашние и малые офисы — как бюджетное решение для небольшого числа линий.
- Образовательные проекты — для изучения принципов работы телефонии и VoIP.
- Системы автоматизации — например, для голосового управления оборудованием или оповещения.
Преимущества и недостатки
Преимущества
- Открытый исходный код — бесплатное использование, возможность модификации.
- Гибкость — практически неограниченные возможности настройки под любые задачи.
- Масштабируемость — от одного абонента до тысяч.
- Кроссплатформенность — работает на Linux, FreeBSD, macOS (ограниченно).
- Большое сообщество — множество документации, форумов, готовых решений.
- Совместимость — поддержка десятков протоколов и оборудования.
Недостатки
- Сложность настройки — требует глубоких знаний VoIP, Linux и самого Asterisk.
- Отсутствие графического интерфейса по умолчанию — управление через конфигурационные файлы (хотя существуют GUI-надстройки, например, FreePBX).
- Производительность — при высокой нагрузке может требовать оптимизации и мощного оборудования.
- Отсутствие официальной поддержки — сообщество и коммерческие компании предоставляют поддержку за отдельную плату.
Интересные факты
- Название «Asterisk» отсылает к символу «звёздочка» (*), который в Unix-системах используется как wildcard (шаблон для поиска). Марк Спенсер выбрал это имя, чтобы подчеркнуть универсальность и гибкость системы.
- Asterisk является одним из немногих проектов VoIP, который имеет собственный протокол (IAX2), оптимизированный для работы через NAT и с низкой пропускной способностью.
- На базе Asterisk построены многие коммерческие продукты, такие как FreePBX, Elastix, Issabel, а также облачные виртуальные АТС.
- В 2019 году проект Asterisk отметил 20-летие. За это время было выпущено более 20 мажорных версий.
- Asterisk используется в системах экстренной связи, например, в некоторых аэропортах и на промышленных объектах.
Источники
- Официальная документация Asterisk (docs.asterisk.org)
- «Asterisk: The Future of Telephony» — книга Джима Ван Меггелена и других (O’Reilly Media)
- Статья «A Brief History of Asterisk» на сайте Sangoma Technologies
- Материалы конференций AstriCon
- Документация FreePBX (freepbx.org)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →