Связка 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=MOBILEfields.PHONE.0.VALUE=%phone%fields.EMAIL.0.VALUE=%email%fields.IM.0.VALUE_TYPE=VKfields.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 для этого метода тут. Также вы можете изучить в документации, и интегрировать по аналогии, либо обратиться в наш отдел внедрения.
Творческих взлётов и успешного внедрения.
Вернуться на главную страницу инструкций