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

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

В левой колонке нажимаем «Разработчикам» и выбираем пункт «Другое», затем нужный тип/
Вебхуки имеют два вида:
- Входящий вебхук для передачи данных в CRM BITRIX
- Исходящий вебхук для передачи данных из CRM BITRIX, например, из Автопилота.
Добавим входящий вебхук нажатием на соответствующую кнопку и выберем «Входящий вебхук».

Здесь все просто название вебхука, описание и права доступа. Например,так:
-
Название
- передача Лидов Описание
— вебхук для передачи лидов из ВК.
Права доступа:
Живая лента (log)
— чтобы было уведомление по ленте.Контакт-центр (contact_center)
— для доступа к контактам.-
CRM (crm)
— права доступа для CRM.
Важно!
Если у вас будут указаны некорректные права вебхук будет работать не корректно, либо возвращать ошибку прав доступа.
Выставив нужные права жмем «сохранить». Вебхуки в CRM Bitrix имеют ограничения:
- Для формирования вебхука требуется участие пользователя (вы не сможете генерировать вебхуки автоматически);
- Поскольку срока действия у вебхука нет, то любая "утечка" URL вебхука чревата получением доступа к вашему Битрикс24 в рамках прав конкретного вебхука. Именно поэтому данный механизм годится для "внутренних" интеграций, но не подходит для тиражных вариантов использования;
- Ряд методов REST недоступен для работы через вебхуки, поскольку их логика требует "контекста" приложения, а никакого приложения в терминах Битрикс24 для вебхуков нет (в частности, методы встраивания приложений в интерфейс Битрикс24, события телефонии, часть событий чат-ботов и т.д. Подробности в статье.
Т.е. берегите свою ссылку на вебхук,чтобы злоумышленники не могли вам навредить.

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

- Настройки форм и отчетов — Пользовательские поля.

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

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

Идентификатор 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.

То есть, для Автопилота это будет простой массив типа 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
— произвести регистрацию события добавления сделки в живой ленте. Дополнительно будет отправлено уведомление ответственному за сделку.

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

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

4) Опционально. Вы можете записать этим действием%contact_id%
в поле профиля игрока bitrix_contact_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.
Команда «Реакция на выставленный счет в Bitrix»
В Bitrix'e в вебхуках выбираем «Добавить вебхук»
и выбираем тип «исходящий»
.
Далее в поле «Адрес обработчика»
вставляем ссылки из новой команды с события «Упомянут в GET-POST запросе (Входящий запрос)» . В типах событий ставим «Обновление статуса счета»
и жмем «Сохранить»
.

Настройка вебхука (уведомлений про оплату)
Для отлова событий «сделан заказ / оплачен заказ» создаем событие «Упомянут в GET-POST запросе (Входящий запрос)»
ВАЖНО! Настройки ниже будут полноценно работать ТОЛЬКО вместе с действиями из этой же статьи! (дальше)
В дополнительные параметры вписываем &event=ONCRMINVOICESETSTATUS
, сохраняем команду и нажимаем на кнопку «скопировать»

И эту ссылку вставляем в исходящие вебхуки Битрикса. Выше показано, куда именно. Пример итоговой ссылки: 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%
Т.к. Битрикс не отдает всю информацию о счете, придется воспользоваться методом сrm.invoice.get
передать ему ID счета и уже работать с полученными данными. Подробности можете изучить в документации.
2) Отправлен GET/POST запрос на адрес: https://********.bitrix24.ru/rest/1/83te1pjdphsa9u1/crm.invoice.get
с параметрами:
id
=%order_id%

3) Временная переменная %old_response%
= %response%
— сохраняем ответ сервера для формирования ответа клиенту (если таковой есть в ВК).
4) Условной переменной %payed%
= не оплачен
, если
- в JSON- объекте
result.PAYED
содержитсяN
— признак неоплаты счёта,
иначе %payed%
= оплачен

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

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

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}
=============
Все. Тестируем.


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

Дальше в действиях можно добавить любые нужные блоки. Например:
- Добавить в список «Клиенты - Название продукта».
- Отправить сообщение (например, со ссылкой на закрытую группу)
Да, в статье рассмотрена только малая часть методов, но остальные методы, например, узнать про метод crm.deal.add
можно здесь. Также аналогично формируем JSON массив и отправляем в параметрах. Описание возможных полей fields
для этого метода тут. Также вы можете изучить в документации, и интегрировать по аналогии, либо обратиться в наш отдел внедрения.
Творческих взлётов и успешного внедрения.
Вернуться на главную страницу инструкций