Передача данных из Aimylogic в лид Bitrix

После того как чат-бот или умный IVR собрал данные клиента их нужно передать в CRM для дальнейшей обработки. Для передачи информации в Битрикс необходимо сделать ряд шагов:

  1. Создать в Битриксе webhook.
  2. Сформировать и протестировать в Postman запрос к Битриксу.
  3. Вставить запрос в блок HTTP-запрос Aimylogic.
  4. Запустить сценарий, чтобы убедится, что скрипт отрабатывает корректно.

В целом ничего сложного, но есть нюансы.

Создание лида в Битрикс через метод 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-запроса примеры из статей не отрабатывают. При использовании 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.

Spread the love
Запись опубликована в рубрике IT рецепты с метками . Добавьте в закладки постоянную ссылку.

Обсуждение закрыто.