Как мы делали первый виджет для Мегаплана
Первое полноценное приложение, которое мы решили делать на этой технологии – интеграция Мегаплана с инструментом e-mail маркетинга Unisender.
Задача: использовать возможности гибкой группировки пользователей в Мегаплане и дополнить эту функциональность автоматической синхронизацией со списками рассылок.
Основная логика передачи списков клиентов работает на языке Python 2.7, что позволяет обрабатывать большие количества данных без больших задержек в реальном времени. Виджет получает списки групп клиентов из Мегаплана, далее вам нужно указать какие группы соответствуют спискам рассылок из Unisender и все остальное за вас сделает наша интеграция.
Сам виджет работает на технологии ReactJS и в реальном времени без лишних нагрузок и запросов связывает API-интерфейсы двух сервисов. Работает быстро и легко в любом браузере.
Первым делом мы сделали 3 юзкейса, на основе которых уже думали, как будет выглядеть интерфейс виджета и работать основная логика.
Придумали основную схему работы синхронизатора. Здесь все просто: клиентов тянем из групп (сущность в Мегаплане) и синхронизируем с списками в Unisender
MGTSK в нашем случае это «мозги» для обработки контактов.
Прототип собрался очень быстро, и мы начали собирать обратную связь у потенциальных пользователей. Портреты клиентов взяли из основного продукта – для первой версии сложностей не возникло.
Полное техзадание ушло разработчику, а мы принялись за работу по фронтенду. Спустя несколько итераций был готов дизайн и первая версия API для обмена контактов.
Не все так хорошо
И тут мы столкнулись с проблемой, что Мегаплан не отдает список групп клиентов, а позволяет только делать выборки на основе идентификатора фильтра.
Костыль первый и единственный
Группы клиентов получаем через DOM-модель прям со страницы в Мегаплане.
Проблему решили и стали обмениваться клиентами. Нагрузочный тест в 100 клиентов сработал хорошо, а вот больше 500 клиентов Мегаплан отказался отдавать за один раз – если вам пригодится такая информация, то опрашивайте по 200-300 клиентов за раз :)
Виджет работает только на странице модуля «Клиенты» и вызывается по кнопке «Синхронизировать».
Потом началась борьба с особенностями API от Unisender, и на выяснение нюансов ушло два дня. Никаких дополнительных плюшек мы не реализовывали, только базовый функционал, но и на ровной дороге могут встретиться кочки. Впрочем, спасибо техническим специалистам Unisender.
Особенностью при тестировании оказалось, что после формирования списка рассылки индекс обновляется раз в три часа.
Это правило в сервисе работает и при импорте контактов через excel/csv.
А еще мы подготовили основу для триггерных рассылок из CRM: например, в сделке на определенном этапе сделки при выполнении набора условий клиенту можно автоматически отправить SMS или e-mail, но эта опция пока никак не автоматизирована.
В финальной версии интеграции также можно будет отслеживать статистику отправки и получения писем клиентами прям в карточке клиента в CRM. Функционал тестируем и наблюдаем, как наш движок ведет себя на больших нагрузках. Для примера скриншот:
На этой неделе мы работаем над стабильностью обмена и настройкой боевого сервера для интеграции и внедряем первому клиенту виджет. В следующей статье хочу рассказать о оптимизации и живучести выбранных нами технологий, а также о реальной пользе клиентам от интеграции.
Спасибо за ваше внимание.