Инструменты пользователя

Инструменты сайта


install_local_version_fpbx

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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.или другие дистрибутивы с актуальной базой репозиториев.+  * На сервере (здесь и далее примем,​ что “сервером” может быть как отдельный компьютер,​ \\ так и виртуальная машина,​ VPS/VDS и т .д. \\ Также отметим:​ docker-контейнер с локальной версией системы статистики может быть запущен как на том же сервере,​ что и АТС Asterisk, так и на отдельном сервере) должна быть установлена операционная система Linux семейства Debian не ниже ​8.0 (Ubuntu 14.04  и выше), CentOS не ниже ​7.или другие дистрибутивы с актуальной базой репозиториев.
  
   * 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 version5.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 +
-affiliatesOther 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) 20002018, Oracle, MariaDB Corporation Ab and others
-  - Для начала нужно провести первичную подготовку MySQL-базы данных Asterisk. \\ Зайдите на сервер MySQL и создайте нового пользователя с полными правами,​ например вот так: \\ <code sql>GRANT ALL PRIVILEGES ON *.* TO '​vistepru'​@'​%'​ \+ 
 +Type '​help;'​ or '​\h'​ for helpType '\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.+
install_local_version_fpbx.1554209105.txt.gz · Последние изменения: 2019/04/02 19:45 — Евгений Романенко