После того как чат-бот или умный IVR собрал данные клиента их нужно передать в CRM для дальнейшей обработки. Для передачи информации в Битрикс необходимо сделать ряд шагов:
- Создать в Битриксе webhook.
- Сформировать и протестировать в Postman запрос к Битриксу.
- Вставить запрос в блок HTTP-запрос Aimylogic.
- Запустить сценарий, чтобы убедится, что скрипт отрабатывает корректно.
В целом ничего сложного, но есть нюансы.
Создание лида в Битрикс через метод GET
Используя примеры из документации к Битрикс создали входящий webhook. Входящий вебхук запускается при обращении к порталу Битрикс по определенному URL. Можно открыть в браузере специально созданный URL и Битрикс выполнит соответствующее действие. Это будет простой HTTP запрос по определенному адресу.
В итоге мы получаем URL адрес вида: https://yourportal.bitrix24.ru/rest/23/ydgtxxxxxxxxxx/crm.lead.get.json?id=1
URL имеет определенную структуру:
- https://yourportal.bitrix24.ru — адрес портала Битрикс
- /rest — указание, что идет обращение к REST API
- /23 — ID пользователя, создавшего доступ
- /ydgt3vidxxxxxxx — строка ключа доступа
- /crm.lead.get — метод, который будет использоваться
- .json — формат ответа, т.н. «транспорт» — json или xml (по-умолчанию json)
- ?id=1 — наименование и значение параметра, который мы передаем в Битрикс
Как видно из структуры ссылки, все значения, необходимые для работы метода, передаются в параметрах URL адреса.
Для каждого метода существует свой набор необходимых параметров, которые описаны в документации Битрикс по работе с REST API.
Посмотрим на примере создания лида, как работает передача данных в Bitrix с помощью метода GET. В документации Битрикса для создания лида используется метод crm.lead.add. Параметры метода описаны в crm.lead.fields. Например, для создания лида можно создать строку с наиболее часто используемыми параметрами:
- fields[TITLE] — Название лида. Если не указать, то имя лида будет «Лид #[номер лида]».
- fields[COMPANY_TITLE] — Название компании.
- fields[SOURCE_ID] — ID источника.
- fields[NAME] — имя.
- fields[LAST_NAME ] — фамилия.
- fields[SECOND_NAME] — отчество.
- fields[POST] — должность.
- fields[ADDRESS] — адрес.
- fields[ADDRESS_CITY] — город. Например, Нижний Новгород.
- fields[PHONE][0][VALUE] — Телефон.
- fields[PHONE][0][VALUE_TYPE] — Тип телефонного номера (Например: WORK, MOBILE, HOME).
- fields[EMAIL][0][VALUE] — Email.
- fields[EMAIL][0][VALUE_TYPE] — Тип email (Например: WORK, HOME).
- fields[COMMENTS] — Комментарий.
- fields[ASSIGNED_BY_ID] — ID ответственного.
- fields[SOURCE_DESCRIPTION] — дополнительно об источнике.
- fields[STATUS_DESCRIPTION] — сведения о статусе.
- fields[OPPORTUNITY]
- fields[CURRENCY_ID] — валюта.
- fields[EXCH_RATE] — курс валюты.
- fields[SOURCE_ID] — Статус из справочника. Список возможных идентификаторов можно получить методом crm.status.list с фильтром
filter[ENTITY_ID]=SOURCE
. - fields[UF_CRM_1456385609] — Так указываются пользовательские поля. Код для каждого поля надо смотреть в Битрикс24.
Например, ссылка будет такой: https://yourportal.bitrix24.ru/rest/23/ydgt3vxxxxxxxxx/crm.lead.get/?fields[TITLE]=ИП Титов&fields[NAME]=Андрей&fields[PHONE][0][VALUE]=+7960XXXXX&fields[PHONE][0][VALUE_TYPE]=MOBILE
Название лида передавать без кавычек, иначе кавычки останутся в названии!
После запуска в браузере создастся лид с указанными параметрами. В Postman-е ссылка будет выглядеть следующим образом:
После нажатия на кнопку «Send» Битрикс вернет JSON скрипт с результатами.
Передача параметров лида из Aimylogic в Bitrix через метод GET
Взаимодействие Aimylogic с Битрикс описано в нескольких статьях на сайте:
- Блок HTTP-запрос: https://help.aimylogic.com/docs/ru/how-to-create-a-script/actions/http_request/
- Кейс Умного IVR: https://help.aimylogic.com/docs/ru/business_cases/smart_ivr
- Битрикс24: https://help.aimylogic.com/docs/ru/publication_channels/bitrix24
- Запись в CRM — пример реализации: https://help.aimylogic.com/docs/ru/how_to/crm_entry
К сожалению, при использовании блока HTTP-запроса примеры из статей не отрабатывают. При использовании POST запроса лиды создаются, однако параметры передаваемые в BODY в лиде отсутствуют. Возможно, есть какие-то тонкости с настройкой или передачей параметров, которые опущены в указанных выше статьях.
У меня нормально отрабатывает только вариант передачи GET в блоке HTTP-запрос. Не очень удобно, поскольку длинная строка не видна в блоке, но других вариантов, пока что, найти не удалось.
Пример блока HTTP-запрос для передачи параметров в Битрикс.
URL для метода GET с передачей параметров следующий:
https://xxx.xxxxxx.ru/rest/177/4vxxxxxxxxxxx/crm.lead.add/?fields[TITLE]=ТЕСТ&fields[NAME]=${myNAME}&fields[PHONE][0][VALUE]=${myPHONE}&fields[PHONE][0][VALUE_TYPE]=MOBILE&fields[COMMENTS]=${myTEXT}
Название лида передавать без кавычек, иначе кавычки останутся в названии!
Пемеремнные в URL запроса добавляются в следующем виде:
${varname}, где varname — имя переменной.
В методе POST в BODY переменные передаются $varname.
Передача параметров лида из AimyLogic в Bitrix через метод POST
Несколько дней бесполезного общение с техподдержкой AimyLogic и Битрикса не привели к результату. JSON из body POST запроса отправляемого из AimyLogic упорно не желал «ложится» в Битрикс. Лид создавался, но без параметров из JSON. Техподдержка порекомендовала в Postman поменять TEXT на JSON, однако это не выправило ситуацию.
Наконец, я случайно добавил в заголовок (Headers) Content-Type:
Content-Type: application/json
и после этого JSON из POST запроса «лег» в лид Битрикса корректно. Создался лид с переданными в JSON параметрами.
Очень странно, что об этом моменте не знают в техподдержке обеих платформ. В статьях на сайте Aimylogic, видимо, специально опустили этот момент, чтобы за помощью обращались внедренцам за деньги. 🙂 Собственно, когда обратился в компанию «Умные решения» за разъяснением их статьи, мне так и сказали: «Давайте мы поучаствуем в вашем проекте и решим проблему с передачей данных». Я негодую… Если бы помогли, то подумал бы о привлечении их на каких-то этапах проекта, а при таком подходе — «нет уж, увольте».
Соответственно, при отправке через Postman нужно ОБЯЗАТЕЛЬНО включить Headers:
Из URL, соответственно, убираются все параметры и остается только строка вида:
https://yourportal.bitrix24.ru/rest/23/ydgt3vxxxxxxxxx/crm.lead.get/
или
https://yourportal.bitrix24.ru/rest/23/ydgt3vxxxxxxxxx/crm.lead.get.json
И аналогичным образом при отправке POST запроса из Aimylogic обязательно должен быть указан заголовок Content-Type. Без этого JSON из body при отправке в Битрикс через метод POST не отрабатывает, хотя в логах REST API в Битриксе он отображается.
Upd: в очередной раз изучая документацию AimyLogic я наткнулся на статью, где указано про этот момент с Content-Type. Странно, что техподдержка Aimylogic не знает этого.
При передаче параметров переменная в JSON должна ОБЯЗАТЕЛЬНО стоять в кавычках, иначе параметры JSON не «ложатся» в Битрикс:
{ "fields": { "TITLE": "AimyLogic", "NAME": "Глеб", "COMMENTS": "$myTEXT", "SECOND_NAME": "Егорович" } }
Логи REST API в Битриксе можно посмотреть здесь https://xxxxxx.ru/bitrix/admin/perfmon_table.php?lang=ru&table_name=b_rest_log. Включить логирование можно в настройках модуля REST API (Административный раздел -> Настройки -> Настройки продукта -> Настройки модулей -> REST API -> Логирование).
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=41&LESSON_ID=20212&LESSON_PATH=3911.20208.20212
Получение имени пользовательского поля Битрикс
Чтобы узнать ID созданного пользовательского поля для лидов, необходимо:
- перейти в раздел CRM → Настройки → Настройки форм и отчетов → Пользовательские поля → Лид (Список поле);
- в списке найти созданное пользовательское поле и кликнуть на нем;
- в поисковой строке браузера, в конце url, отобразится имя поля в виде: UF_CRM_XXXXXXXXXX
- Полная строка выглядит примерно так: https://your_bitrix_domain.ru/crm/configs/fields/CRM_LEAD/edit/UF_CRM_XXXXXXXXXX/, где UF_CRM_XXXXXXXXXX — это и есть ID.
Передача источника (SOURCE_ID) в лид Битрикс
Для лида важен источник — SOURCE_ID. В справочниках я добавил источник с именем: AimyLogic Smart IVR.
Нужно получить его SOURCE_ID. Получм список всех SOURCE и на среди них нужный из справочника «Источник».
https://yourportal.bitrix24.ru/rest/23/ydgt3vixxxxxxxx/crm.status.list?filter[ENTITY_ID]=SOURCE
После запуска строки в браузере или postman получаем JSON, одной из строк которого:
{"ID":"180","ENTITY_ID":"SOURCE","STATUS_ID":"14","NAME":"AimyLogic Smart IVR","NAME_INIT":"","SORT":"210","SYSTEM":"N","CATEGORY_ID":"0","COLOR":"#D3EEF9","SEMANTICS":""}
Искомый «SOURCE_ID»:»14″.
Другой вариант найти значение SOURCE_ID в браузуре по F12 зайти в режим разработчика и поиском найти источник добавленный в справочник «Источники»:
Это значение подставляется в &fields[SOURCE_ID] = 14.