[modRetailCRM] - Интеграция с RetailCRM
Представляю модуль для интеграции популярного сервиса RetailCRM с MODX.

Небольшой функционал предусмотрен сразу же при установке приложения.
Дополнение основано на собственной библиотеке RetailCRM и в ручном режиме поддерживает ВЕСЬ функционал доступный через API RetaiCRM
Для любителей кастомизировать функционал сайта\интернет-магазина под собственные нужды это означает, что вы можете как угодно взаимодействовать с CRM, оперируя любыми данными.
Для этого доступны десятки методов.
Достаточно Вызвать приложение и указать нужны метод
Например:
Все доступные методы и их параметры вы можете просмотреть в API RetaiCRM. У Сервиса отличная документация.
Точный вызов того или иного метода — можно найти в файле класса ApiClient внутри дополнения.
Как правило метод вроде /api/v4/customers/create вызывается как customersCreate
Главная идея — в том, что мы можем используя существующую библиотеку, передавать в CRM любые данные с сайта, и наоборот получать любую информацию из CRM. Возможности очень гибкие. Мы никак не привязаны к MiniShop2, например.
Можно написать собственные сниппеты и плагины работающие с ShopKeeper.
Совсем не обязательно вообще привязываться к интернет-магазинам.
Совсем простой сниппет позволит создавать в CRM контакт при заполнении классической контактной формы на сайте (пример я написал выше).
Естественно у вас должен быть аккаунт в RetailCRM.
В системных настройках сайта (раздел modretailcrm) Вам нужно указать API ключ, адрес вашей CRM и символьный код сайта. Все эти данные Вы можете посмотреть в личном кабинете RetailCRM
Приложение на данный момент находится на модерации в Modstore.pro, на днях будет опубликовано.
Если кому то не терпится попробовать — могу выслать установочный пакет на E-mail.
Обсуждаем компонент в комментариях. Постараюсь ответить на любые вопросы.
Также готов обсудить персональную адаптацию приложения под ваши конкретные проекты.

Работа из коробки
Небольшой функционал предусмотрен сразу же при установке приложения.
- Плагин срабатывающий на событие onUserSave, автоматически создает новый контакт в CRM при регистрации нового пользователя в MODX. Данное событие срабатывает в том числе при оформлении заказа в интернет-магазине.
- Плагин срабатывающий на событие msOnCreateOrder, автоматические создает новый заказ в CRM при оформлении заказа в MiniShop2
Ручной режим
Дополнение основано на собственной библиотеке RetailCRM и в ручном режиме поддерживает ВЕСЬ функционал доступный через API RetaiCRM
Для любителей кастомизировать функционал сайта\интернет-магазина под собственные нужды это означает, что вы можете как угодно взаимодействовать с CRM, оперируя любыми данными.
Для этого доступны десятки методов.
Достаточно Вызвать приложение и указать нужны метод
Например:
//Вызываем приложение
if (!$RetailCrm = $modx->getService('RetailCrm','modretailcrm',MODX_CORE_PATH.'components/modretailcrm/model/modretailcrm/')) {
$modx->log(1, '[RetailCrm] - Not found class RetailCrm');
return;
}
//Получаем список всех заказов одного клиента из CRM
$filters = array();
$filter['customer'] = '+7 701 987 65 43';
$orders = $RetailCrm->ordersList($filter);
//Массив $filters - позволяет фильтровать данные, указав, например, номер или Имя клиента.
//Создаем новый контакт
$customer = array();
$customer['firstName'] = 'Федор';
$customer['lastName'] = 'Бондарчук';
$customer['email'] = 'mail@mail.ru';
$customer['phones'][]['number'] = '+7 701 987 65 43';
$RetailCrm->customersCreate($customer);Все доступные методы и их параметры вы можете просмотреть в API RetaiCRM. У Сервиса отличная документация.
Точный вызов того или иного метода — можно найти в файле класса ApiClient внутри дополнения.
Как правило метод вроде /api/v4/customers/create вызывается как customersCreate
Основное преимущество — гибкость в разработке
Главная идея — в том, что мы можем используя существующую библиотеку, передавать в CRM любые данные с сайта, и наоборот получать любую информацию из CRM. Возможности очень гибкие. Мы никак не привязаны к MiniShop2, например.
Можно написать собственные сниппеты и плагины работающие с ShopKeeper.
Совсем не обязательно вообще привязываться к интернет-магазинам.
Совсем простой сниппет позволит создавать в CRM контакт при заполнении классической контактной формы на сайте (пример я написал выше).
Предварительная настройка
Естественно у вас должен быть аккаунт в RetailCRM.
В системных настройках сайта (раздел modretailcrm) Вам нужно указать API ключ, адрес вашей CRM и символьный код сайта. Все эти данные Вы можете посмотреть в личном кабинете RetailCRM
Приложение на данный момент находится на модерации в Modstore.pro, на днях будет опубликовано.
Если кому то не терпится попробовать — могу выслать установочный пакет на E-mail.
Обсуждаем компонент в комментариях. Постараюсь ответить на любые вопросы.
Также готов обсудить персональную адаптацию приложения под ваши конкретные проекты.
Комментарии: 46
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
АнтонНужно передать данные о корзине, заказчике, доставке, оплате.
Заметил, что лог забивается сам по себе, без каких-то действий на сайте (он тестовый у меня). Как будто cron работает )
(ERROR @ /core/xpdo/xpdo.class.php: 503) Path specified for package modsendpulse is not a valid or accessible directory: core/components/modsendpulse/model/
Источник здесь: components/modretailcrm/index.class.php
Для отправки обновления статуса нужно дописать плагин на событие msOnChangeOrderStatus
Я честно говоря не знаю, будет ли сейчас работать метод обновления, так как RetailCRM сейчас выпустили обновление API. Что то изменили, что то добавили, некоторые методы убрали. Надо тестировать короче.
В общем, у кого осталась ошибка с «modsendpulse» в логе после обновления, уберите «modsendpulse» из системной настройки minishop2 «extension_packages»
Ошибка не очевидная… Наверно желательно добавить проверку нужных настроек в начале + добавить исключение, я так понимаю.
Если пользователь есть в админке после оформления заказа выдает ошибку, данные не передаются в CRM
Если пользователя нет админке, создает нового и данные в CRM передает
Подскажите как поправить. Спасибо.
Для того, чтобы мой склад понял, что упало в заказе в Retail CRM, должно быть типа так
$orderData['items'][$key]['offer']['externalId'] = $product['externalCode'];
При такой настрйоке не срабатывает ничего, заказ не отправляется в Retail CRM
Если Вы этого не делали, тогда отдельного специального поля для связи товаров в различных системах нет.
В таком случае, можно перед передачей заказа в RetailCRM, получить идентификаторы товара, используя поиск по товарам в CRM
Для этого в плагине, там где начинается перебор товаров заказа, можно добавить дополнительный поисковый запрос в RetailCRM
Здесь вы ищите на складе RetailCRM товар, у которого наименование совпадает с артикулом в minishop2. Если такой товар найден получаем его id.
Разумеется фокус сработает, если указанные данные у товаров в разных системах один и тот же.
Никто не мешает искать по другим общим параметрам.
Важно также понимать, что эти дополнительные запросы занимают время и заказ передается дольше, а клиент в этот момент сидит и смотрит на экран корзины.
а должна быть такой
И вставка вот этого кода не нужна
$store_response = $modRetailCrm->request->storeProducts(array('name' => $product['article']), 1, 20); if($store_response->getStatusCode() == 200){ $product_id = $store_response['products'][0]['offers'][0]['id']; } $orderData['items'][$key]['offer']['id'] = $product_id;У меня чехарда с сайтом идет, вот этот код вставляю и работает, ничего более не меняю
В общем, магия или нет, но код вот такой должен быть <pre> $store_response = $modRetailCrm->request->storeProducts(array('name' => $product['name']), 1, 20); if($store_response->getStatusCode() == 200){ $product_id = $store_response['products'][0]['offers'][0]['id']; } $orderData['items'][$key]['offer']['id'] = $product_id; </pre>По существу Не уверен что такая доработка плагина нужна. Вы пока второй на 130 загрузок, кто такое спрашивает.
Ваш модуль использует устаревшую версию АПИ v4 и если да то когда вы планируете на v5 переводить?
Спасибо!
На данный момент в компоненте пятая актуальная версия. Нормально все.
Компонент приобрел недавно, прошу помощи в настройке или в устранение причины. Устанавливал не я, а другой человек с которым на связи.
Есть две пока что выявленной причины:
1. Сдэк. При выборе тарифа в карточке заказа выдает ошибку. Написал в сдэк получил ответ: " Так как вы пользуетесь модулем сторонней компании, по вопросам настройки, работы и доработки, вам необходимо обращаться к разработчикам данного модуля ...."
Глубоко по другим КС не смотрел и не настраивал, но выбор тарифа у Шиптора или Боксберри — работает.
2. UIS телефония. Ответа точного не получил по их части проблема или нет, по телефону проверили настройки базовые, сказали все ок. Проблема в том, что при звонке не появляется окошко о входящем звонке где отображается данные о покупателе да и в целом нет уведомления, что был пропущенный, а так же вместе с оператором заметили, что нет кнопки «трубка» там где она должна быть, чтобы можно было сразу позвонить из СРМ
Но там где сохраняются разговоры они есть и их прослушать можно, но опять же нет кнопки «трубка»
Мой компонент не имеет к этому никакого отношения. Он работает ТОЛЬКО на сайте.