RealTime в Asterisk: архитектура и конфигурация

RealTime в Asterisk: архитектура и конфигурация с 5 октября по 9 октября

Количество
свободных мест

8 Записаться

Курсы по Mikrotik MTCNA

Курсы по Mikrotik MTCNA с 6 апреля по 10 апреля

Количество
свободных мест

7 Записаться

Курс по Zabbix

Zabbix: мониторинг Asterisk и VoIP с 7 сентября по 11 сентября

Количество
свободных мест

8 Записаться
AI Voice Connector и Asterisk: искусственный интеллект в вашей IP-АТС
23
Доклад
Антон Гулин
AI Voice Connector и Asterisk: искусственный интеллект в вашей IP-АТС

Интеграция WhatsApp в корпоративную телефонию долгое время оставалась «серым» сегментом, где приходилось использовать неофициальные библиотеки и постоянно ждать блокировок. Однако появление официального WhatsApp Cloud API и возможность проброса звонков через протокол SIP в корне изменили ситуацию. История этого решения началась с запроса компании-разработчика, которой требовалось объединить привычный мессенджер с профессиональной АТС. В результате появилась схема, позволяющая принимать и совершать вызовы прямо через FreePBX, используя только штатные механизмы системы.

Выбор платформы для реализации пал на FreePBX 17 и Asterisk 22.5. Это связка, которую часто выбирают системные администраторы, не желающие глубоко погружаться в дебри ручной правки конфигурационных файлов. Основная идея здесь — доступность. Любой специалист среднего звена, понимающий основы телефонии, сможет воспроизвести этот сценарий. При этом установка Asterisk последней версии дает доступ к современным драйверам и кодекам, которые критически важны для работы с облачными API мессенджеров.

Подготовка инфраструктуры и работа с безопасностью

Первое, с чего начинаются любые настройки — это обеспечение безопасности. WhatsApp работает исключительно через защищенные каналы, поэтому без настройки TLS-транспорта «кина не будет». Для этого во FreePBX используется модуль Certificate Manager. Многие привыкли, что сертификаты — это сложно и дорого, но сейчас всё решается в пару кликов.

Основные шаги по подготовке безопасности:

  • Генерация сертификата: Используется бесплатный Let’s Encrypt. В менеджере сертификатов достаточно просто нажать кнопку генерации, и система сама подтянет данные домена, если он корректно привязан к серверу.
  • Настройка доверия: Сертификат должен быть установлен как основной для системы и привязан к настройкам PJSIP.
  • Выбор протокола: В настройках безопасности крайне желательно принудительно выставить TLS 1.2. Опыт показывает, что это наиболее стабильный вариант для взаимодействия с серверами Facebook.

Важный нюанс: после любых манипуляций с TLS-транспортами во FreePBX стандартного нажатия кнопки «Apply Config» недостаточно. Чтобы изменения в драйвере PJSIP вступили в силу, нужно выполнить полный перезапуск сервиса через консоль командой fwconsole restart
. Без этого сервер просто не увидит открытый порт 5061 и не сможет инициировать защищенное соединение. Если планируется ip-телефония для удаленных сотрудников, то качественная настройка TLS становится фундаментом всей системы.

Настройка PJSIP: Транспорты и Кодеки

Драйвер PJSIP — это «сердце» современной телефонии на Asterisk. В отличие от старого chan_sip, он позволяет гибко управлять транспортами. Для WhatsApp необходимо создать отдельный транспорт, который будет слушать TLS-запросы.

В настройках PJSIP Settings нужно зайти во вкладку TLS и выбрать ранее созданный сертификат. Здесь же задается порт (по умолчанию 5061). Если все сделано правильно, статус транспорта в панели управления должен смениться на «Active».

Что нужно учесть при настройке медиа-потока:

  1. Кодеки: WhatsApp использует кодек Opus. Это отличный кодек с переменным битрейтом, который обеспечивает высокое качество голоса даже при нестабильном интернете. В настройках транка и внутренних номеров нужно оставить только его, чтобы избежать лишнего транскодинга, который нагружает процессор.
  2. Шифрование голоса: Для WhatsApp обязательно использование SRTP. В настройках транка это поле называется «Media Encryption», и там нужно выбрать значение SRTP via SDP. Без этого вызов просто не будет принят на стороне мессенджера.

Грамотное проектирование и настройка сети на этом этапе избавляет от проблем с односторонней слышимостью в будущем. Важно проверить, чтобы сетевой экран (firewall) пропускал трафик по порту 5061 и RTP-порты в диапазоне 10000-20000.

Работа с Facebook Developer Portal

Интеграция невозможна без создания приложения на стороне Meta. Процесс выглядит следующим образом: на портале разработчиков создается приложение типа «Business», к нему подключается WhatsApp. Раньше для звонков требовались сложные веб-хуки и настройка WebRTC, но теперь доступен вариант работы через SIP.

В консоли разработчика нужно указать адрес своего сервера в формате FQDN (например, pbx.company.ru) и порт 5061. После сохранения настроек система предложит скачать JSON-файл. Этот файл — ваша «шпаргалка», в которой содержатся все необходимые данные:

  • Идентификатор приложения.
  • Уникальный пароль для SIP-транка.
  • Список IP-адресов серверов WhatsApp.

Этот пароль — ключ ко всему. Он генерируется один раз и используется для авторизации ваших исходящих вызовов. Если вы его потеряете, придется пересоздавать настройки в консоли Facebook.

Создание транка WhatsAppX

Когда данные из Facebook получены, можно переходить к созданию самого транка во FreePBX. Назовем его условно WhatsAppX. Настройка здесь специфическая, так как стандартные методы регистрации здесь не работают.

Заполнение вкладок транка:

  • General: Имя транка — WhatsAppX, Outbound CallerID — ваш номер телефона в международном формате (например, 79001112233).
  • pjsip Settings -> Authentication: Выбираем «Outbound», в поле Username вписываем номер телефона, а в поле Password — тот самый длинный ключ из JSON-файла.
  • pjsip Settings -> Registration: Ставим в положение «None». Регистрация на серверах WhatsApp происходит не по SIP-протоколу, а через API при активации настроек в консоли Facebook.
  • pjsip Settings -> SIP Settings: В поле Query Context можно оставить «from-trunk».

Отдельная головная боль — это поле Match (Permit). Звонки от WhatsApp могут приходить с огромного количества IP-адресов. Facebook использует распределенную сеть, и в их списке может быть около 400 подсетей. Все эти адреса из JSON-файла нужно скопировать и вставить в поле Match через запятую. Это критически важная защита IP-ATC, так как она позволяет серверу понимать, что вызов пришел именно от WhatsApp, а не от злоумышленников, пытающихся подобрать пароль.

Входящая и исходящая маршрутизация

После того как транк «поднялся», нужно объяснить системе, куда девать звонки. Входящая маршрутизация настраивается стандартно: создается Inbound Route, где в качестве DID указывается ваш номер WhatsApp. Звонок можно направить на очередь, в IVR или конкретному менеджеру.

Для исходящих звонков есть свои нюансы. Правила набора в Outbound Routes должны соответствовать требованиям мессенджера. Номер всегда должен уходить в формате + [код страны] [номер]. Например, +79991234567.

Особенности работы с исходящими вызовами:

  1. Политика спама: Вы не можете просто так начать звонить любому пользователю WhatsApp со своей АТС. Мессенджер защищает пользователей от нежелательных звонков.
  2. Разрешение на контакт: Исходящий звонок «взлетит» только в том случае, если у вас есть активное окно переписки с пользователем (он написал вам первым или ответил на ваше шаблонное сообщение), либо если пользователь уже звонил вам ранее.
  3. Срок действия: Такое разрешение на звонок обычно действует 7 дней. Если за неделю общения не было, сессия закрывается, и первым совершить звонок вы уже не сможете — придется сначала отправить текстовый шаблон.

Чтобы разобраться во всех тонкостях таких интеграций, многие специалисты посещают курсы по Asterisk, где подобные кейсы разбираются на практике. Это помогает понять логику работы Cloud API и избежать типичных ошибок с правами доступа.

Лимиты и масштабирование бизнеса

Важно понимать, что WhatsApp Business API — это не «безлимитная игрушка». У каждого аккаунта есть свой уровень (Tier), который определяет, сколько уникальных пользователей вы можете охватить за сутки.

  • Tier 1: Ограничение — 1000 уникальных пользователей в сутки.
  • Песочница: У новых, не верифицированных аккаунтов лимит может быть всего 250 сообщений/звонков.
  • Повышение лимита: Происходит автоматически, если вы активно общаетесь, не получаете жалоб (спам-репортов) и вовремя оплачиваете счета Facebook.

Если ваша компания планирует масштабную активность, стоит заранее подумать о том, как модернизация АТС повлияет на бизнес-процессы. WhatsApp позволяет видеть статус доставки вызова и получать подробную статистику в кабинете разработчика, что гораздо информативнее, чем обычная «голая» медь или простые SIP-транки.

Резюме и практические советы

Интеграция WhatsApp и FreePBX — это не какая-то магия или «костыльное» решение. Это использование официального функционала, который Meta предоставила бизнесу. Главное здесь — не бояться TLS и внимательно копировать IP-адреса из JSON-файла.

Короткий чек-лист для проверки:

  • Сертификат Let’s Encrypt выпущен и активен.
  • Транспорт PJSIP настроен на порт 5061 и использует TLS 1.2.
  • В транке включено шифрование SRTP.
  • Используется кодек Opus.
  • Все IP-адреса WhatsApp внесены в список разрешенных (Match).

Если звонок не проходит, в первую очередь смотрите в консоль Asterisk (asterisk -rvvv). Если вы видите сообщения о «Security Event» или «Endpoint not found», значит, вы либо ошиблись в номере телефона (Username), либо ваш IP-адрес не прописан в поле Match.

 

Заключение

Такой подход превращает WhatsApp из обычного мессенджера в полноценный рабочий инструмент. Операторы могут использовать свои привычные софтфоны, все разговоры будут записываться в АТС, а статистика звонков — попадать в CRM. Это и есть та самая омниканальность, к которой стремятся современные компании.

Ежегодная конференция по Asterisk 2026!

Билеты уже в продаже!

Остались вопросы?

Я - Игорь Кондрашин, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все