Интеграция ROIstat -> Bitrix -> Bitrix24 = проблема
Лирика
Все кто пытался настроить интеграцию этих трех зверей знают — штатными средствами обойтись не получится.
В один прекрасный предотпускной день мне упала задача, нужно было интегрировать ROIstat сайт на 1С-Битрикс и облачный Битрикс24.
По началу все было хорошо, я закинул на сайт скрипт, который создал вопросы и ответы для всех web-форм, затем создал нужные поля в Битрикс24 и настроил соответствия.
Дело оставалось за малым, нужно было передать RoistatId вместе с заказом в Битрикс24.
Тут то и началось веселье.
Если при настройке форм мы можем выбрать соответствие полей web-формы и облачного портала, то с заказами такая штука не прокатывает.
Заказы просто «магическим» образом передаются в портал. В официальных доках сказано что соответствие полей можно настроить в разделе интеграции с 1С. Но при ближайшем рассмотрении выясняется что и это не помогает, все что мы настроим будет собрано и упаковано в обычное текстовое поле.
Вырисовывается следующая картинка:
ROIstat отдает сайту специальный Id который мы должны протащить через CRM и вернуть обратно в систему аналитики.
Сайт принимает параметры от ROIstat. Но вот в CRM они поступают неправильно!
Параметры из web-форм приходят как нужно, а вот в заказах нужного Id не будет.
Почему нельзя было это сделать по человечески — не знаю.
Но решать проблему нужно!
Кастосмизировать обмен мы не можем, ибо исправлять его нужно на стороне портала. Значит нужно искать обходные пути.
Т.к. в интернетах решения не нашлось я решил набросать свое, времени было мало, поэтому решение «грязное».
Решение проблемы:
Для решения данный проблемы я использовал функционал webхуков, благо они работают в облачном портале и дают нужные возможности.
Решение разбито на два webхука и php скрипт на стороне сайта.
Первое — создадим исходящий хук.
Исходящий хук будет срабатывать каждый раз когда в портале создается сделка. Хук будет отправлять запрос на сайт и нести в себе всего один параметр — Id сделки.
Второе — создаем входящий хук с уровнем прав до CRM. Этот хук будет использован для запроса полной информации по сделке и для передачи ROIstatId.
Третье — на стороне сайта пишем php скрипт со следующей логикой:
- Принимаем исходящий из портала хук с Id сделки;
- Отправляем в портал запрос на получение полной информации по сделке Id который пришел на первом шаге;
- Если сделка имеет внешний Id, Id заказа в интернет магазине, продолжаем работу, иначе останавливаем скрипт;
- После получения Id заказа, запрашиваем его параметры у магазина при помощи API 1С-Битрикс, забираем ROIstatId;
- Если получен ROIstatId, отправляем в портал запрос на изменение параметров сделки, записываем нужное нам поле.
Таким грязным и нехитрым образом мне удалось «подружить» ROIstat, сайт на 1С-Битрикс и Битрикс24.
P.S. Не знаю почему нельзя было сделать интеграцию магазина и CRM по-человечески, почему нет простого сопоставления полей??? В условиях «бесшовной интеграции» это выглядит очень странно.
Оставить комментарий
Комментарии (18)
Оставить комментарий