Открыть сервис

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 →