Интеграция 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 по-человечески, почему нет простого сопоставления полей??? В условиях "бесшовной интеграции" это выглядит очень странно.

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

  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.
  7. Антон 10.12.2018 Ответить
    Добрый день, тоже хотел бы получить исходник кода
  8. Ерлан 19.12.2018 Ответить
    добрый день!
    пара вопросов
    1. на 1 скриншоте есть поле - адрес вашего скрипта - что туда указывать
    2. если сайт на конструкторе, то как быть со скриптом?
    3. если есть возможность вставить код, не могли бы вы отправить на почту.

    Спасибо.
  9. Дмитрий
    Дмитрий 19.12.2018 Ответить
    Доброго времени суток!
    "адрес вашего скрипта - что туда указывать" - url до вашего скрипта =)
    "если сайт на конструкторе, то как быть со скриптом?" - ничего не делать, для конструктора этот ман не подходит.
    Если вы используете конструктор сайтов 24 на основе Б24 то возможно сможете реализовать передачу roistatId по средством javascript (который можно подмешать в конструкторе). Но это надо тестировать и разбираться, у меня не было такого опыта.
  10. Дмитрий 28.01.2019 Ответить
    Можно получить исходник кода вашего решения на почту?)
  11. Александр 11.03.2019 Ответить
    Здравствуйте. Можете выслать исходники?
  12. Александр 13.03.2019 Ответить
    Спасибо за решение. Сделал как вы описали. Удалил гланды через попу
  13. Владимир 24.06.2019 Ответить
    Здравствуйте, Дмитрий! Не могли бы вы скинуть мне на почту исходники ?

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