Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
install_local_version_fpbx [2019/04/02 19:45] Евгений Романенко |
install_local_version_fpbx [2019/06/21 12:04] Евгений Романенко |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Системные требования.===== | ===== Системные требования.===== | ||
- | * На сервере (здесь и далее примем, что “сервером” может быть как отдельный компьютер, \\ так и виртуальная машина, VPS/VDS и т .д. \\ Также отметим: docker-контейнер с локальной версией системы статистики может быть запущен как на том же сервере, что и АТС Asterisk, так и на отдельном сервере) должна быть установлена операционная система Linux семейства Debian не ниже 7.0 (Ubuntu 14.04 и выше), CentOS не ниже 6.5 или другие дистрибутивы с актуальной базой репозиториев. | + | * На сервере (здесь и далее примем, что “сервером” может быть как отдельный компьютер, \\ так и виртуальная машина, VPS/VDS и т .д. \\ Также отметим: docker-контейнер с локальной версией системы статистики может быть запущен как на том же сервере, что и АТС Asterisk, так и на отдельном сервере) должна быть установлена операционная система Linux семейства Debian не ниже 8.0 (Ubuntu 14.04 и выше), CentOS не ниже 7.0 или другие дистрибутивы с актуальной базой репозиториев. |
* IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "Настройки Asterisk". | * IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "Настройки Asterisk". | ||
Строка 14: | Строка 14: | ||
==== Настройка ==== | ==== Настройка ==== | ||
- | В поставке по умолчанию (что называется "из коробки") FreePBX ведет БД asteriskcdrdb, а точнее табличку cdr, не совсем так, как это нужно для правильной работы системы статистики ViStep.RU. Также она совсем не ведет записи в таблицу queue_log, что является необходимым. \\ Поэтому нам потребуется выполнить несколько шагов настройки, для достижения нужного поведения FreePBX. | + | Часть шагов по конфигурированию вам поможет сделать установщик, доступный для скачивания по [[https://vistep.ru/statlocal/installer|данной ссылке]]\\ |
- | - Начнем с таблицы cdr. \\ Подключимся к серверу по ssh, а затем к консоли MySQL-сервера <code bash>[root@localhost ~]# mysql asteriskcdrdb | + | Скачайте, запустите и следуйте его инструкциям.\\ |
- | Welcome to the MySQL monitor. Commands end with ; or \g. | + | В данном [[https://youtu.be/eYNTPAa06U4|видео]] представлен пример работы установщика на АТС FreePBX \\ |
- | Your MySQL connection id is 1686 | + | По завершению его работы вам будет предоставлена ссылка для входа в web-интерфейс, но настройка не завершена - нужно выполнить еще несколько манипуляций:\\ |
- | Server version: 5.1.73 Source distribution | + | - Перезагружаем модуль cdr_adaptive_mysql.so <code bash>[root@localhost asterisk]# asterisk -r |
- | + | ||
- | Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. | + | |
- | + | ||
- | Oracle is a registered trademark of Oracle Corporation and/or its | + | |
- | affiliates. Other names may be trademarks of their respective | + | |
- | owners. | + | |
- | + | ||
- | Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.</code> | + | |
- | - Добавим табличке cdr новые поля id и filename и повесим триггер на INSERT для заполнения filename <code sql>alter table cdr add column filename varchar(120) default 'none'; | + | |
- | update cdr set filename=recordingfile; | + | |
- | alter table cdr add column id int(11) auto_increment primary key; | + | |
- | DELIMITER $$ | + | |
- | CREATE TRIGGER `before_insert_cdr` BEFORE INSERT ON `cdr` FOR EACH ROW | + | |
- | BEGIN | + | |
- | SET NEW.filename=NEW.recordingfile; | + | |
- | END $$ | + | |
- | DELIMITER ; | + | |
- | </code> При успешном выполнении запросов все должно выглядеть примерно вот так: {{https://img.vistep.ru/i/db8d2543734bb135bdf8c97348a6.png}} {{https://img.vistep.ru/i/3e7f9092a8223081d718eeff6453.png}} | + | |
- | - Совершим вызов и проверим, что поле filename заполняется {{https://img.vistep.ru/i/e2659473414c0af4ae19163751fd.png}} | + | |
- | - Теперь нам необходимо добавить два новых поля в таблицу cdr - realdst и realsrc, в которые будут записываться номера звонящего и назначения (например, не номер оператора очереди, а наш городской номер, на который пришел вызов извне для realdst или не номер транка, а номер внутреннего абонента для realsrc). \\ Для этого выполним sql-запросы <code sql>ALTER TABLE `cdr` ADD `realsrc` VARCHAR(80) NOT NULL DEFAULT ''; | + | |
- | ALTER TABLE `cdr` ADD `realdst` VARCHAR(80) NOT NULL DEFAULT ''; | + | |
- | UPDATE cdr SET realsrc=src; | + | |
- | UPDATE cdr SET realdst=dst;</code> | + | |
- | - Дабы наши действия возымели силу, модулю cdr_adaptive_mysql.so нужно подсказать, что его конфиг изменился. Подключаемся к консоли asterisk и релоадим модуль вот так: <code bash>[root@localhost asterisk]# asterisk -r | + | |
localhost*CLI> module reload cdr_adaptive_odbc.so | localhost*CLI> module reload cdr_adaptive_odbc.so | ||
Module 'cdr_adaptive_odbc.so' reloaded successfully. | Module 'cdr_adaptive_odbc.so' reloaded successfully. | ||
localhost*CLI> </code> | localhost*CLI> </code> | ||
- | - Пришло время последнего, но отнюдь не маловажного шага в разрезе конфигурирования таблицы cdr - внесение правильных src- и dst-полей. \\ \\ Отредактируйте /etc/asterisk/extensions_override_freepbx.conf, внеся в него <code>[sub-record-check] | + | - Далее настроим внесение realsrc и realdst-полей в cdr. \\ \\ Отредактируйте /etc/asterisk/extensions_override_freepbx.conf, внеся в него <code>[sub-record-check] |
include => sub-record-check-custom | include => sub-record-check-custom | ||
exten => s,1,GotoIf($[${LEN(${FROMEXTEN})}]?initialized) | exten => s,1,GotoIf($[${LEN(${FROMEXTEN})}]?initialized) | ||
Строка 178: | Строка 154: | ||
exten => parking,n,Return() | exten => parking,n,Return() | ||
- | ;--== end of [sub-record-check] ==--;</code> \\ после чего выполните команду <code>dialplan reload</code> в консоли Asterisk \\ **Код проверен на FreePBX 13.0.191.11 и 14.0.2.10 .** \\ Если мажорная (13 в данном примере) версия FreePBX у вас отличается, то контекст [sub-record-check] может быть немного другим. Напишите нам на <support@vistep.ru> и мы поможем с написанием диалплана данного контекста. | + | ;--== end of [sub-record-check] ==--;</code> \\ и выполните команду <code>dialplan reload</code> в консоли Asterisk \\ **Код проверен на FreePBX 13.0.191.11 и 14.0.2.10 .** \\ Если мажорная (13 в данном примере) версия FreePBX у вас отличается, то контекст [sub-record-check] может быть немного другим. Напишите нам на <support@vistep.ru> и мы поможем с написанием диалплана данного контекста. |
- | - С cdr разобрались, дело за queue_log. Эта таблица нужна нам для того, чтобы понимать какие события происходили в очередях Asterisk. Перво-наперво создадим ее <code sql>CREATE TABLE `queue_log` ( | + | - Теперь научим FreePBX писать табличку queue_log. \\ Отправляемся в web-интерфейс и создаем новый файл под именем **extconfig.conf**, кликнув Add New File. \\ Внести в него нужно лишь одну строчку <code bash>[settings] |
- | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, | + | queue_log => odbc,asteriskcdrdb</code> Скрин: {{https://img.vistep.ru/i/5347bc8b8a5a1f66dd9c87a7c980.png}} *не забываем про Save и Apply Configs \\ После выполнения данных действий и совершения звонков в очереди, запрос из консоли mysql <code sql>select * from queue_log;</code> должен вернуть вам нечто подобное {{https://img.vistep.ru/i/7d2a89142a30ddd7ea0c36e2443b.png}} *на запрос в скрине не ориентируйтесь, там мы специально добавили условие, чтобы сократить выхлоп |
- | `time` timestamp NULL DEFAULT '0000-00-00 00:00:00', | + | - Для входа в систему статистики используйте данные авторизации (Email-адрес/Пароль для авторизации) из регистрационного письма. |
- | `callid` varchar(32) NOT NULL DEFAULT '', | + | \\ |
- | `queuename` varchar(32) NOT NULL DEFAULT '', | + | На этом настройка завершена, приятного пользования! \\ По любым вопросам/неполадкам/пр. пишите нам на <support@vistep.ru> или прямо из интерфейса, в меню Help Desk. |
- | `agent` varchar(32) NOT NULL DEFAULT '', | + | |
- | `event` varchar(32) NOT NULL DEFAULT '', | + | |
- | `data1` varchar(100) NOT NULL DEFAULT '', | + | |
- | `data2` varchar(100) NOT NULL DEFAULT '', | + | |
- | `data3` varchar(100) NOT NULL DEFAULT '', | + | |
- | `data4` varchar(100) NOT NULL DEFAULT '', | + | |
- | `data5` varchar(100) NOT NULL DEFAULT '', | + | |
- | PRIMARY KEY (`id`) | + | |
- | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;</code> | + | |
- | - Научим FreePBX(читай Asterisk) писать туда все то, что нам нужно. \\ Отправляемся в web-интерфейс по знакомой дорожке и создаем новый файл под именем **extconfig.conf**, кликнув Add New File. \\ Внести в него нужно лишь одну строчку <code bash>[settings] | + | |
- | queue_log => odbc,asteriskcdrdb</code> Скрин: {{https://img.vistep.ru/i/5347bc8b8a5a1f66dd9c87a7c980.png}} *не забываем про Save и Apply Configs \\ После выполнения данных действий и совершения звонков в очереди, запрос из консоли mysql <code sql>select * from queue_log;</code> должен вернуть вам нечто подобное {{https://img.vistep.ru/i/7d2a89142a30ddd7ea0c36e2443b.png}} *на запрос в скрине не ориентируйтесь, там я специально добавил условие, чтобы сократить выхлоп | + | |
+ | **Некоторые замечания по части MySQL.** | ||
+ | - В ходе своей работы установщик подключается к БД Asterisk, для чего ему необходимы имя пользователя и пароль. Создать их можно, например, вот так: <code sql> | ||
+ | mysql -uroot -p | ||
+ | Enter password: | ||
+ | Welcome to the MariaDB monitor. Commands end with ; or \g. | ||
+ | Your MariaDB connection id is 3359 | ||
+ | Server version: 5.5.60-MariaDB MariaDB Server | ||
- | **Установка, настройка и запуск контейнера.** | + | Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. |
- | - Для начала нужно провести первичную подготовку MySQL-базы данных Asterisk. \\ Зайдите на сервер MySQL и создайте нового пользователя с полными правами, например вот так: \\ <code sql>GRANT ALL PRIVILEGES ON *.* TO 'vistepru'@'%' \ | + | |
+ | Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | ||
+ | |||
+ | MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'vistepru'@'%' \ | ||
IDENTIFIED BY 'MySuperPassword111' WITH GRANT OPTION; | IDENTIFIED BY 'MySuperPassword111' WITH GRANT OPTION; | ||
flush privileges; | flush privileges; | ||
- | quit</code>Этот шаг необходим для работы мастера настройки БД, речь о котором пойдет несколько позже. \\ Также проверьте, что MySQL слушает не только 127.0.0.1, но и IP-адрес, по которому к нему будет обращаться система статистики. \\ За это в настройках MySQL отвечает параметр **bind-address**, проще всего закомментировать эту строку в my.cnf, тогда mysql-сервер будет слушать на всех IP-адресах сервера. | + | quit</code>\\ |
- | - Теперь зайдите на сервер, где предполагаете запускать docker-контейнер, по ssh. Скачайте архив контейнера по предоставленной ссылке, например (это пример!!!!!, корректная ссылка высылается на почту после оплаты): <code bash>wget https://vistep.ru/stat.vistep.ru_local_1.0.3.tgz</code> Если в вашей системе нет wget, то воспользуйтесь вот этой командой: <code bash>curl -o stat.vistep.ru_local_1.0.3.tgz https://vistep.ru/stat.vistep.ru_local_1.0.3.tgz</code> | + | - Также проверьте, что MySQL слушает не только 127.0.0.1, но и IP-адрес, по которому к нему будет обращаться система статистики. \\ За это в настройках MySQL отвечает параметр **bind-address**, проще всего закомментировать эту строку в my.cnf и перезагрузить демон MySQL, тогда сервис будет слушать все IP-адреса сервера. |
- | - Далее перейдите в папку с архивом контейнера (здесь и далее это /root/) и загрузите его в docker <code bash>docker load -i stat.vistep.ru_local_1.0.3.tgz</code> Проверьте все ли в порядке, команда <code bash>docker images</code> должна вернуть нечто подобное \\ {{:screen_shot_2017-04-21_at_12.58.01.png|}} | + | |
- | - Следующим пунктом будет настройка возможности прослушивать и скачивать файлы разговоров в интерфейсе статистики. Как и было описано ранее, вы можете запустить docker-контейнер с ПО как на сервере с АТС, так и на отдельном сервере. Для запуска docker там же, где и Asterisk, вам нужно выполнить такую команду:<code bash>docker run --name=stat.vistep.ru_local_1.0.3 -p 8768:80 -v /var/spool/asterisk/monitor:/var/www/html/public/user/УНИКАЛЬНЫЙ_КАТАЛОГ_ПОЛЬЗОВАТЕЛЯ/some/path/to/files/ --restart=always -d stat.vistep.ru_local_1.0.3 </code> В консоле должно отобразиться подобное:{{:screen_shot_2017-04-21_at_13.42.44.png|}} \\ УНИКАЛЬНЫЙ_КАТАЛОГ_ПОЛЬЗОВАТЕЛЯ - будет выслан Вам вместе с корректной ссылкой для скачивания контейнера \\ Если же запуск осуществляется на отдельном сервере, то сначала примонтируйте папку с файлами с сервера АТС на сервер с docker по NFS. Вот пример такой конфигурации: файл **/etc/exports** на сервере с Asterisk:<code bash>/records/mp3/ 192.168.0.0/255.255.255.0(rw,insecure,nohide,all_squash,anonuid=1001,anongid=1001,no_subtree_check)</code>а на сервере с docker, в **/etc/fstab** <code bas>ASTERISK_IP_ADDRESS:/records/mp3 /root/records nfs rsize=8192,wsize=8192 0 0</code> *здесь /records/mp3 - это путь к файлам записей на АТС \\ Затем выполните запуск уже знакомой командой <code bash>docker run --name=stat.vistep.ru_local_1.0.3 -p 8768:80 -v /root/records:/var/www/html/public/user/УНИКАЛЬНЫЙ_КАТАЛОГ_ПОЛЬЗОВАТЕЛЯ/some/path/to/files/ -d stat.vistep.ru_local_1.0.3</code>\\ Ваш УНИКАЛЬНЫЙ_КАТАЛОГ_ПОЛЬЗОВАТЕЛЯ уточняйте у тех. поддержки ViStep.RU | + | |
- | - Далее откройте web-браузер и перейдите по ссылке <code>http://IP_ВАШЕЙ_АТС:8768/install.html</code> Вас встретит мастер настройки {{:screen_shot_2017-04-21_at_13.54.58.png|}} | + | |
- | - Заполните все поля (на шаге номер 1 мы создали нужного пользователя) и нажмите кнопку Тест {{https://img.vistep.ru/i/5934f852e25705ba3268cbaca3cc.png}} | + | |
- | - При успешном прохождении теста на подключение к БД вы увидите {{::screen_shot_2017-04-21_at_14.00.33.png|}} \\ Если все так, жмите Настроить БД | + | |
- | - Здесь мастер сообщит, что все прошло успешно и вы можете перейти по ссылке <code>http://IP_ВАШЕЙ_АТС:8768</code> т.е. к авторизации в системе {{:screen_shot_2017-04-21_at_14.11.13.png|}} | + | |
- | - Для входа в систему статистики используйте данные авторизации (Email-адрес/Пароль для авторизации) из регистрационного письма. | + | |
- | + | ||
- | На этом настройка завершена, приятного пользования! \\ По любым вопросам/неполадкам/пр. пишите нам на <support@vistep.ru> или прямо из интерфейса, в меню Help Desk. | + |