Сотрудники нашей организации работают с обращениями клиентов в системе обработки электронных заявок ZENLIX v2.95. Для получения доступа к системе новые клиенты проходят процедуру регистрации. К сожалению, средствами самой системы нельзя изменить стандартную регистрационную форму, обязательными полями которой являются только имя и email клиента. Это очень неудобно с точки зрения сбора информации о клиенте и предприятии, которое он представляет. Правда, внутри самой системы профиль пользователя можно расширить за счет т.н. дополнительных полей, создаваемых администратором. Однако клиенты, как правило, после первичной регистрации такие поля не заполняют, поэтому проблема наполнения клиентской базы таким образом не решается.
Мы поставили задачу разработать механизм сбора по установленной форме, обработки и сохранения расширенной информации о новом клиенте на этапе его регистрации без изменения кода системы ZENLIX.
Альтернативу стандартной процедуре регистрации мы реализовали на основе открытых сервисов Google. Так, на первом этапе клиенты заполняли специально разработанную нами многоуровневую Google form, ответы из которой сохранялись в Google spreadsheet. Затем администратор создавал нового пользователя средствами системы ZENLIX, и переносил в его профиль анкетные данные из Google spreadsheet.
С ростом количества клиентов возник вопрос автоматизации процесса. С помощью скрипта на языке R
и стандартных средств Windows мы перешли к новой схеме (последовательности) регистрации клиента в системе:
При этом запуск R-script осуществляется по расписанию через планировщик Windows
Предложенный механизм позволяет разработать и использовать регистрационную форму любого уровня сложности (на основе сервиса Google). Добавление пользователя через R-script реализуется средствами самой системы (через эмуляцию действий администратора с помощью библиотеки RSelenium), а перенос информации из Google spreadsheet в БД phpmyadmin - с помощью запросов на языке SQL
. Это позволяет не менять (открытый) код системы и избежать сбоев в ее работе. Кроме того, сотрудники организации имеют доступ к полноценной БД анкетных данных клиентов (shared spreadsheet) также и вне системы ZENLIX.
Однако для работы R-script необходимо выделить ПК с установленным R
и другим ПО согласно техническим требованиям (см. ниже).
Для автоматизации регистрации пользователей следует предварительно настроить сервисы Google и подготовить рабочий ПК для запуска R-script, а именно:
R
(текущая версия R-3.3.3) и загрузить дополнительные библиотеки (см. ниже)R
- получить shareable link на файлR
и работы c Selenium Server -
R
- загрузить curl.exe и прописать путь к файлу в системной переменной PATH (при этом важно работать с именно с файлом selenium-server-standalone-3.0.1.jar)mailR
через gmail SMTP - включить разрешение для "less secure apps" в своем аккаунте Примечание. Если проблема с запуском Selenium Server через rsDriver() не возникает, то необходимости в совершении действий пп.4-5 нет.
Минимальный набор сторонних библиотек:
library(gsheet) #импорт данных
library(readr) #чтение csv
library(DBI) #для работы RMySQL
library(RMySQL) #работа с БД phpmyadmin
library(RSelenium) #навигация в Интернет
library(mailR) #рассылка почты
Общая последовательность такая:
SQL
-запросыПримечание 1. Подробные комментарии приведены внутри кода в файле zen_reg.R, доступного в этом репозитории.
Примечание 2. Первая проверка на уникальность логина (email) нового пользователя реализована в электронной таблице через функцию поиска дубликатов
Примечание 3. Автоматический запуск R-script из bat-файла по расписанию реализован через создание задачи в планировщике Windows. В связи с необходимостью работы на ПК с разными сетевыми настройками bat-файл можно запускать с аргументами "atHome" и "atWork"
Таким образом, без привлечения сторонних разработчиков и изменения кода системы ZENLIX на основе бесплатного ПО (кроме планировщика Windows) и открытых сервисов Google средствами языка R
создан механизм, который обеспечивает полноценный сбор сведений (и их перенос) о клиенте в момент регистрации. Преимуществом такого подхода является промежуточная сводная таблицу с анкетными данными клиентов (Google spreadsheet), которую иначе из системы можно получить только путем объединения таблиц users и user_data.
Если решить проблемы кодировки и работы на ПК в корпоративной сети, то R-script можно существенно оптимизировать и перейти к рассылке писем на основе markdown или html разметки.