Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
install_local_version_fpbx [2023/05/16 05:05] Евгений Романенко |
install_local_version_fpbx [2023/05/16 05:08] (текущий) Евгений Романенко |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Системные требования.===== | ===== Системные требования.===== | ||
| - | * На сервере (здесь и далее примем, что “сервером” может быть как отдельный компьютер, \\ так и виртуальная машина, VPS/VDS и т .д.) должна быть установлена операционная система Ubuntu 22.04. | + | * На сервере (здесь и далее примем, что “сервером” может быть как отдельный компьютер, так и виртуальная машина, VPS/VDS и т .д.) должна быть установлена операционная система Ubuntu 22.04. |
| * IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "Настройки Asterisk". | * IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "Настройки Asterisk". | ||
| Строка 8: | Строка 8: | ||
| ==== Вводная ==== | ==== Вводная ==== | ||
| - | * Данная инструкция написана используя FreePBX версии 13.0.191.11 с Asterisk 13.14.0 на борту. \\ При возникновении каких-либо сложностей/вопросов с более ранними/поздними версиями системы, просьба написать нам на <support@fetg.uz>. | + | * Данная инструкция написана используя FreePBX версии 13.0.191.11 с Asterisk 13.14.0 на борту (но подходит и для новых версий). \\ При возникновении каких-либо сложностей/вопросов с более ранними/поздними версиями системы, просьба написать нам на <support@fetg.uz>. |
| * Для выполнения описанных ниже действий понадобится: \\ - умение подключиться к серверу по ssh \\ - умение редактировать файлы в текстовом редакторе (nano/vim/emacs/etc) \\ - ясная голова и хорошее настроение ;-) | * Для выполнения описанных ниже действий понадобится: \\ - умение подключиться к серверу по ssh \\ - умение редактировать файлы в текстовом редакторе (nano/vim/emacs/etc) \\ - ясная голова и хорошее настроение ;-) | ||
| ==== Настройка ==== | ==== Настройка ==== | ||
| - | Часть шагов по конфигурированию вам поможет сделать установщик, ссылку для скачивания которого пришлют наши инженеры после оплаты\\ | + | - Далее настроим внесение realsrc и realdst-полей в cdr. \\ \\ Отредактируйте /etc/asterisk/extensions_override_freepbx.conf, внеся в него <code>[ext-did-catchall] |
| - | Скачайте, запустите и следуйте его инструкциям.\\ | + | include => ext-did-catchall-custom |
| - | В данном [[https://youtu.be/eYNTPAa06U4|видео]] представлен пример работы установщика на АТС FreePBX \\ | + | exten => _.,1,Noop(Catch-All DID Match - Found ${EXTEN} - You probably want a DID for this.) |
| - | По завершению его работы вам будет предоставлена ссылка для входа в web-интерфейс, но настройка не завершена - нужно выполнить еще несколько манипуляций:\\ | + | exten => _.,n,Set(__FROM_DID=${EXTEN}) |
| - | - Перезагружаем модуль cdr_adaptive_mysql.so <code bash>[root@localhost asterisk]# asterisk -r | + | exten => _.,n,Set(_VISTEPRUREALDST=${FROM_DID}) |
| - | localhost*CLI> module reload cdr_adaptive_odbc.so | + | exten => _.,n,Set(_VISTEPRUREALSRC=${CALLERID(num)}) |
| - | Module 'cdr_adaptive_odbc.so' reloaded successfully. | + | exten => _.,n,Set(CDR(realsrc)=${VISTEPRUREALSRC}) |
| - | localhost*CLI> </code> | + | exten => _.,n,Set(CDR(realdst)=${VISTEPRUREALDST}) |
| - | - Далее настроим внесение realsrc и realdst-полей в cdr. \\ \\ Отредактируйте /etc/asterisk/extensions_override_freepbx.conf, внеся в него <code>[sub-record-check] | + | exten => _.,n,Goto(ext-did,s,1) |
| + | |||
| + | [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) | ||
| Строка 60: | Строка 62: | ||
| exten => recordcheck,n(startrec),Noop(Starting recording: ${ARG2}, ${ARG3}) | exten => recordcheck,n(startrec),Noop(Starting recording: ${ARG2}, ${ARG3}) | ||
| exten => recordcheck,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) | exten => recordcheck,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) | ||
| - | exten => recordcheck,n,ExecIF($[${LEN(${FETGREALDST})}]?NoOP():Set(CDR(realdst)=${ARG3})) | + | exten => recordcheck,n,ExecIF($[${LEN(${VISTEPRUREALDST})}]?NoOP():Set(CDR(realdst)=${ARG3})) |
| - | exten => recordcheck,n,ExecIF($[${LEN(${FETGREALSRC})}]?NoOP():Set(CDR(realsrc)=${FROMEXTEN})) | + | exten => recordcheck,n,ExecIF($[${LEN(${VISTEPRUREALSRC})}]?NoOP():Set(CDR(realsrc)=${FROMEXTEN})) |
| exten => recordcheck,n,Set(__CALLFILENAME=${ARG2}-${ARG3}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID}) | exten => recordcheck,n,Set(__CALLFILENAME=${ARG2}-${ARG3}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID}) | ||
| exten => recordcheck,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT},abi(LOCAL_MIXMON_ID)${MIXMON_BEEP},${MIXMON_POST}) | exten => recordcheck,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT},abi(LOCAL_MIXMON_ID)${MIXMON_BEEP},${MIXMON_POST}) | ||
| Строка 90: | Строка 92: | ||
| exten => in,1,Noop(Inbound Recording Check to ${ARG2}) | exten => in,1,Noop(Inbound Recording Check to ${ARG2}) | ||
| exten => in,n,Set(FROMEXTEN=unknown) | exten => in,n,Set(FROMEXTEN=unknown) | ||
| + | exten => in,n,ExecIf($[${LEN(${FROM_DID})}]?Set(_VISTEPRUREALDST=${FROM_DID})) | ||
| exten => in,n,ExecIf($[${LEN(${CALLERID(num)})}]?Set(FROMEXTEN=${CALLERID(num)})) | exten => in,n,ExecIf($[${LEN(${CALLERID(num)})}]?Set(FROMEXTEN=${CALLERID(num)})) | ||
| - | exten => in,n,Set(_FETGREALDST=${ARG2}) | + | exten => in,n,ExecIf($[${LEN(${VISTEPRUREALDST})}]?NoOp("=== VISTEPRUREALDST has already been set ==="):Set(_VISTEPRUREALDST=${ARG2})) |
| - | exten => in,n,Set(_FETGREALSRC=${FROMEXTEN}) | + | exten => in,n,ExecIf($[${LEN(${VISTEPRUREALSRC})}]?NoOp("=== VISTEPRUREALSRC has already been set ==="):Set(_VISTEPRUREALSRC=${FROMEXTEN})) |
| - | exten => in,n,Set(CDR(realsrc)=${FETGREALSRC}) | + | exten => in,n,Set(CDR(realsrc)=${VISTEPRUREALSRC}) |
| - | exten => in,n,Set(CDR(realdst)=${FETGREALDST}) | + | exten => in,n,Set(CDR(realdst)=${VISTEPRUREALDST}) |
| exten => in,n,Gosub(recordcheck,1(${ARG3},in,${ARG2})) | exten => in,n,Gosub(recordcheck,1(${ARG3},in,${ARG2})) | ||
| exten => in,n,Return() | exten => in,n,Return() | ||
| exten => exten,1,Noop(Exten Recording Check between ${FROMEXTEN} and ${ARG2}) | exten => exten,1,Noop(Exten Recording Check between ${FROMEXTEN} and ${ARG2}) | ||
| - | exten => exten,n,ExecIF($[${LEN(${FETGREALDST})}]?NoOP():Set(CDR(realdst)=${ARG2})) | + | exten => exten,n,ExecIF($[${LEN(${VISTEPRUREALDST})}]?NoOP():Set(CDR(realdst)=${ARG2})) |
| - | exten => exten,n,ExecIF($[${LEN(${FETGREALSRC})}]?NoOP():Set(CDR(realsrc)=${FROMEXTEN})) | + | exten => exten,n,ExecIF($[${LEN(${VISTEPRUREALSRC})}]?NoOP():Set(CDR(realsrc)=${FROMEXTEN})) |
| exten => exten,n,Set(CDR(cnum)=${FROMEXTEN}) | exten => exten,n,Set(CDR(cnum)=${FROMEXTEN}) | ||
| exten => exten,n,Set(CALLTYPE=${IF($[${LEN(${FROM_DID})}]?external:internal)}) | exten => exten,n,Set(CALLTYPE=${IF($[${LEN(${FROM_DID})}]?external:internal)}) | ||
| Строка 155: | Строка 158: | ||
| 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@fetg.uz> и мы поможем с написанием диалплана данного контекста. | + | ;--== end of [sub-record-check] ==--; ==--;</code> \\ и выполните команду <code>dialplan reload</code> в консоли Asterisk \\ |
| + | - Перезагружаем модуль cdr_adaptive_mysql.so <code bash>[root@localhost asterisk]# asterisk -r | ||
| + | localhost*CLI> module reload cdr_adaptive_odbc.so | ||
| + | Module 'cdr_adaptive_odbc.so' reloaded successfully. | ||
| + | localhost*CLI> </code> | ||
| - Теперь научим FreePBX писать табличку queue_log. \\ Отправляемся в web-интерфейс и создаем новый файл под именем **extconfig.conf**, кликнув Add New File. \\ Внести в него нужно лишь одну строчку <code bash>[settings] | - Теперь научим FreePBX писать табличку queue_log. \\ Отправляемся в web-интерфейс и создаем новый файл под именем **extconfig.conf**, кликнув Add New File. \\ Внести в него нужно лишь одну строчку <code bash>[settings] | ||
| queue_log => odbc,asteriskcdrdb</code> Скрин: {{https://img.fetg.uz/i/5347bc8b8a5a1f66dd9c87a7c980.png}} *не забываем про Save и Apply Configs \\ После выполнения данных действий и совершения звонков в очереди, запрос из консоли mysql <code sql>select * from queue_log;</code> должен вернуть вам нечто подобное {{https://img.fetg.uz/i/7d2a89142a30ddd7ea0c36e2443b.png}} *на запрос в скрине не ориентируйтесь, там мы специально добавили условие, чтобы сократить выхлоп | queue_log => odbc,asteriskcdrdb</code> Скрин: {{https://img.fetg.uz/i/5347bc8b8a5a1f66dd9c87a7c980.png}} *не забываем про Save и Apply Configs \\ После выполнения данных действий и совершения звонков в очереди, запрос из консоли mysql <code sql>select * from queue_log;</code> должен вернуть вам нечто подобное {{https://img.fetg.uz/i/7d2a89142a30ddd7ea0c36e2443b.png}} *на запрос в скрине не ориентируйтесь, там мы специально добавили условие, чтобы сократить выхлоп | ||
| - | - Для входа в систему статистики используйте данные авторизации (Email-адрес/Пароль для авторизации) из регистрационного письма. | ||
| \\ | \\ | ||
| На этом настройка завершена, приятного пользования! \\ По любым вопросам/неполадкам/пр. пишите нам на <support@fetg.uz> или прямо из интерфейса, в меню Help Desk. | На этом настройка завершена, приятного пользования! \\ По любым вопросам/неполадкам/пр. пишите нам на <support@fetg.uz> или прямо из интерфейса, в меню Help Desk. | ||
| - | **Некоторые замечания по части 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. | ||
| - | |||
| - | Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | ||
| - | MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'fetguz'@'%' \ | ||
| - | IDENTIFIED BY 'MySuperPassword111' WITH GRANT OPTION; | ||
| - | flush privileges; | ||
| - | quit</code>\\ | ||
| - | - Также проверьте, что MySQL слушает не только 127.0.0.1, но и IP-адрес, по которому к нему будет обращаться система статистики. \\ За это в настройках MySQL отвечает параметр **bind-address**, проще всего закомментировать эту строку в my.cnf и перезагрузить демон MySQL, тогда сервис будет слушать все IP-адреса сервера. | ||