Денис Пестрецов
25.07.2019
2744

Доработка FreePBX. Временные группы (TimeGroups). Решение проблемы добавления кавычек в имя временной группы

В этой статье рассмотрим решение проблемы модуля временных групп, связанной с использованием в имени кавычек. Описание проблемы Сперва рассмотрим, как поведёт себя система при добавлении кавычки в имя временной группы. Для этого переходим в модуль Time Conditions и создаём новую временную группу. Назовём её quote_test ’. Временной диапазон в данном примере совершенно неважен. Нажимаем Submit […]

Доработка FreePBX

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

Описание проблемы

В данной статье будем рассматривать FreePBX 13 версии и модуль Time Conditions версии 13.0.34.5.

Сперва рассмотрим, как поведёт себя система при добавлении кавычки в имя временной группы. Для этого переходим в модуль Time Conditions и создаём новую временную группу. Назовём её quote_test ’.

Создание временной группы

Временной диапазон в данном примере совершенно неважен. Нажимаем Submit для применения настроек. Видим, что, пока всё хорошо, новая временная группа успешно создалась.

Теперь откроем только что созданную группу в режиме редактирования и попытаемся внести какие-нибудь правки. К примеру, удалим кавычку из имени, после чего нажмём кнопку Submit. Видим, что ничего не произошло. В целом, ничего не произойдёт также, если нажать на кнопки Duplicate и Reset.

Работа кнопок действий

Единственное, что осталось работоспособным – кнопка Delete.

Рассмотрим варианты решения возникшей проблемы.

Варианты решения проблемы

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

Удаление, как решение проблемы

Вторым вариантом решения проблемы является удаление кавычки из имени через базу данных. Для этого производим подключение к БД, командой:

mysql -u root -p

После чего вводим пароль от пользователя root.

Если не известен пароль от пользователя root к БД, также можем использовать альтернативный вариант и войти под пользователем freepbxuser:
mysql -u freepbxuser -p

После чего, соответственно, ввести пароль от пользователя freepbxuser.

Пароль от пользователя freepbxuser можно посмотреть в файле /etc/freepbx.conf.

После прохождения авторизации выбираем используемую базу:

use asterisk;

Нас интересует таблица timegroups_groups. Исправление производим следующей командой:

update timegroups_groups set description='quote_test' where description="quote_test '";

Таким образом, мы переименовываем значение с кавычкой на значение, не содержащее её, то есть quote_test ‘ на quote_test.

Смена имени через базу

Если после совершённой замены перейти обратно в веб-интерфейс, то увидим, что всё работает корректно, а имя временной группы успешно сменилось.

Данный способ позволяет сохранить ранее заведённые временные диапазоны и, при этом, вернуть работоспособность модулю.

Результат смены имени

Это основные методы восстановления работы модуля Time Groups во FreePBX. Теперь рассмотрим способы избегания данной ошибки в дальнейшем. Для этого прибегнем к правке кода модуля.

Правка кода

В целом, если Вы редко сталкиваетесь с подобной проблемой, то править код может и не понадобиться, а достаточно будет прибегнуть к одному из двух решений, описанных выше. В данном разделе рассмотрим правки кода, чтобы избежать подобных проблем. Для этого открываем в режиме редактирования файл …/admin/modules/timeconditions/Timeconditions.class.php.

В этом файле находим функцию, отвечающую за добавление временных групп:

public function addTimeGroup($description, $times=null){

В качестве входного параметра в данную функцию передаётся переменная $description. В ней и хранится искомое имя добавляемой временной группы. Сразу первой строкой данной функции добавляем:

$arr_change = array("'","\"");
$description = str_replace($arr_change, "", $description);

В $arr_change объявляем массив нежелательных символов. Следующей строкой удаляем эти самые символы.

Для проверки, что функционал отработал, добавим новую временную группу. В качестве имени укажем new”_quote’_test . После добавления видим, что символы кавычек были удалены из имени.

Результат правки скрипта

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

Здесь, в самом начале функции также добавляем строки, которые были описаны выше, то есть:

$arr_change = array("'","\"");
$description = str_replace($arr_change, "", $description);

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

На этом доработка данного функционала модуля Time Groups завершена.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

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

Безопасен в использовании.

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

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

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

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.