Связка Bitrix + ВК на Автопилоте

Всем привет! Сегодня будем интегрироваться с Bitrix с помощью Автопилота. Для начала зайдем на сайт Битрикса и создадим свой аккаунт. Я обычно нажимаю «Вход» и захожу через Google-аккаунт

Форма входа на сайт bitrix24
Форма входа на сайт bitrix24

Сам процесс регистрации прост, я уверен вы справитесь.

Внимание! С 1 января 2021 года использование приложений Битрикс24.Маркет, REST API и вебхуков (локальные интеграции в разделе «Разработчикам») будет доступно только на коммерческих тарифах Битрикс24.

***

Настройка личного кабинета Bitrix24.

Связка Bitrix + ВК на Автопилоте, image #2

В левой колонке нажимаем «Разработчикам» и выбираем пункт «Другое», затем нужный тип/

Вебхуки имеют два вида:

  • Входящий вебхук для передачи данных в CRM BITRIX
  • Исходящий вебхук для передачи данных из CRM BITRIX, например, из Автопилота.

Добавим входящий вебхук нажатием на соответствующую кнопку и выберем «Входящий вебхук».

Создаем входящий вебхук
Создаем входящий вебхук

Здесь все просто название вебхука, описание и права доступа. Например,так:

  • Название - передача Лидов
  • Описание — вебхук для передачи лидов из ВК.

Права доступа:

  • Живая лента (log) — чтобы было уведомление по ленте.
  • Контакт-центр (contact_center) — для доступа к контактам.
  • CRM (crm) — права доступа для CRM.

Важно!

Если у вас будут указаны некорректные права вебхук будет работать не корректно, либо возвращать ошибку прав доступа.

Выставив нужные права жмем «сохранить». Вебхуки в CRM Bitrix имеют ограничения:

  1. Для формирования вебхука требуется участие пользователя (вы не сможете генерировать вебхуки автоматически);
  2. Поскольку срока действия у вебхука нет, то любая "утечка" URL вебхука чревата получением доступа к вашему Битрикс24 в рамках прав конкретного вебхука. Именно поэтому данный механизм годится для "внутренних" интеграций, но не подходит для тиражных вариантов использования;
  3. Ряд методов REST недоступен для работы через вебхуки, поскольку их логика требует "контекста" приложения, а никакого приложения в терминах Битрикс24 для вебхуков нет (в частности, методы встраивания приложений в интерфейс Битрикс24, события телефонии, часть событий чат-ботов и т.д. Подробности в статье.

Т.е. берегите свою ссылку на вебхук,чтобы злоумышленники не могли вам навредить.

Пример ссылки для вебхука
Пример ссылки для вебхука

Тут все просто:

  • Вместе с кодом будет представлен образец URL, который нужно использовать при отправке данных из сторонней системы в Битрикс24:
    https://********.bitrix24.ru/rest/1/83te1pjdphsa9u15/profile/
    где:
  • ******** - имя вашего портала;
  • /rest/ - указание системе на то, что данный адрес относится в вебхукам;
  • /1/- идентификатор пользователя, создавшего вебхук. Под правами этого пользователя будет работать этот вебхук.
  • /83te1pjdphsa9u15/ - секретный код;
  • /profile/ - метод REST, который вы хотите выполнить, обращаясь к вебхуку. Разработчик должен сам подобрать метод из REST API в зависимости от целей создания вебхука.

Для примера мы будем делать несколько команд, но сейчас мы будем передавать лиды из VK в Bitrix через Автопилот.

Сначала добавим дополнительное поле для контактов. Открываем раздел CRMи выбираем пункт «Настройки»«Настройки CRM»

Связка Bitrix + ВК на Автопилоте, image #5
  • Настройки форм и отчетов — Пользовательские поля.
Связка Bitrix + ВК на Автопилоте, image #6

Здесь в разделе «Контакты» жмем «Добавить поле»

Связка Bitrix + ВК на Автопилоте, image #7

Я добавил поле vk_uid, все настройки на скриншоте. Жмем «Сохранить»

Теперь находим в в списке наше поле vk_uidи кликаем по нему. В адресной строке смотрим на идентификатор поля.

Получаем ID поля
Получаем ID поля

Идентификатор UF_CRM_1591202577.Записываем его в блокнот и идем в Автопилот.

Команда «Передача лидов в Bitrix»

Пример настройки команды

1) Событие «Заполнил форму»

Пример настроенного события
Пример настроенного события

Важно!

Для функционирования события у вас должна быть подключено приложение «Форма сбора заявок». Подробности есть в статье.

Действия:

1) Отправлен GET/POST запрос методом JSON POST на адрес: https://********.bitrix24.ru/rest/1/83te1pjdphsa9u1/crm.contact.add.json

Рассмотрим ссылку подробнее:

  • ******** - имя вашего портала;
  • /rest/ - указание системе на то, что данный адрес относится в вебхукам;
  • /1/- идентификатор пользователя, создавшего вебхук. Под правами этого пользователя будет работать этот вебхук.
  • /83te1pjdphsa9u15/ - секретный код;
  • /crm.contact.add - метод REST, который вы хотите выполнить, обращаясь к вебхуку. В данном примере добавляем контакт в CRM.

Открываем метод crm_contact_add. По сути это обычный массив JSON. То есть выбираем нужные поля, формируем нужный массив array и отправляем в BITRIX.

Описание параметров метода crm.lead.add
Описание параметров метода crm.lead.add

То есть, для Автопилота это будет простой массив типа array. Полностью типы полей данных можно прочесть по ссылке.

Для примера мы будем передавать следующие данные(фамилия,имя, отчество, ссылка VK, день рождения,страна,телефон):

  • fields.LAST_NAME = %last_name%
  • fields.NAME = %first_name%
  • fields.SECOND_NAME = %patronymic_name%
  • fields.SOURCE_DESCRIPTION= http://vk.com/id%subs_id%
  • fields.BIRTHDATE= %birthday%
  • fields.ADDRESS_COUNTRY= %location%
  • fields.PHONE.0.VALUE_TYPE= MOBILE
  • fields.PHONE.0.VALUE= %phone%
  • fields.EMAIL.0.VALUE= %email%
  • fields.IM.0.VALUE_TYPE= VK
  • fields.IM.0.VALUE= id%subs_id%
  • fields.UF_CRM_1591202577= %subs_id%
  • params.REGISTER_SONET_EVENT= Y — произвести регистрацию события добавления сделки в живой ленте. Дополнительно будет отправлено уведомление ответственному за сделку.
Связка Bitrix + ВК на Автопилоте, image #11

2) Временная переменная %contact_id% = %response.result%

Связка Bitrix + ВК на Автопилоте, image #12

3) Опционально. Действием «Обновить профиль» (нажатием на расширенные параметры) в поле %apiid% записываем ID созданного контакта — переменную %contact_id%

Связка Bitrix + ВК на Автопилоте, image #13

4) Опционально. Вы можете записать этим действием%contact_id%в поле профиля игрока bitrix_contact_id и например, потом редактировать данные контакта соответствующим запросом. В примере ниже в два поле профиля игрока записана соответствующая информация.

Записываем ID контакта в битриксе в профиль Автопилота
Записываем ID контакта в битриксе в профиль Автопилота

5) Опционально. Аналогично записываем в поле bitrix_contact_id_linkссылку на пользователя в Bitrix (пример ссылки ниже):

https://b24-42ohz5.bitrix24.kz/crm/contact/details/%contact_id%/
Пример записи в поле игрока
Пример записи в поле игрока

6) Опционально. Отправляем сообщение сотруднику с текстом:

#заявка
Кто: %vk_link%
Ссылка на контакт в Bitrix: https://b24-kz2g57.bitrix24.kz/crm/contact/details/%contact_id%/
Связка Bitrix + ВК на Автопилоте, image #16

Тестируем.

Заполняем форму
Заполняем форму
Связка Bitrix + ВК на Автопилоте, image #18

Важно! Дополнительное поле по умолчанию скрыто.

Отлично, давайте теперь реализуем реакцию на выставленный счет в Bitrix.

Команда «Реакция на выставленный счет в Bitrix»

В Bitrix'e в вебхуках выбираем «Добавить вебхук» и выбираем тип «исходящий».
Далее в поле «Адрес обработчика» вставляем ссылки из новой команды с события «Упомянут в GET-POST запросе (Входящий запрос)» . В типах событий ставим «Обновление статуса счета» и жмем «Сохранить».

Связка Bitrix + ВК на Автопилоте, image #19

Настройка вебхука (уведомлений про оплату)

Для отлова событий «сделан заказ / оплачен заказ» создаем событие «Упомянут в GET-POST запросе (Входящий запрос)»

ВАЖНО! Настройки ниже будут полноценно работать ТОЛЬКО вместе с действиями из этой же статьи! (дальше)

В дополнительные параметры вписываем &event=ONCRMINVOICESETSTATUS, сохраняем команду и нажимаем на кнопку «скопировать»

Связка Bitrix + ВК на Автопилоте, image #20

И эту ссылку вставляем в исходящие вебхуки Битрикса. Выше показано, куда именно. Пример итоговой ссылки: https://skyauto.me/cllbck/961875918/531530/ZEVyd2l0QT0TG54TmFZVDVaeWFBa3Zk?avtp=1&event=ONCRMINVOICESETSTATUS

Добавляем условие
1) Числовая переменная %request.post.data.FIELDS.ID% больше 0.
данная конструкция будет проверять что Битрикс отдает ID счета.

Действия:

1) Временная переменная %order_id%= %request.post.data.FIELDS.ID%

Важно! Битрикс в вебхуках отдает только ID, поэтому данный блок можно смело использовать в других командах (если вы их создадите)

Т.к. Битрикс не отдает всю информацию о счете, придется воспользоваться методом сrm.invoice.get передать ему ID счета и уже работать с полученными данными. Подробности можете изучить в документации.

2) Отправлен GET/POST запрос на адрес: https://********.bitrix24.ru/rest/1/83te1pjdphsa9u1/crm.invoice.get

с параметрами:

  • id = %order_id%
Связка Bitrix + ВК на Автопилоте, image #21

3) Временная переменная %old_response%= %response%— сохраняем ответ сервера для формирования ответа клиенту (если таковой есть в ВК).

4) Условной переменной %payed%= не оплачен, если

  • в JSON- объекте result.PAYEDсодержится N — признак неоплаты счёта,

иначе %payed%= оплачен

Связка Bitrix + ВК на Автопилоте, image #22

5) Временная переменная %payed%= %response.result.PAYED%— сохраняем признак оплаченности/неоплаченности счёта (для клиента, если таковой есть в ВК).

Связка Bitrix + ВК на Автопилоте, image #23

6) Временная переменная %contact_id%= %response.result.UF_CONTACT_ID%— сохраняем ID карточки клиента, для последующего запроса данных.

7) Отправляем сообщение сотруднику. Для примера я выпарсил все нужные данные:

===========
Ф.И.О покупателя: %response.result.INVOICE_PROPERTIES.FIO%
EMAIL покупателя %response.result.INVOICE_PROPERTIES.EMAIL%
Название первого товара: %response.result.PRODUCT_ROWS.0.PRODUCT_NAME%
Цена за первый товар: {math}%response.result.PRODUCT_ROWS.0.PRICE%|0{/math}
Общая сумма cчёта: %response.result.PRICE%
Статус счета: %payed%
===========
Ф.И.О ответственного:
Логин: %response.result.RESPONSIBLE_LOGIN%
Имя: %response.result.RESPONSIBLE_NAME%
Фамилия: %response.result.RESPONSIBLE_LAST_NAME%
Почта: %response.result.RESPONSIBLE_EMAIL%
Важно! Если у вас в счете несколько товаров, то %response.result.PRODUCT_ROWS.0.PRICE%— это первый товар, а %response.result.PRODUCT_ROWS.1.PRICE%— второй. Либо обработать %response% с помощью регулярного выражения и получить нужные данные. Я для примера вывожу только первый товар, цену первого товара и сумму всех покупок.

Опционально: Вы также можете перед этим действием поставить действие «Прервать выполнение команды» с переключателем «Продолжено», если переменная %payed% содержит Yт.е. все остальные действия будут выполняться только если клиент оплатил счёт.

8) Отправлен GET/POST запрос на адрес: https://********.bitrix24.ru/rest/1/83te1pjdphsa9u1/crm.contact.get

с параметром:

  • id = %contact_id%— запрос на метод crm.contact.getотправляется, чтобы получить данные карточки заказавшего и получить оттуда ID вконтакте — она хранится в доп.поле vk_uid
Связка Bitrix + ВК на Автопилоте, image #24

9) Временная переменная %vk_id%= %response.result.UF_CRM_1591202577% — сохраняем VK ID клиента, для последующего уведомления об оплате/доступа к курсу и т.д.

10) Действием «Сменить исполнителя» меняем исполнителя с ID = %vk_id%

11) Действием «Прервать выполнение команды» с переключателем «Продолжено» будут проверяем условия:

  • переменная %payed%содержит Y
  • числовая переменная %vk_id% больше 0

12) Отправлено сообщение в ответ (клиенту) с благодарностью за покупку, я для примера вывел те же самые данные, что и сотруднику.

Cпасибо за покупку,%first_name%!
===========
Ваш чек:
Ф.И.О покупателя: {get_var}result.INVOICE_PROPERTIES.FIO||%old_response%{/get_var}
EMAIL покупателя: {get_var}result.INVOICE_PROPERTIES.EMAIL||%old_response%{/get_var}
Название первого товара: {get_var}result.PRODUCT_ROWS.0.PRODUCT_NAME||%old_response%{/get_var}
Цена за первый товар: {math}{get_var}result.PRODUCT_ROWS.0.PRICE||%old_response%{/get_var}|0{/math}
Общая сумма: {get_var}result.PRICE||%old_response%{/get_var}
Статус счета: %payed%
Дата: {date}%F %X{/date}
=============

Все. Тестируем.

Создали заказ в битриксе
Создали заказ в битриксе
Связка Bitrix + ВК на Автопилоте, image #26

Меняем статус счета на «оплачен» и все работает.

Cообщение клиенту.
Cообщение клиенту.

Дальше в действиях можно добавить любые нужные блоки. Например:

Видеодемонстрация интеграции с Bitrix. Сейчас изменен интерфейс, но в целом видео актуальное

Да, в статье рассмотрена только малая часть методов, но остальные методы, например, узнать про метод crm.deal.add можно здесь. Также аналогично формируем JSON массив и отправляем в параметрах. Описание возможных полей fields для этого метода тут. Также вы можете изучить в документации, и интегрировать по аналогии, либо обратиться в наш отдел внедрения.

Творческих взлётов и успешного внедрения.

Вернуться на главную страницу инструкций
2052 views·42 shares