Опыт интеграции с ClientBase

2021.10.23
Обзор интеграции с достаточно интересным проектом - с конструтором CRM систем ClentBase, через hook'и называемые "Вычисления"
php

На работе поступила заявка на интеграцию нашей облачной кассы с clientbase.ru.

На самом сайте ClientBase написано:

CRM Система Клиентская База - Кроссплатформенная CRM-система для ведения клиентской базы, позволяющая в короткие сроки автоматизировать любой бизнес без привлечения программистов.

Под кроссплатформенностью подразумевается движок на php.

Коротко простыми словами: создаем список таблиц со своими полями, связываем столбцы, назначаем обработчики на разные табличные события (можно даже php код вставить) - CRM готова.

Маркетинг немного лукавит, программист здесь нужен, но его действия можно минимизировать :)

Техническая поддержка

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

На вторую заявку (через то же место) ответ дали только через 3 дня.

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

Недолгое общение с ТП позволило понять что толку от ТП нет и единственный проводник в мир конструктора CRM ClientBase это сконструированная CRM клиента и документация.

Документация

Документация это не краткий и удобный гайд в мир конструктора CRM, как например в AmoCRM. Однако, ответ на один из главных своих вопросов я получил.

Кстати, в сосденей статье рассмотрен опыт интеграции с AmoCRM.

Таблицы

Основной строительный элемент CRM - это таблицы (да, самые простые таблицы в контексте СУБД).

Идем в Настройки - выбираем нужную категорию таблиц - выбираем таблицу.

В разделе "Поля" можно просмотреть список вообще всех столбцов таблицы и узнать внутренние имена (они действительно могут пригодиться).

Поля таблицы

Для интеграции я использовал Доп. действия с Вычислением.

Вычисления в Доп. действии

В разделе "Доп. действия" можно добавить кнопку (обработчик события клика по кнопке и есть то самое "Доп. действие") и вставить в нее php и/или js код.

В вычислениях доступно все тоже самое что доступно в php, для http запросов я использовал curl.

Доп. действия таблицы

Применить доп. действие к записи можно на странице просмотра записи:

Просмотр записи таблицы

Либо при просмотре таблицы отметить нужные строки и выбрать действие:

Применение доп. действий к отмеченным строкам таблицы

В самом простом варианте в php коде мы можем использовать глобальную переменную $line (ассоциативный массив), которая и есть та самая строка с которой мы работаем. Обращаться к элементам массива можно по реальным названием столбцов типа $line['f513'] или по псевдонимам $line['Сумма'], данные доступны на чтение/запись.

Если написать и сохранить код, который обращается по реальным именам, то при следующем открытии кода реальные имена будут заменены на псевдонимы, что удобно.

Если записать в элемент массива $line какие-либо данные, а затем exit, то данные в ячейке не сохранятся. Вместо этого в вычислении нужно использовать return.

Если нужно обратиться к связной сущности, на которую в данной таблице есть ссылка по ID то достаточно просто обратиться к элементу массива с этим самым ID:

// вывод данных контрагента
print_r($line['Гость']);

Записывать в таблицы можно при помощи функции insert_query, а извлекать данные из таблиц (когда по связям из текущей строки не дотянутся) можно при помощи функции data_select_array. Обе они хорошо описаны в приведенной выше ссылке.

// выборка данных
$aPayer = data_select_array(2391, "id=", 113);

// запись
$data['Дата'] = date("Y-m-d H:i:s");
$data['Сумма'] = $line['К оплате'];
$data['Назначение'] = $sPaymentName;
$data['Плательщик'] = $aPayer['id'];
$data['Получатель'] = $line['Собственник']['ID'];
$data['Форма оплаты'] = 'безнал';
$data['Комментарий'] = 'ТЕСТ УДАЛИТЬ';
$idNew = insert_query($data, "Оплаты");

ftp

Для второй задачи клиента, мне потребовалось разместить на сервере клиента pem сертификат и ключ сертификата. Но вот вовремя ответ от ТП ClientBase получить не удалось, поэтому пришлось выкручиваться самому.

Каждый клиентский сайт судя по всему расположен на своей vps и юзер, который запускает скрипты, а точнее вычисления в "Доп. действиях", имеет право на запись/чтение вне корня сайта. Поэтому можно воспользоваться этой возможностью и разместить свои файлы там где надо при помощи file_get_contents/file_put_contents.

Как выяснилось позже, ClientBase предоставляет ftp своим клиентам в облаке, но не к корню файловой системы, а мы тут ходим везде ...

Выводы

Изначально идея конструктора CRM мягко говоря не вызывала восторга, но по мере изучения устройства клиентской CRM и несколькоих интеграций, мнение изменилось - идея классная, но над реализацией еще нужно работать.

Скорость работы приемлемая, но порой очень медленно (может быть все дело этих самых "Вычислениях"?).

Сперва я подумал что это молодой стартап, которому едва исполнилось пару лет, но спустившись в футер (копирайт 2009 - 2020) увидел что это уже взрослый проект, что весьма не похоже.

В телеграм канале DevOps от первого лица можно оставить комментарий или почитать интересные истории из практики DevOps