Интеграция 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 скрипт со следующей логикой:

  1. Принимаем исходящий из портала хук с Id сделки;
  2. Отправляем в портал запрос на получение полной информации по сделке Id который пришел на первом шаге;
  3. Если сделка имеет внешний Id, Id заказа в интернет магазине, продолжаем работу, иначе останавливаем скрипт;
  4. После получения Id заказа, запрашиваем его параметры у магазина при помощи API 1С-Битрикс, забираем ROIstatId;
  5. Если получен ROIstatId, отправляем в портал запрос на изменение параметров сделки, записываем нужное нам поле.

Таким грязным и нехитрым образом мне удалось «подружить» ROIstat, сайт на 1С-Битрикс и Битрикс24.

P.S. Не знаю почему нельзя было сделать интеграцию магазина и CRM по-человечески, почему нет простого сопоставления полей??? В условиях "бесшовной интеграции" это выглядит очень странно.

Комментарии (7)

  1. Максим 08.10.2017 Ответить
    добрый день!

    Можете прислать исходник, а не скриншот?

    и что такое \klondike\crm ?
  2. Дмитрий
    Дмитрий 17.10.2017 Ответить
    Ответил на email.
    \klondike\crm - NameSpace и Class.
    Можете упростить и запихать все в один файл.
    Но лучше по отдельности, а то путаница со временем возникнет на проекте.
  3. Евгений 06.12.2017 Ответить
    Не могли бы отправить исходный код решения? Хотелось бы изучить его - как передаются данные через вебхуки, в частности ID сделки и отправка дополнительного поля. Спасибо.
  4. Евгений 22.11.2017 Ответить
    Здравствуйте! Можно получить исходник кода вашего решения?
  5. Александр 20.07.2018 Ответить
    Добрый день, могли бы и мне тоже выслать исходник кода ?
  6. Олег 10.08.2018 Ответить
    Добрый день!
    А можете тоже поделиться исходниками? Хочу сделать аналогично но на сайте MODx.

Оставить комментарий