ИТ База знаний
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
Настройка программных телефонов
Корпоративные сети
Популярное и похожее
FreePBX 13 настройка c нуля
Что такое CEL Channel Event Logging на Asterisk?
FreePBX 13 настройка c нуля
CDR в FreePBX на внешний сервер
Установка FusionPBX на CentOS 7
По запросам наших читателей мы начинаем цикл статей про управление и настройку IP-АТС FusionPBX. Данная АТС может быть использована как обычная АТС, распределенная АТС или сервер-коллцентра, сервер голосовой почты и так далее. Базируется данная АТС на проекте FreeSWITCH. По сути, FusionPBX является очень кастомизируемым и гибким веб-интерфейсом — в точности, как и FreePBX для Asterisk.
FusionPBX может быть установлена на множестве операционных систем, включая:
Вообще, данная платформа оптимизирована для работы на Debian 8, но, для нас более привычным является CentOS — на него и будем ставить.
Процесс установки
В первую очередь, нам понадобится «чистый» CentOS 7 Minimal или Netinstall — у нас есть подробная статья про его первоначальную установку.
Вероятно, если вы используете Minimal версию, то вам также придется установить wget — используйте команду yum install wget
Далее процесс установки крайне прост — нужно просто выполнить пару команд.
Первая — скачиваем установочный скрипт:
Затем, переходим в директорию и запускаем скрипт:
Далее ждем завершения процесса установки. Данный скрипт установит FusionPBX, FreeSWITCH, IPTables, Fail2ban, NGINX, PHP FPM и PostgreSQL. Процесс длится около 10 минут на типичной тестовой виртуалке — 768 Мб оперативной памяти, 1 ядро с частотой 3 ГГц — ничего особенного. Опять же, скорость установки сильно зависит от вашего интернет соединения.
После завершения процесса установки вам будет указан адрес вашего сервера, логин и сгенерированный сложный пароль.
Однако, при моей попытке зайти на данный адрес через веб-браузер я увидел ошибку 403 — Forbidden от nginx. Как оказалось, данная проблема решается с помощью следующих команд — некая ошибка выдачи прав:
Далее наконец-то заходим в веб-интерфейс и вводим логин и пароль, который был нам предоставлен установочным скриптом из предыдущего шага:
Далее, мы получаем доступ к самому веб-интерфейсу — постоянным пользователям FreePBX данный GUI будет выглядеть очень непривычно.
Заключение
На этом данная статья подходит к своему логичному завершению — в дальнейших статьях мы покажем как настраивать транки, экстеншены, IVR и многое другое — пишите в комментариях свои пожелания, что вы бы хотели видеть в первую очередь.
Полезна ли Вам эта статья?
Пожалуйста, расскажите почему?
😪 Нам жаль, что статья не была полезна для вас 🙁 Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!
😍 Подпишитесь на нашу еженедельную рассылку, и мы будем присылать самые интересные публикации 🙂 Просто оставьте свои данные в форме ниже.
источник
FusionPBX — FreeSWITCH GUI
FusionPBX основанный на открытом коде (open source) FreeSWITCH GUI .
FusionPBX предоставляет возможность создания высокопроизводительных систем операторского класса. Операторский коммутатор, центр обработки вызовов (call center), Факс сервер, сервер голосовой почты, конференц-сервер, сервер голосовых приложений. Использование FusionPBX облегчит задачу по настройке FreeSWITCH, как начинающему, так и опытному пользователю. FreeSWITCH высокопроизводительная, многопоточная, телекоммуникационная платформа. Веб интерфейс FusionPBX распространяется по лицензии MPL 1.1.
Настройка FusionPBX
Рассмотрим настройки основных модулей. Создание extensions (внутренних номеров), gateways (транков), исходящей и входящей маршрутизации.
Добавление внутренних номеров — Extensions
Введите номер Extension и нажмите Save. Пароль будет сгенерирован автоматически.
Задайте Context. По умолчанию default.
Задайте политику записи разговоров: Все ( all ), только местные( local ), только входящие( inbound ), только исходящие ( outbound ).
Состояние ектеншена, по умолчанию — Enabled
источник
FusionPBX, или снова-здорово, FreeSWITCH
В ту же реку
Относительно недавно я написал себе шпаргалку по настройке FreeSWITCH. Описанный там процесс настройки привел к работоспособной в тестовых условиях конфигурации. Тест был необходим для составления предварительного представления о том, с чем придется иметь дело после переезда организации и запуске телефонии в продакшн. Однако, когда переезд состоялся и началось подключение в рабочем режиме, то первое же включение показало неработоспособность конфигурации: перестали ходить внутренние вызовы.
Это стало для меня полнейшим сюрпризом, поскольку с момента финальной настройки и проверки работоспособности, по мотивам которой была написана шпаргалка, по момент включения в рабочем режиме никаких изменений в конфиг не вносилось. Были лишь массово добавлены внутренние номера и маршруты для входящих и исходящих вызовов для тех сотрудников, за кем были закреплены прямые городские номера (порядка 60 с хвостиком номеров).
Был проведен дебаг, выявлен косяк, и все заработало. Однако, осталось ощущение костыля. Описывать его не стану, поскольку пребываю в уверенности, что примененное решение не верное, хоть и привело к искомому результату. Кроме того, выяснились нюансы: при исходящих вызовах изнутри наружу определялся только тот номер, что был указан в настройке SIP-транка в поле default_provider_username:
а не тот, что указан в конфигурации абонентского номера:
Техподдержка провайдера сообщила, что все вызовы, прилетающие к ним от нас, в поле From имеют именно номер 3435555555, то есть косяк на моей стороне. Плюс ко всему, я вдруг совершенно завис с задачей переадресации вызовов. А вишенкой на торте стал вынос мозга аппаратами Ericsson Dialog 4422, отказавшимися выполнять трансфер вызова, и аппаратами Cisco 7945g, решившими, что их предел длительности соединения составляет 90-100 секунд при отсутствии малейшего намека на подобную настройку в конфиге. В то же время аппараты Yealink T21 E2 работали полностью без нареканий.
На этом этапе я осознал, что достиг предела своей компетенции в области телефонии и взял тайм-аут на то, чтобы все в голове утряслось и уложилось. Этому решению так же очень могуче способствовало общее утомление после совершенно диких двух рабочих недель без выходных и с ненормированным рабочим графиком, которые последовали сразу после заезда на новое место размещения организации.
FusionPBX
Не смотря на отсутствие у меня симпатий к графическим интерфейсам там, где правит бал консоль и текстовые конфиги, я все же стал смотреть в сторону решения с веб-мордой, именуемого FusionPBX. Первой причиной такой измены собственным принципам стало желание видеть весь объем настроек по каждому функциональному элементу, собранных в одном месте в виде работоспособной «из коробки» конфигурации. Именно такую возможность дает графический интерфейс. Дополнительным бонусом продуманного графического интерфейса является наглядное представление взаимосвязей между модулями и функциями. Для новичка (лично для меня) меньший уровень абстракции с конкретным способом реализации способствует более быстрому обучению и приходу к понимаю того, как эта штука работает. Второй причиной стал www.pbxforums.com, на который я попадал по ссылке через одну при поиске информации по FreeSWITCH, и попадал по иронии судьбы именно на скриншоты страниц настроек FusionPBX.
FusionPBX это FreeSWITCH с веб-мордой и с настройками, хранящимися в базе данных. Скрипт автоматической установки выполняет установку и FreeSWITCH’а, и Nginx’а, и PostgreSQL, и, собственно, веб-интерфейса самого FusionPBX. Останавливаться на этом моменте не стану, все без запинок ставится по инструкции из документации. Ставил все на рекомендуемую разработчиками 64-битную Debian 8.
Импорт абонентских номеров
Здесь не будет рассматриваться процесс настройки абонентских номеров и входящих маршрутов. Этот процесс описан в официальной документации.
Вместо него будет описана процедура импорта всего скопом. Описаний, мануалов и советов по выполнению данной процедуры мною найдено не было.
По окончании установки включаем автоматический вход в Adminer (аналог phpMyAdmin):
Advanced→Default settings:
После изменения значений на текущей странице нажимаем Save, на странице настроек по умолчанию Reload.
Переходим в Adminer: Advanced→Adminer.
Интерес для нас представляют следующие таблицы:
v_extensions — абонентские номера.
v_destinations — маршруты для входящих вызовов на городские номера, закрепленные за внутренними абонентскими номерами.
v_dialplans — справочник диалпланов.
v_dialplan_details — настройки диалпланов входящих вызовов.
v_voicemails — настройки голосовой почты.
Формулировка задачи была следующей: выгрузить из AD ФИО сотрудников и их номера внутренних телефонов, сохранить выгрузку в CSV-файл и импортировать его в БД в таблицу абонентских номеров и настроек голосовой почты (голосовая почта должна быть отключена).
Используя справочник соответствия городских номеров внутренним, создать CSV-файлы для импорта в таблицы с маршрутами и диалпланами входящих вызовов.
Я не стану подробно рассматривать эту задачу, просто спрячу готовые скрипты под спойлер.
Предлагаемые скрипты вы используете на свой страх и риск, автор не несет ответственности за их неправильное использование или неожиданные побочные эффекты их правильного использования.
- Присвойте переменной $nums значения, соответствующие вашим номерам.
- Перед использованием скриптов необходимо везде заменить UUID домена на значение, присвоенное домену при установке (поле domain_uuid).
- Так же необходимо заменить IP-адрес домена (172.18.253.1) на ваш.
- Не забудьте откорректировать значение ключа -SearchBase, указав свою область выборки вместо «OU=Ekaterinburg,DC=dc,DC=domain,DC=local»
- UUID приложения Voicemail (поле app_uuid) так же заменить на UUID, присвоенный при установке.
- Значения UUID’ов можно посмотреть, например, в таблице v_dialplans.
- Всем абонентским номерам будет присвоен пароль для регистрации «12345», пароль на голосовую почту и прочие сервисы — совпадающий с абонентским номером.
- Скрипт дописывает файлы построчно! Поэтому не забывайте удалять файлы перед каждым запуском скрипта или очищать их содержимое!
.
Проверка связи на рандомно выбранные номера показала работоспособность импорта.
Gateway: 172.16.253.3
Username: 3435555555
Password: not-used
From User: 3435555555
From Domain: 172.16.253.3
Proxy: 172.16.253.3
Register: False
Caller ID In From: True
В документации по FusionPBX недвусмысленно указывается, что при выполнении настроек поля, выделенные жирным текстом, обязательны для заполнения.
Однако я, по непонятной мне причине, жирность поля Proxy не углядел и значение ему не выставил. В итоге получил работающие входящие внешние вызовы, но не работающие исходящие наружу. Команда sofia status gateway ffffffff-ffff-ffff-ffff-ffffffffffff не показывала аномалий настройки и даже показывала назначенное значение поля Proxy, соответствующее значению Gateway. Точно такой же вывод команды при точно таких же настройках демонстрировал «голый» FreeSWITCH в предыдущей инсталляции, и при этом совершенно беспроблемно позволял совершать исходящие вызовы наружу.
FusionPBX же заработал только после явного указания значения Proxy.
* ffffffff-ffff-ffff-ffff-ffffffffffff — UUID шлюза
Выполнил настройки в соответствии со шпаргалкой и тут же получил сломавшиеся внутренние вызовы. Логи показывали, что аппараты почему-то оказались в контексте external, соответственно, обрабатывались «не своим» диалпаном, от чего вызов завершался ошибкой ROUTE_NOT_FOUND.
ACL-списки только для сетей и доменов провайдеров.
Ваших собственных сетей и доменов в них быть не должно.
Список domains должен быть по умолчанию deny.
Сами правила должны быть разрешающими и в них должен быть прописан IP-адрес шлюза провайдера с маской /32, поле domain заполнять не нужно.
По окончании жмем Save, далее чтобы новые ACL вошли в силу: Status→Sip Status и жмем Reload ACL.
Advanced→Default Settings
Здесь мы укажем выданный нам провайдером внешний IP-адрес, который мы использовали при настройке 1:1 NAT в шпаргалке, укажем телефонный код региона, язык и голос для голосовых ответов, тип гудка.
default_areacode: 343
default_language: ru
default_dialect: RU
default_voice: elena
ringback: $$
transfer_ringback: $$
Чтобы корректно определялись прямые городские номера, присвоенные внутренним в настройках через поля Outbound Caller ID Name и Outbound Caller ID Number, необходимо выполнение трех условий:
- Отсутствие ACL-авторизации внутренних абонентов
- Включенная Digest-авторизация в настройках SIP-профиля:
internal_auth_calls: true - Наличие в настройках шлюза:
Caller ID In From: True
Dialplan→Outbound Routes
Пожалуй, это единственный пункт настроек, не подвергшийся переосмыслению.
Подробно разбирать его не стану. Отмечу лишь, что были использованы следующие регулярные выражения для различных направлений:
- Внутригород: ^(\d<7>)$ (набор прямого городского 7-значного номера без всяких префиксов в виде нулей, девяток и прочего).
- Внутригород с кодом города: ^(8343\d<7>)$ (набор городского 7-значного номера с префиксом 8343).
- Сотовые: ^(89\d<9>)$ (звонок на сотовый с префиксом 8, что является стандартом де-факто)
- Межгород: ^(8\d<10>)$ (междугородний звонок, так же привычные: 8, код населенного пункта, номер абонента)
- Международный: ^(810\d+)$ (стандартный же префикс 810, далее код страны, код территории, номер абонента).
Для всех маршрутов было отредактированы два тега action типа set: effective_caller_id_name=$ $
Лечим сброс вызова через 90-100 секунд на аппаратах Cisco
Как было отмечено выше, сюрпризом стал обрыв установленного соединения через 90-100 секунд на всех аппаратах Cisco 7945g. Подкручивание всех таймеров с более или менее релевантным названием переменной в конфиге аппаратов результата не дало. Курение логов в консоли FreeSWITCH выявило Session Expire.
Гуглинг, кроме матов в сторону нежелания аппаратов Cisco нормально работать хоть с кем-то, кроме Call Manager’а, выявил, что такое поведение вполне может быть вылечено отключением переменной aggressive-nat-detection .
Русификация голосового отклика
Нам потребуются файлы озвучки, созданные альтруистичными профессионалами.
Каждый из архивов содержит готовую структуру каталогов. Каждый из архивов распаковываем в /usr/share/freeswitch/sound/
источник