Разбираемся с freepbx и интегрируем его с битрикс24 и не только

Введение

Asterisk — бесплатное решение для организации voip телефонии. Он обладает всеми возможностями обычных АТС, но предоставляет более богатый функционал по управлению звонками. За относительную простоту настройки, по сравнению с цифровыми АТС, бесплатность и широкие возможности он и снискал такую популярность.

Freepbx — бесплатный веб интерфейс для управления астериском. Он существенно упрощает работу с конфигурациями, позволяет выполнять некоторые функции людям, вообще далеким от астериска. Например, с его помощью практически любого можно научить управлять учетными записями пользователей.

Лично я больше люблю настраивать asterisk вручную, нежели с помощью готовой панели. Да, конфигов астериск очень много, они объемные, работать с ними не удобно. Тем не менее, чистый астериск предоставляет практически неограниченную возможность по конфигурированию. С готовой панелью вы будете ограничены ее возможностями. Но если они вас полностью удовлетворяют, то лучше использовать ее.

Дальнейшая установка FreePBX будет проходить по следующей схеме:

  1. Подготовка системы.
  2. Настройка Web сервера.
  3. Установка NodeJS.
  4. Сборка Asterisk из исходников.
  5. Установка Freepbx.

Сразу важное замечание. Официально Freepbx еще не поддерживает Centos 8

После установки панели, она будет показывать в статусе, что версию системы, на которую она установлена, не может определить. Учитывайте этот нюанс. С таким раскладом для прода она еще не готова. Но в целом, если поставить, попробовать и убедиться, что она работает, можно использовать. По сути, эта панель привязана не к системе, а к версиям софта (php, nodejs, asterisk).

Следующая проблема в том, что стабильной считается 14-я версия, но она работает нормально только на php 5.6, для которого уже кончилась поддержка и ставить ее как-то не с руки. Есть 15-я версия, которая нормально работает на php 7, но она все еще в статусе бета, хоть и работает достаточно стабильно. Что ставить себе, решайте сами. Если непременно нужна Centos 8, то в закрытый контур я бы поставил 14-ю версию на php 5.6. Если версия с доступом из инета, то я бы ставил 15-ю на php 7.

Таким образом, если вам нужна максимальная стабильность, то разумнее всего сейчас использовать Centos 7, php 5.6 и Freepbx 14 (моя статья по теме). Пример одного из многочисленных вопросов на официальном сайте по поводу php 7.

Я покажу 3 примера установки Freepbx:

  • 15-я версия на php 7.2
  • 14-я версия на php 7.2
  • 14-я версия на php 5.6

Переходите по меню сразу к нужному разделу.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Изучаем логику работы

Итак для начала, как все это должно работать. При поступления звонка извне на АТС (событие SIP INVITE от провайдера) начинается обработка диалплана(плана набора, dialplan) — правил, что и в каком порядке делать со звонком. Из первого пакета можно получить много информации, которую потом можно использовать в правилах. Отличным инструментом для изучения внутренностей SIP является анализатор sngrep (ссылка) который просто ставится в популярных дистрибутивах через apt install/yum install и подобное, но можно и из исходников собрать. Посмотрим лог звонка в sngrep

В упрощенном виде диалплан занимается только первым пакетом, иногда также в процессе разговора совершается перевод звонков, нажатия кнопок (DTMF), разные интересности типа FollowMe, RingGroup, IVR и прочего.

Что внутри Invite пакета

Собственно большинство простых диалпланов работают с первыми двумя полями и вся логика крутится вокруг DID и CallerID. DID — куда звоним, CallerID — кто звонит.

Но ведь у нас фирма а не один телефон — и значит в АТС скорее всего есть группы вызова (одновременный/последовательный звонок нескольких аппаратов) на городских номерах (Ring Group), IVR (Здравствуйте, вы позвонили… Нажмите один для…), Автоответчики (Phrases), Временные условия (Time Conditions), Переадресация на другие номера или на сотовый (FollowMe, Forward). Это значит, что однозначно определить кому на самом деле придет вызов и с кем будет разговор при поступлении вызова очень сложно. Вот пример начала прохождения типового вызова в АТС наших клиентов

После успешного входа звонка в АТС происходит путешествие его по диалплану в разных «контекстах». Контекст с точки зрения Asterisk — это нумерованный набор команд, каждая из которых содержит фильтр по набранному номеру (он называется exten, для наружного вызова на начальном этапе exten=DID). Командами в строке диалплана может быть все что угодно — внутренние функции (например позвонить внутреннему абоненту — , положить трубку — ), условные операторы (и подобные), переходы к другим правилам этого контекста (), переход другим контекстам в виде вызова функций (Gosub, Macro). Отдельно стоит директива , которая добавляет команды другого контекста в конец текущего контекста. Команды, включенные через include всегда выполняются после команд текущего контекста.

Вся логика работы FreePBX построена на включении друг в друга разных контекстов через include и вызов через Gosub, Macro и обработчики Handler. Рассмотрим контекст входящих вызовов FreePBX

Вызов проходит по всем контекстам сверху вниз по очереди, в кажом контексте могут быть вызовы других контекстов как макросов (Macro), функций(Gosub) или просто переходы (Goto), поэтому реальное дерево того, что вызывается можно отследить только в логах.

Типовая схема настройки типичной офисной АТС показана ниже. При вызове во входящих маршрутах ищется DID, по нему проверяются временные условия, если все в порядке — запускается голосовое меню. Из него по кнопке 1 или таймауту выход на группу дозвона операторов. После окончания звонка вызывается макрос hangupcall, после которого ничего уже в диалплане выполнить не удастся, кроме специальных обработчиков (hangup handler).

Где в этом алгоритме звонка мы должны поставлять информацию о начале звонка в CRM, где начинать запись, где оканчивать запись и отсылать ее вместе с информацией о звонке на CRM?

Пошаговая инструкция по настройке интерфейса FreePBX

Чтобы подробно изучить все модули, придется ознакомиться с официальным руководством по работе с системой. Скачать его можно на официальном сайте Asterisk. Однако ниже приведена простая пошаговая инструкция по настройке FreePBX с нуля, которая позволит использовать базовые опции и приступить к работе:

Нажимаем меню Admin, переходим на вкладку System Admin и активируем FreePBX. Активация необходима для того, чтобы получить доступ к платным модулям и поддержке. Если процедура проведена верно, то при повторном переходе на вкладку System Admin вы увидите меню, представленное на фото.

  • Нажимаем Submit – сохраняем настройки.
  • Переходим на вкладку Time Zone. Выбираем часовой пояс. Нажимаем Submit и сохраняем настройки.
  • На вкладке Storage вводим e-mail, куда будут приходить отчеты о системных ошибках, связанных с жестким диском. Также система предупредит, когда доступное дисковое пространство подойдет к концу.
  • Выбираем пункт меню Settings, вкладка Asterisk SIP Settings и переходим к настройкам этого модуля. На первой вкладке все оставляем по умолчанию, кроме пункта Local Networks. Заполняем его так, как показано на скриншоте. Первое поле – адрес Сети, второе – маска.
  • После этого нажимаем Submit, ждем обновления настроек и нажимает кнопку Apply Config в правом верхнем углу. Далее таким же образом будет необходимо подтверждать все действия.
  • Следующий этап – создание и настройка внутреннего номера. Для этого выбираем меню Applications и переходим к модулю Extension. Когда модуль прогрузится, нажимает Quick Create Extension и заполняем поля, следуя пошаговой инструкции на экране. Вы можете видеть на фото первый шаг.
  • После того как номер создан, переходим к настройке. Для этого нажмите значок с карандашом. Проверяем правильность всех настроек.
  • Регистрируем софтфон. Для этого скачиваем и устанавливаем на компьютер нужное приложение. Мы рассмотрим процесс на примере бесплатного софтфона MicroSIP. Запускаем программу и вводим необходимые параметры, как показано на фото.
  • Нажимаем кнопку «Сохранить». Если все сделано верно, статус в софтфоне должен измениться на онлайн.
  • Теперь переходим к настройке SIP транка – номера, с которого можно звонить на внешние телефоны. Для этого переходим в меню Connectivity и выбираем пункт Trunks.
  • Чтобы создать новый транк, нажимаем Add Trunk. Выбираем SIP Trunk и вводим настройки, которые можно получить у провайдера.
  • В поле Peer Details на вкладке SIP Settings вводим данные, как на скриншоте.
  • Нажимаем Submit и применяем настройки.
  • Настраиваем исходящую маршрутизацию. Для этого переходим в меню Connectivity и выбираем пункт Outbound Routes. Далее нажимаем кнопку Add Outbound Routes и вводим нужные данные.
  • Теперь записываем звуковой файл с приветствием от имени вашей компании. Его будут слышать абоненты, которые позвонят вам. Для записи можно использовать стандартные средства Windows.
  • Далее переходим в меню Admin и выбираем пункт System Recordings. Вводим нужные настройки и загружаем звуковой файл с приветствием.
  • Теперь создаем голосовое меню. Для этого переходим в меню Applications и выбираем пункт IVR. Нажимаем кнопку Add IVR и заполняем нужные данные.
  • Сохраняем и применяем изменения.
  • Создаем входящий маршрут. Для этого переходим в меню Connectivity и выбираем пункт Inbound Routes. Далее нажимаем кнопку Add Inbound Routes и заполняем необходимые поля. Остается сохранить и применить изменения.

Минимальная настройка FreePBX с нуля завершена. Теперь можно совершать исходящие звонки и принимать входящие вызовы. Вами был создан внутренний и зарегистрирован внешний номер. А также настроено приветствие для входящих вызовов.

FreePBX — настройка с нуля: инструкция на News4Auto.ru.

Наша жизнь состоит из будничных мелочей, которые так или иначе влияют на наше самочувствие, настроение и продуктивность. Не выспался — болит голова; выпил кофе, чтобы поправить ситуацию и взбодриться — стал раздражительным. Предусмотреть всё очень хочется, но никак не получается. Да ещё и вокруг все, как заведённые, дают советы: глютен в хлебе — не подходи, убьёт; шоколадка в кармане — прямой путь к выпадению зубов. Мы собираем самые популярные вопросов о здоровье, питании, заболеваниях и даем на них ответы, которые позволят чуть лучше понимать, что полезно для здоровья.

Частые ошибки в установке и настройке Asterisk

Если не планируется принимать анонимные звонки, надо их отключить.

Чтобы решить эту проблему, надо использовать CentOS с пакетом sqlite-devel: yum -y install sqlite-devel

Не получается зарегистрировать Asterisk на сервере ru.

Для решения этой проблемы надо проверить правильность ввода пароля, SIP ID. Также необходимо проверить, как сотрудник создан в «Личном кабинете»: правильно или нет.

Отклонение входящего вызова Астериксом.

Надо проверить, находится ли пользователь в регистрации. Необходимо ввести команду sipshowregistry в консоле Астериск.

Прохождение звука через одну сторону.

Нужно выбрать либо поддержку nat в Asterisk, либо поддержку SIP. Второй вариант решения проблемы – установка directmedia=nonat. Еще одним способом станет установка debug в Asterisk, с помощью которого можно будет отслеживать все запросы и аудио-трафик.

Не получается исходящему вызову пройти.

Для этого надо написать: exten => _XXXXXX,1,Dial(DAHDI/g1/${EXTEN})

Изменив номер, можно решить проблему.

Подготовка

Обновите систему:

sudo dnf -y update

Установите зависимости:

sudo dnf -y groupinstall  "Development Tools"

sudo dnf install -y @php tftp-server ncurses-devel sendmail sendmail-cf newt-devel libxml2-devel libtiff-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget vim php-xml sqlite-devel net-tools gnutls-devel unixODBC

Установка и настройка сервера базы данных MariaDB

Установите MariaDB:

sudo dnf module install mariadb

Проверьте версию MariaDB:

rpm -qi mariadb-server
sudo systemctl enable --now mariadb

Настройте параметры безопасности командой:

mysql_secure_installation

Убедитесь, что вы:

  • Установили пароль пользователя базы данных root
  • Удалили анонимных пользователей
  • Запретили удаленный доступ пользователю root
  • Удалили тестовую базу данных и доступ к ней

Затем проверьте доступ для пользователя root:

mysql -u root -p

Установка Node.js 10 LTS

Проверьте доступные версии Node.js:

sudo dnf module list | grep nodejs

Установите версию по умолчанию (если необходимо можно вручную указать другую версию):

sudo dnf module install nodejs:10

Проверьте установленную версию:

node --version

Установка и настройка Apache Web Server

Установите httpd:

sudo dnf -y install @httpd

Удалите страницу по умолчанию index.html:

sudo rm -f /var/www/html/index.html
sudo systemctl enable --now httpd

Если у вас есть активная служба межсетевого экрана firewalld, откройте порты http и https:

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Установка и настройка PHP

Установите PHP и необходимые расширения:

sudo dnf -y install wget @php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysqlnd php-gettext php-bcmath php-zip php-xml  php-json php-process php-snmp

Скорректируйте настройки httpd

 sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
 sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
 sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini

В /etc/php-fpm.d/www.conf пропишите:

listen.acl_users = asterisk

Запустите php-fpm и httpd:

sudo systemctl enable --now php-fpm httpd
sudo systemctl restart php-fpm httpd

Проверьте статус обоих служб:

sudo systemctl status php-fpm httpd

Краткий обзор имеющихся модулей: управление модулями

В этом разделе можно управлять модулями FreePBX. То есть предусмотрена возможность установки новых, обновление и удаление имеющихся, а также отключение работающих модулей. Новые доступны в 4 источниках:

  • Basic – фундамент системы. Обновлением и обслуживанием его разработчики озабочены сильнее всего.
  • Extended – модули из этого источника пользуются меньшим приоритетом, чем из предыдущего.
  • Unsupported – разработчики FreePBX не несут ответственности за его работоспособность. Так как модули отсюда разрабатывают сторонние программисты.
  • Commercial – коммерческие модули или поддержка.

Есть возможность использовать в качестве источника и ваш ПК. Для этого предусмотрена кнопка Uploud modules. А чтобы установить или обновить модуль, следуйте пошаговой инструкции:

1. Выберите подходящий источник.

2. Воспользуйтесь функцией Check Online.

3. После обновления списка доступных модулей напротив каждого из них появится один их следующих комментариев:

  • not installed – не установлен;
  • online upgrade available – можно обновить;
  • enabled and ap to date – модуль включен и обновлен до последней версии.

Предусмотрена возможность одновременной установки или обновления всех доступных модулей, для этого нажмите соответствующую кнопку.

Установка Mariadb

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Подключаем репозиторий со свежей версией MariaDB. Для этого создаем файл /etc/yum.repos.d/MariaDB.repo следующего содержания.

# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC
# http://downloads.mariadb.org/mariadb/repositories/

name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем MariaDB.

# yum install MariaDB-server MariaDB-client MariaDB-shared

Запускаем mariadb и добавляем в автозагрузку.

# systemctl start mariadb
# systemctl enable mariadb

Установка MySQL(mariadb)

yum -y install mariadb-server mariadb mariadb-devel

Включаем и запускаем сервис Mariadb(MySQL):

systemctl start mariadb.service &&
systemctl enable mariadb.service

Для нормального отображения кириллицы в FreePBX, скомпилируйте коннектор ODBC

или просто установите из репо

yum install -y mysql-connector-odbc
yum update -y

Опционально. Запускаем интерактивный конфигуратор, вас спросят пароль от root и другое:

mysql_secure_installation

Если вы задали пароль root пользователя mysql, позднее, при установке FreePBX выполните скрипт ./install в интерактивном режиме без ключа «-n».

В ходе выполнения установки вам будет предложено ввести пароль пользователя root в mysql.
Введите ранее заданный пароль.

Внутренние номера

Этот раздел позволяет создать внутренние номера FreePBX. Сначала выберите технологию для подключения. Оптимальный вариант – использовать протокол SIP. Для новичков при создании внутреннего номера достаточно задать 3 настройки:

  • User Extension – сам номер. Запрещается указывать следующие: 600-699 (зарезервирован для групп вызовов) и 70-79 (зарезервирован для парковки вызовов).
  • Display Name – имя, под которым номер отображается в списке номеров. Это имя на экране телефона увидит абонент, принимающий звонок.
  • Secret – пароль FreePBX для внутреннего номера (будет сгенерирован автоматически).

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

SIP телефон(софтфон) для 1С:Предприятия 8 и IP АТС (виртуальная и офисная) Промо

«АТС.Ринголайн» и «Ringophone» — это современный взгляд, комплексное решение для организации телефонии в офисе, которое работает прямо из коробки. Решения направлены на организации, где главный упор сделан на коммуникацию и взаимоотношения с клиентами.
RingoPhone 1С — это бесплатный sip телефон, выполненный в виде внешней обработки для 1С. Данная панель телефонии разработана для любых конфигураций 1С:Предприятия 8. RingoPhone работает с АТС на базе Asterisk и провайдерами, которые поддерживают SIP протокол. IP телефония набирает огромную популярность и всё больше возможностей открывается при объединении телефонии и CRM системы. Возможность встроить телефон в свою CRM систему, позволяет осуществлять управление не только на уровне АТС, но и на уровне самого телефона.
АТС.RingoLine изначально создавалась с учётом интеграции с современными CRM системами. CRM системам доступно менять любые настройки АТС. Такие как: создание пользователей, добавление и удаление операторов колл-центра, возможность задавать переадресацию сотрудникам, получать информацию о звонках с АТС, а возможность доработки позволит заложить новые алгоритмы распределения звонков по сотрудникам в зависимости от данных в CRM системе.

1 стартмани

Настройка Web сервера

Для работы панели FreePBX нужен web сервер с php. Я буду использовать версию php 7.1. Более подробно про настройку web срвера на Centos вы можете прочитать отдельно. Сейчас же коротко пройдем по шагам весь процесс.

Подключаем репозиторий epel, если еще не сделали это ранее.

# yum install epel-release

Подключаем remi репозиторий для centos 7.

# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Ставим пакет yum-utils.

# yum install yum-utils

Активируем репу remi-php71, для этого выполняем команду.

# yum-config-manager --enable remi-php71

Устанавливаем необходимые пакеты для работы сервера voip.

# yum install wget php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-gettext php-bcmath php-zip php-xml php-imap php-json php-process php-snmp

Далее установим httpd. Он, по идее, должен установиться в качестве зависимости на предыдущем шаге, но на всякий случай проверьте.

# yum install httpd

Теперь нам нужно изменить некоторые параметры httpd — запустить его от пользователя asterisk и включить опцию AllowOverride. Это можно сделать руками в файле /etc/httpd/conf/httpd.conf, либо автоматически с помощью sed.

# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
# sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf

Мы просто выставили следующие параметры:

  • User asterisk
  • Group asterisk
  • AllowOverride All

Httpd запускать пока не надо, так как пользователя asterisk мы еще не создали. Сделаем это после установки asterisk.

Изменим параметр php, который отвечает за максимальный размер загружаемого файла. Дефолтное значение слишком низкое для freepbx. Для этого в /etc/php.ini устанавливаем параметр.

upload_max_filesize = 120M

Сделать это можно либо руками, либо автоматически с помощью sed.

# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini

С веб сервером закончили. Продолжаем подготовку к установке FreePBX на CentOS.

Инициализация скриптов и создание сервиса

Поскольку схема работы с Битрикс 24, сервисом для AMI не совсем проста и прозрачна, на ней надо остановится отдельно. Астериск при активации AMI просто открывает порт и все. При присоединении клиента она запрашивает авторизацию, потом клиент подписывается на нужные события. События приходят простым текстом, который PAMI преобразует в структурированные объекты и предоставляет возможность задание функции фильтрации только по интересующим событиям, полям, номерам и т.д.

Как только звонок поступает, возникает событие NewExten начиная с родительского контекста , затем идут все события по порядку следования строк в контекстах. При получении информации из заданных в диалплане _custom переменных CallMeCallerIDName и CallStart вызывается

  1. Функция запроса UserID, соответствующий внутреннему номеру, куда пришел звонок. А если это группа дозвона? Вопрос политический, надо создать звонок всем сразу (когда звонят все сразу) или создавать по мере обзвона при поочередном звонке? У большинства клиентов стоит стратегия Fisrt Available, поэтому с этим нет проблем, звонит только один. Но решать вопрос надо

  2. Функция регистрации звонка в Битрикс24, которая возвращает CallID, необходимый потом для сообщения о параметрах звонка и ссылке на запись. Требует или внутренний номер или UserID

После окончания звонка вызывается функция загрузки записи, которая одновременно сообщает статус завершения звонка (Занят, Нет ответа, Успех), а также загружает ссылку на mp3 файл с записью (если есть).

Поскольку модуль CallMeIn.php должен работать непрерывно, для него был создан SystemD файл запуска callme.service, который надо положить в /etc/systemd/system/callme.service

инициализация и запуск скрипта происходит через systemctl или service

Сервис будет сам перезапускаться по необходимости (при падениях). Сервис слежения за входящими не требует установки веб сервера, нужен только php (который точно есть на сервере FeePBX). Но при отсутствии доступа к записям звонков через Веб сервер (еще и с https) не будет возможности прослушивать записи разговоров.

Теперь поговорим про исходящие звонки. У скрипта CallMeOut.php две функции:

  • Инициация звонка при поступлении запроса на php скрипт (в том числе по кнопке «Позвонить» в самом битриксе). Без веб сервера не работает, запрос поступает через HTTP POST, в запросе содержится токен

  • Сообщение о звонке, его параметрах и записях в Битрикс. Происходит по инициативе Asterisk в диалплане при окончании звонка

Веб сервер нужен только для двух вещей — загрузка файлов записей битриксом (по HTTPS) и вызов скрипта CallMeOut.php. Можно использовать встроенный сервер FreePBX, файлы для которого лежат /var/www/html, можно установить другой сервер или прописать другой путь.

Upgrade to FreePBX 15 from FreePBX 13

The recommended path from FreePBX 13 to FreePBX-15 is to use the «Backup & Restore» functionality to take a Backup from the working FreePBX-13 system and then restore to newly installed FreePBX-15 system.The following steps will have you up and running on a FreePBX-15 system with the same configuration as your existing FreePBX-13 system. 

  1. Take Backup of your FreePBX-13 System.
    1. Take full backup of your FreePBX-13 system using Backup & Restore module of FreePBX-13.  Please refer to Using the Backup module for further details of how to configure and take full backup of your 13 system.
  2. Install FreePBX-15 on another server.
  3. Activate FreePBX-15 
    1.  Once FreePBX-15 installation is done, activate your FreePBX-15. Please refer to System Admin — Activation for more details about the system activation process.
  4. Upgrade all FreePBX-15 modules to current 
    1. After activation , FreePBX will show you a pop up with a list of available module updates. Otherwise you can check yourself by using «Check Online» function in Module Admin. Please refer to  for more details.
  5. Restore 
    1. Please note that Backup & Restore has been completely re-designed in FreePBX-15 so you will see GUI differences in the way it used to work in FreePBX-13 vs FreePBX-15.
    2. Please refer to Backup and Restore FreePBX 15+ for more about the FreePBX-15 Backup & Restore module. 
    3. We can restore the configurations by uploading the FreePBX-13 generated configuration backup to «FreePBX GUI → Admin → Backup & Restore → Restore tab».
    4. After a successful restore , your FreePBX-13 is successfully replicated to new FreePBX-15.

Подготовка системы

Я рекомендую ознакомиться с моим материалом на тему первоначальной настройки centos 7. Многие вопросы там рассмотрены подробнее, здесь же я не буду на них задерживаться, просто выполню необходимые команды.

Прежде чем мы начнем устанавливать asterisk, нам надо выполнить целый ряд подготовительных действий. Первым делом отключаем selinux. Для этого открываем файл:

# mcedit /etc/sysconfig/selinux

и устанавливаем значение SELINUX=disabled. После этого применяем настройку без перезагрузки сервера:

# setenforce 0

Рекомендация по отключению selinux дается в официальной инструкции по установке freepbx, так как это может привести к нарушению процесса инсталляции.

Дальше обновляем систему и ставим пакеты Development Tools:

# yum update
# yum groupinstall core base "Development Tools"

Доступ в web интерфейс Freepbx

Переходим в браузере по ip адресу или доменному имени сервера и создаем учетную запись администратора Freepbx. При первом заходе в 14-ю версию я увидел ошибку.

Текст ошибки.

Whoops \ Exception \ ErrorException (E_DEPRECATED)
Methods with the same name as their class will not be constructors in a future version of PHP; gui_hidden has a deprecated constructor in /var/www/html/admin/libraries/components.class.php on line 571

Насколько я понял, это сообщение о том, что используется какая-то конструкция, которая объявлена Deprecated и скоро не будет работать. Что с этим делать сейчас, я не понял. Нашел баг репорт с этой ошибкой — https://issues.freepbx.org/browse/FREEPBX-19941 Он почему-то отклонен, помещен как дублирующий, но найти эту же ошибку в трекере я не смог.

Если взять версию php 5.6, то там этой ошибки не будет. Freepbx 14 официально поддерживает только 5.6, но откатываться на нее совсем не хочется.

Я решил просто отключить обработчик ошибок bootstrap. Для этого открываем конфиг freepbx и добавляем туда новое значение.

# mcedit /etc/freepbx.conf
$bootstrap_settings = false;

Заходим в web интерфейс freepbx еще раз и создаем администратора.

Потом, используя созданную учетку, логинимся в панель и указываем начальные настройки. Рекомендую выбрать английский язык. Как я уже говорил, перевод на русский так себе, с ним иногда бывает сложно понять суть настроек.

После этого оказываетесь в веб панели Freepbx. Нажмите сверху на Dashboard и увидите сводную информацию по системе. Теперь можно начинать ее настройку, но это тема отдельной статьи. Возможно, до нее у меня когда-нибудь дойдут руки.

Docker

Если хочется быстро попробовать решение — есть вариант с Docker — быстро создать контейнер, дать ему порты наружу, подсунуть файлы настроек и попробовать (это вариант с LetsEncrypt контейнером, если сертификат уже есть, просто нужно перенаправить обратный прокси на веб сервер FreePBX (ему мы дали другой порт — 88), LetsEncrypt в докере по мотивам этой статьи

Запускать файл надо в скачанной папке проекта (после git clone), но предварительно залезть в конфиги астериска (папка asterisk) и прописать там пути к записям и URL вашего сайта

Этот файл docker-compose.yaml, запускается через

Если nginx не запустился, значит что то не так с конфигурацией в папке nginx/ssl_docker.conf

Установка Asterisk

Установка и настройка окажется простой, если соблюдать пошагово инструкцию.

Если нужна только VoIP-сеть, то можно установить только asterisk. Но лучшим вариантом станет установка трех пакетов.

Драйвер dahdi используется при цифровом оборудовании. Для обмена данными с периферийным оборудованием нужен драйвер. Принцип настройкиAsterisk заключается в следующем:

сервер Asterisk<->chan_dahdi<-> Драйвер dahdi<-> Карта <-> Телефон/Коммутатор/Телефонная сеть

Библиотека libpri необходима для использования TDM-интерфейсов ISDN: PRI (PrimaryRateInterface) и BRI (BasicRateInterface). Libri делится на каналы по времени – Time Division Multiplexing.

Можно рассмотреть установку Asterisk из исходников. Такой способ установки дает возможность установить Asterisk с нуля.

Важно! Есть несколько условий для установки и настройки программы

  • Версия ядра системы должна быть не ниже 2.6.
  • Обязательное наличие файлов заголовков в системе.
  • Присутствие компилятора gccctermcap и openssl.

Проверив все эти моменты, можно приступать к установке. Для этого надо перейти на сайте в Download и загрузить такие архивы:

  • «asterisk»
  • «asterisk-sounds»
  • «asterisk-addons»
  • «zaptel»
  • «libpri»

После этого скопировать файлы на сервер и разместить их в папке «/usr/src/.».

Далее надо запустить терминал в сервере.

Затем распаковать каждый архив командой «tar-xzf<имя >tar.gz».

Потом перейти в каждую папку при помощи команды «cd<имя>».

Закончив, надо выполнить определенные команды для настройки:

  • «./configure» (это подготовит программу к сборке)
  • «make» (команда для сборки)
  • «makeinstall» (установка программы)

Для установки необходимых пакетов не нужно прилагать особых усилий. Астериск обладает автоматизацией пакетов, поэтому для этого нужен скрипт install_prereq, который можно найти в подкаталоге contrib/scripts, где есть исходные коды.

Нужно зайти в этот подкаталог и запустить скрипт. С помощью него необходимые пакеты будут установлены.

Таким образом, при соблюдении всех действий Asterisk для чайников будет готов.

Заключение

В данной инструкции мы аккуратно собрали все необходимые компоненты для настройки связки asterisk+freepbx на сервере CentOS 7. Скачали последние версии софта, собрали его из исходников и установили. Таким образом мы полностью подготовили сервер к конфигурированию телефонии. Если сервер будет смотреть в интернет, нужно обязательно не забыть аккуратно настроить firewall и хотя бы fail2ban для обеспечения минимальной, хотя в большинстве случаев и вполне достаточной, защиты.

Примером настройки asterisk с нуля может служить указанная статья. Ее можно взять за основу для целостного понимания базового функционала, который можно реализовать с помощью астериск.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Заключение

Настройка Asterisk с нуля не окажется трудной как специалисту, так и новичку. Asterisk является отличным решением компьютерной телефонии.

Сервис работает на многих операционных системах, которые можно подобрать под версию ядра системы пользователя. Астериск обладает множеством функций, таких как конференц-связь, голосовая почта, Calldetailrecord и другие.

Астериск доступен в Ubuntu, но его также можно установить и на Windows.

Для удобства можно использовать Freepbx, так как это функциональный интерфейс для настройки Астериска. Он переводит текст программы на понятный язык, что облегчает задачу. С помощью данной программы можно легко менять количество абонентов, так как платформа очень гибкая и многое позволяет.

Не надо ставить лишние пробелы и ошибаться в написании команд. Совсем незаметные ошибки могут не допустить работу программы.

Разобравшись в этой системе, можно получить много новых возможностей, которые не были доступны всем раньше.

  • http://belokonevit.blogspot.com/2018/04/asteriskinstall.html
  • https://iwsm.ru/programmy/freepbx-nastroyka-s-nulya
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: