Несмотря на популярность мессенджеров и телеконференций, ни один офис ещё не отказался от телефонной связи. Люди такие существа, что иногда предпочитают общаться голосом.
В каждом офисе установлена мини-АТС, которая коммутирует внутренние звонки. Телефоны сотрудников подключаются к коммуникационному шкафу или коробочке с Asterisk (как на КДПВ), а она подключена к телефонной сети общего пользования (PSTN или ТСОП). Таким образом, сотню офисных телефонов можно повесить на один внешний номер. В общем, мини-АТС — совершенно необходимая вещь.
Виртуальная или облачная АТС (hosted PBX) — это услуга для компаний, которая заменяет им обычную офисную АТС. Вместо того, чтобы покупать специализированное телекоммуникационное оборудование или выделять отдельный компьютер с Asterisk, они заказывают услугу на удалённом хостинге. И этот компьютер с Asterisk (IP-АТС) физически размещается у провайдера. Таким образом, виртуализация добралась и до АТС, всё в русле современных тенденций.
▍ Зачем это надо
Услуга виртуальной АТС позволяет компании не вкладывать никаких усилий в развёртывание и настройку офисной АТС, при этом они получают полный пакет услуг:
- многоканальный номер;
- распределение поступающих звонков;
- запись разговоров;
- внутренняя связь без выхода на городской номер;
- конференц-связь;
- селекторная связь;
- голосовые приветствия и голосовая почта;
- перевод вызова;
- автоматическое распознавание факсимильных сообщений;
- и многое другое.
Всё это без приобретения телекоммуникационного оборудования, то есть без существенных капитальных инвестиций, что важно для малого и среднего бизнеса.
▍ Установка на VPS
В 2020 году мы публиковали цикл статей об установке и настройке виртуальной АТС:
- «Виртуальная АТС. Часть 1: Простая установка Asterisk на Ubuntu 20.04»
- «Виртуальная АТС. Часть 2: Решаем проблемы безопасности с Asterisk и настраиваем звонки»
- «Виртуальная АТС. Часть 3: Переводим Asterisk на PjSIP без лишних телодвижений»
В упомянутых статьях 2020 года для примера мы устанавливали Asterisk 16 на недорогую виртуальную машину с двухъядерным CPU и 2 ГБ оперативной памяти, без шаблона (чистая установка Ubuntu 20.04). Давайте повторим эту процедуру.
Обычно для полноценной работы АТС нужно не меньше 2 ГБ оперативной памяти, сегодня такую машину можно заказать за 899 рублей в месяц (719 рублей в месяц при оплате за год), три дня на тест сервера предоставляются бесплатно. Но мы всё-таки возьмём 4 ГБ для последней версии Ubuntu, это обойдётся чуть дороже (1143 рубля в месяц при оплате за год).
Через какое-то время сервер готов к работе, ОС на нём уже будет установлена.
Обратим внимание, что нам выделен IP-адрес 193.124.112.77. Это важно, потому что к данному IP-адресу после установки виртуальной АТС будут подключаться наши клиенты (офисные работники). На их мобильных телефонах мы поставим соответствующий софт для IP-телефонии и укажем этот IP-адрес как сервер для связи. Но это потом.
Теперь устанавливаем Asterisk:
sudo apt-get update
sudo apt-get install asterisk
Проверка статуса после установки:
sudo systemctl status asterisk
Если в статусе не отображено, что программа запущена
active (running)
, необходимо вручную её запустить, выполнив следующую команду:sudo systemctl start asterisk
Также возможно настроить автозапуск, чтобы в случае перезагрузки сервера не приходилось каждый раз вручную запускать программу. Делается это следующей командой:
sudo systemctl enable asterisk
Изменение конфигурационных файлов:
sudo nano /etc/asterisk/sip.conf
В упомянутой статье описана дальнейшая настройка Asterisk с добавлением пользователей с указанием их внутренних номеров и паролей. После перезапуска службы и проверки её работоспособности можно сказать, что настройка завершена.
Затем можно приступать к установке клиентского программного обеспечения. Клиентов для IP-телефонии очень много, а мы тестировали мобильное приложение Linphone, которое выпускается в версиях для iOS и Android.
Установка Linphone под Linux:
sudo apt-get install linphone
Конечно, можно поискать какой-нибудь более современный клиент, потому что Linphone под Linux не особо активно поддерживается.
При установке на смартфоне в настройках Linphone выбираем пункт «Использовать SIP-аккаунт» и указываем IP-адрес сервера 193.124.112.77, выделенный провайдером (см. выше):
После подключения к нашей АТС клиенты готовы общаться между собой.
Таким образом, мы установили и настроили Asterisk в самой простой и базовой конфигурации с несколькими пользователями. Но возможности виртуальной АТС гораздо шире. Они поистине безграничны.
Программное обеспечение Asterisk включает множество функций, доступных в коммерческих и проприетарных АТС: голосовую почту, конференц-связь, интерактивное голосовое меню (IVR) и автоматическое распределение вызовов (ACD). Пользователи могут создавать новые функциональные возможности путём написания скриптов диалплана (план маршрутизации звонков) на нескольких языках расширения, добавлять загружаемые модули на PHP или C, а также реализации программ Asterisk Gateway Interface (AGI) с помощью любого языка программирования, способного взаимодействовать через стандартные потоки системы (stdin
иstdout
) или сетевые TCP-сокеты.
Asterisk поддерживает несколько стандартных протоколов VoIP, включая протокол инициирования сеанса (SIP), протокол управления медиашлюзом (MGCP) и H.323. Софт поддерживает большинство SIP-телефонов, выступая в качестве регистратора и агента пользователя. Он служит шлюзом между IP-телефонами и ТСОП через разные интерфейсы или аналоговые карты:
Телефонная карта Sangoma A200 на 2−24 аналоговых порта для систем Asterisk, FreePBX и PBXact
Нативный для Asterisk протокол Inter-Asterisk eXchange (IAX), задокументированный в качестве стандарта RFC 5456, обеспечивает эффективное межстанционное соединение (транк) между АТС Asterisk, а также распределяет некоторую логику конфигурации. Этот протокол поддерживают многие провайдеры VoIP, потому что сами используют Asterisk или предлагают его на своём хостинге. Некоторые телефоны также поддерживают IAX.
В прошлых статьях мы обсуждали настройки безопасности для виртуальной АТС, чтобы защитить её от несанкционированного доступа. Всё-таки телефонная станция в интернете по определению опаснее, чем в офисе. Мы настроили межсетевой экран, избавились от лишних модулей, изменили конфигурацию
sip.conf
против атаки перебором по номерам и запрета гостевых звонков, составили план маршрутизации звонков extensions.conf
и т. д. Asterisk рекомендуется перевести на более современную мультимедийную библиотеку PjSIP вместо устаревшей
chan_sip
. Нужно сказать, что это требует определённой доли ручной работы, ведь автоматически конвертировать конфигурацию и план маршрутизации звонков не получится. Если по-серьёзному, то это только начало. Дальнейшее обслуживание виртуальной АТС тоже займёт некоторое количество времени. Хотя в целом всё уже работает, но нужно добавлять/удалять пользователей, менять таблицы маршрутизации и в целом присматривать за системой.Со времени публикации нашего руководства в 2020 году ничего принципиально не изменилось, разве что вышло несколько новых версий Asterisk (последняя 21) и Ubuntu (совсем свежий релиз 24.04 LTS, апрель 2024-го).
▍ Новые версии Asterisk
За прошедшее время разработка Asterisk активно продолжалась.
Все версии Asterisk делятся на два типа: стандартные (поддержка один год плюс ещё один год выпуска патчей безопасности) и LTS (4+1).
Уже во время написания нашей прошлой статьи была доступна стандартная версия Asterisk 17, но в реальном использовании лучше ориентироваться на версии LTS (чётные), чтобы не переустанавливать систему каждый год.
С тех пор вышли Asterisk 18 LTS (20.10.2020), Asterisk 19 Standard (02.11.2021), Asterisk 20 LTS (19.10.2022) и Asterisk 21 Standard (18.10.2023), см. все версии.
Из новых функций, достойных упоминания, в Asterisk добавилось следующее (с 16-й версии):
- Нативная поддержка системы мониторинга Prometheus (Asterisk 17).
- Установка старших бит ToS под Linux для пользователей, не являющихся рутом, чтобы приоритизировать VoIP-трафик Asterisk абсолютно на любых маршрутизаторах, старый баг (Asterisk 18).
- Синхронизация видео со звуком при проходе через
func_jitterbuffer
(Asterisk 18).
- Модуль распознавания тона (Asterisk 19).
- Аудиоскремблер для шифрования звука (Asterisk 19).
- Модуль res_speech_aeap. Распознавание речи и перевод, передача входящего сигнала во внешние API вроде Deepgram или Google Speech API. В новой модели Asterisk не пытается сам обрабатывать речь, а позиционируется как мост между сигналом и облачными сервисами обработки (Asterisk 21).
Можно упомянуть, что на базе Asterisk разработан ряд коммерческих и опенсорсных решений, а также программно-аппаратных комплексов. Отдельно стоит выделить FreePBX, графический веб-интерфейс для Asterisk (на скриншоте вверху). Он распространяется как отдельный дистрибутив FreePBX Distro, даже с коммерческими модулями.
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻