/sites/default/files/2019-11/b24_drupal_0.jpg

В настоящий момент Битрикс24 является одним из ведущих решений на рынке CRM и заслуженно занимает одно из ключевых мест в бизнес-процессах многих организаций. Эффективное использование интернет-сайта компании неизбежно подразумевает интеграцию его информационных потоков в структуру CRM.

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

Для сайтов, построенных на CMF Drupal 8, специалистами нашей компании был разработан пакет модулей https://drupal.org/project/b24, решающий задачи интеграции с Битрикс24 для наиболее востребованных сценариев работы: создание лидов в Битрикс 24 при отправке веб-форм и создание лидов и сделок в Битрикс 24 при добавлении заказов в Drupal Commerce 2.

25 октября 2019 опубликована альфа-версия модулей на Drupal.org. В настоящий момент модуль еще не имеет достаточно стабильной версии, поскольку структура кода и API еще не устоялась и в дальнейшем возможно внесение изменений, которые теоретически могут поломать построенные на его основе сторонние решения. Однако, мы успешно внедряем модуль как на сайтах наших клиентов, так и на наших собственных сайтах так как внутри компании сами используем Битрикс 24 в качестве CRM.

Пакет состоит из основного модуля, обеспечивающего взаимодействие с Битрикс24, а также ряда дополнительных модулей, реализующих конкретный функционал:

  • b24_commerce - обеспечивает интеграцию с модулем commerce и реализует экспорт заказов в лиды, контакты и товары на стороне Битрикс24.
  • b24_contact - экспортирует результаты отправки форм, реализованных модулем contact, входящим в ядро Drupal 8.
  • b24_webform - аналогично, но уже для форм, сделанных на основе популярного модуля webform.
  • b24_user - синхронизирует пользователей Drupal со списком контактов в CRM.
  • b24_utm - реализует учет UTM-меток при экспорте лидов.

Модуль учитывает оба стандартных режима работы Битрикс24 — классический (создание лида с последующей конвертацией в сделку и контакт) и упрощенный (создание сделки и контакта сразу без создания лида).

Начало работы и настройка основного модуля

Для начала работы необходимо внести ряд основных настроек для связи с Битрикс24. На странице для ввода учетных данных (Администрирование » Конфигурация » Bitrix24 » Credentials) укажите домен вашего Битрикс24-сайта. То есть если вы заходите в свою CRM по адресу my-crm.bitrix24.ru, то в это поле следует ввести «my-crm». После сохранения формы в полях ниже для удобства будут сформированы ссылки на страницы вашего Битрикс24, на которых вы должны будете зарегистрировать приложение с правами доступа к CRM и выбранной опцией «Приложение использует только API» (Рис. 1). Для более тонкой настройки модуля может также потребоваться доступ к пользователям.

Создание приложения в Битрикс24
Рис. 1 - Добавление приложения в Битрикс24: необходимые права

 

Для корректной аутентификации в полях «Укажите ссылку» следует проставить значение «[адрес_сайта]/b24/oauth» - эта строка также будет показана в описаниях к полям формы (Рис. 2).

Создание приложения в Битрикс24 - установка callback-страницы
Рис. 2 - Добавление приложения в Битрикс24: установка callback-страницы

 

После создания приложения ему будет присвоен код приложения (client_id) и ключ приложения (client_secret). Их необходимо внести в соответствующие поля настроек модуля. После сохранения формы необходимо инициировать первичное получение токена для доступа к приложению, кликнув на ссылку «Get access token» внизу формы (Рис. 3). В дальнейшем токен будет обновляться при каждом обращении к приложению, а также по крону. Поскольку срок жизни токена составляет один час, для сайтов с малой посещаемостью лучшим решением будет установить периодичность запуска крона в один час.

Настройка основного модуля - учетные данные
Рис. 3 - Настройка основного модуля: учетные данные

 

После установки данных для доступа к Битрикс24 на странице "Администрирование » Конфигурация » Bitrix24 » Настройки"  можно указать ответственного пользователя, то есть пользователя в CRM, которому будет назначаться вновь созданные лиды и сделки (Рис. 4). Если список выбора пуст, то всего скорее вы забыли дать права своему приложению на доступ к пользователям. При отсутствии этой настройки создаваемые сущности будут назначаться в соответствии с настройками CRM.

Настройки основного модуля - установка ответственного пользователя
Рис. 4 - Настройки основного модуля: установка ответственного пользователя

 

 

b24_contact: Экспорт данных из стандартных контактных форм Drupal (модуль contact)

Перейдите на страницу настройки соответствующего модуля "Администрирование » Конфигурация » Bitrix24 » Contact Form Setings". Выберите вкладку с названием нужной формы и активируйте чекбокс «Enable Export», после чего отобразится группа полей, каждое из которых соответствует полю лида (Рис. 5). В каждом установите соответствие с полем контактной формы.

В качестве соответствия можно выбрать вариант «Custom», который позволяет ввести свободную строку с поддержкой токенов, однако стоит заметить, что в отличие от webform каждое заполнение формы не является сущностью и передать одно из его значений в виде токенов не получится в виду отсутствия поддержки оных. То есть изменить, к примеру, значение, передаваемое полем «Ваше имя» на «Форма отправлена клиентом [submission:field_name]» не получится. Возможно, это будет реализовано в будущем. Однако глобальные токены вроде [site:name] доступны.

Настройка экспорта контактных форм Drupal
Рис. 5 - Настройка экспорта контактных форм Drupal

 

b24_webform: Экспорт данных из форм, созданных средствами модуля webform

Настройки аналогичны предыдущему пункту за исключением более полной поддержки токенов (Рис. 6).

Настройка экспорта результатов заполнения форм Drupal webforn
Рис. 6 - Настройка экспорта результатов заполнения форм Drupal webform

 

b24_users: Синхронизация пользователей с контактами

На странице "Администрирование » Конфигурация » Bitrix24 » Users synchronization" выберите роли пользователей, которые следует синхронизировать с контактами Битрикс24 (Рис. 7).

Настройка экспорта пользователей - выбор ролей для экспорта
Рис. 7 - Настройка экспорта пользователей: выбор ролей для экспорта

 

После чего необходимо установить соответствия между полями пользователей (имеется также поддержка полей профилей) и полями контактов Битрикс24 на странице "Администрирование » Конфигурация » Bitrix24 Users synchronization » Fields mapping".

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

Далее можно произвести экспорт пользователей на странице "Администрирование » Конфигурация » Bitrix24 » Users synchronization » Users Export". При этом соответствия между сущностями пользователя Drupal и контакта Битрикс24 сохраняются и при повторном экспорте новые контакты создаваться не будут.

При активации опции «Enable live export» (Рис. 7) все изменения будут отправляться в CRM сразу при создании/редактировании/удалении пользователя.
Поддерживается также импорт контактов из CRM в пользователи Drupal ("Администрирование » Конфигурация » Bitrix24 » Users synchronization » Users Import"). При этом га страницу импорта можно выбрать, какие дополнительные роли будут назначены импортируемым пользователям.

 

b24_commerce: Экспорт заказов и товаров Drupal Commerce

Настройка экспорта заказов происходит на странице "Администрирование » Конфигурация » Bitrix24 » Commerce Integration". Здесь необходимо установить режим работы CRM (уже упомянутые классический или упрощенный) — к сожалению, в текущем состоянии API Битрикс24 не позволяет получать этот показатель автоматически. При этом в случае упрощенного режима настройки на этом заканчиваются. В случае стандартного режима для каждого типа товаров в отдельности следует выбрать, надо ли управлять конвертацией созданных лидов в контакты и в сделки на стороне модуля. Обычно это происходит на стороне CRM, однако этот функционал можно настроить на стороне Drupal, для чего нужно активировать конвертацию в нужные сущности и указать, на каком этапе жизни заказа это должно происходить (Рис. 8).

Настройка экспорта заказов Drupal Commerce - выбор режима экспорта
Рис. 8 - Настройка экспорта заказов Drupal Commerce: выбор режима экспорта

 

Далее на странице "Администрирование » Конфигурация » Bitrix24 » Commerce Integration » Fields Mapping" следует с помощью токенов установить соответствия полей заказа с полями сделок и лидов для каждого из типов товаров. Обратите внимание, что на этой странице в зависимости от конфигурации вашего интернет-магазина может присутствовать несколько вкладок-табов (сверху), каждая из которых соответствует типу товара. Вкладки «Leads» и «Deals» содержат соответствия поле лидов и сделок соответственно (Рис. 9).

Настройка экспорта заказов Drupal Commerce: соответствие полей
Рис. 9 - Настройка экспорта заказов Drupal Commerce: соответствие полей

 

Для привязки создаваемых лидов и сделок к товарам на стороне Битрикс24 реализован экспорт товаров. Настройка экспорта производится на странице "Администрирование » Конфигурация » Bitrix24 » Commerce Integration » Products Export", где устанавливается магазин, из которого будут экспортироваться товары, а также при необходимости указывается поле, по которому на сайте просходит распределение товаров по разделам каталога. Это позволит сохранить структуру каталога при его экспорте в CRM. Первичный экспорт лучше провести после первичной настройки модуля на этой же странице. В дальнейшем все изменения будут синхронизироваться с CRM автоматически.


b24_utm. Учет UTM-меток при экспорте лидов

Это очень простой функционал, отслеживающий приход посетителя с UTM-меткой и в случае экспорта лида от его лица заполняющий на стороне Битрикс24 соответствующие поля. Для отслеживания меток достаточно включить модуль. Какие бы то ни было настройки в настоящий момент не требуются.

 

Поиск и отслеживание проблем

Поскольку любая интеграция с внешними сервисами часто сопровождается значительными сложностями в конфигурации, при написании модуля уделено особое внимание логированию результатов запросов к Битрикс24. Поэтому если что-то по вашему мнению пошло не так, нужная информация наверняка находится в логах «/admin/reports/dblog». 

 

Итого

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

Заказать интеграцию
Drupal с CRM Битрикс 24

Справа находится пример контактной формы на Drupal 8 с автоматическим заведением лидов в Битрикс 24. Отправьте нам сообщение через эту форму если вам нужна помощь в интеграции вашего сайта на Drupal с CRM Битрикс 24.

Комментарии

Егор

Добрый день!
Поясните пожалуйста, что делать с адресом .../b24/oauth
На него редиректит, а такой страницы нет на сайте, получаю 404 соответственно. Или ее нужно создать предварительно?
В Битрикс24 указываю в настройках прав и CRM и пользователи - все безуспешно, нет подключения.

Спасибо!

Здравствуйте, Егор, Страница создается самим модулем, вручную ее добавлять не нужно. Если модуль установлен только что, попробуйте сбросить кэш - возможно, страница еще не появилась. Проверьте, не опечатались ли при указании адреса приложения в настройках Битрикс 24. Сообщите, пожалуйста, о результатах - возможно, это действительно баг, о котором мы пока не знаем.
Егор

Все ок. спасибо!
Оказывается нужно было прописать путь разрешение для nginx.

Евгений

Для синхронизации пользователей с контактами нет страницы
Администрирование » Конфигурация » Bitrix24 Users synchronization » Fields mapping
Как туда попасть?

Добрый день, Перейдите на страницу /admin/config/b24/user/mapping. Должен быть включен модуль b24_user
Александр

Добрый день. Как прописать домен, если у меня не заканчивается на bitrix24.ru, а начинается на b24? Пример b24.domain_name?

Добрый день, В настоящий момент это не реализовано. Попробую добавить такую возможность в будущем.
Если есть такая возможность, создайте issue на странице модуля на drupal.org.
Петр

При установке модуля на Drupal 9 сайт вешается в фатальную ошибку, белый экран на всех страницах. Помогает только выключение модуля с помощью drush.

GuzzleHttp\Exception\ConnectException: cURL error 6: Could not resolve host: .bitrix24.ru (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://.bitrix24.ru/oauth/token/?grant_type=refresh_token&client_id&cl… in GuzzleHttp\Handler\CurlFactory::createRejection() (line 210 of /home/..../public_html/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php).

Благодарю, исправим
Исправлено. Но вам в любом случае надо будет установить имя домена своего bitrix24 в настройках модуля.
Петр

Спасибо, работает. Еще проблемка, у нас bitrix24.by ))) на него можно настроить?

На днях сделаем
Петр

Не делали еще?

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

Спасибо огромное! Но после соединения (все прошло отлично) при попытки настроить экспорт из вебформ, когда поля связываешь, после нажатия "сохранить конфигурацию" птичка Enable export становится опять неактивной. В журнале ошибка
Warning: Undefined array key "#title" в Drupal\b24_webform\Form\SettingsForm->getFields() (строка 125 из /home/***/public_html/modules/contrib/b24/modules/b24_webform/src/Form/SettingsForm.php)
#0 /home/***/public_html/core/includes/bootstrap.inc(347): _drupal_error_handler_real()
#1 /home/***/public_html/modules/contrib/b24/modules/b24_webform/src/Form/SettingsForm.php(125): _drupal_error_handler()
#2 /home/***/public_html/modules/contrib/b24/modules/b24_webform/src/Form/SettingsForm.php(102): Drupal\b24_webform\Form\SettingsForm->getFields()
#3 [internal function]: Drupal\b24_webform\Form\SettingsForm->buildForm()
#4 /home/***/public_html/core/lib/Drupal/Core/Form/FormBuilder.php(531): call_user_func_array()
#5 /home/***/public_html/core/lib/Drupal/Core/Form/FormBuilder.php(278): Drupal\Core\Form\FormBuilder->retrieveForm()
#6 /home/***/public_html/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm()
#7 [internal function]: Drupal\Core\Controller\FormController->getContentResult()
#8 /home/***/public_html/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
#9 /home/***/public_html/core/lib/Drupal/Core/Render/Renderer.php(564): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#10 /home/***/public_html/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext()
#11 /home/***/public_html/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext()
#12 /home/***/public_html/vendor/symfony/http-kernel/HttpKernel.php(169): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#13 /home/***/public_html/vendor/symfony/http-kernel/HttpKernel.php(81): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
#14 /home/***/public_html/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle()
#15 /home/***/public_html/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
#16 /home/***/public_html/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
#17 /home/***/public_html/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
#18 /home/***/public_html/core/modules/ban/src/BanMiddleware.php(50): Drupal\page_cache\StackMiddleware\PageCache->handle()
#19 /home/***/public_html/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\ban\BanMiddleware->handle()
#20 /home/***/public_html/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
#21 /home/***/public_html/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
#22 /home/***/public_html/core/lib/Drupal/Core/DrupalKernel.php(709): Stack\StackedHttpKernel->handle()
#23 /home/***/public_html/index.php(19): Drupal\Core\DrupalKernel->handle()
#24 {main}

Пётр, вы можете выслать мне на a.zubenko@initlab.ru конфиг вашей формы?
И будет оперативнее, если для таких проблем открывать issue на странице модуля на Drupal.org
Модуль обновлен

Добавить комментарий