Настройка исходящего HTTP Запроса на примере autoCRM
Общая информация
HTTP Запрос — механизм оповещения о событиях. Технология используется, чтобы передать данные о произошедшем событии из одной системы в другую, например: покупатель оставил комментарий, и уведомление об этом приходит в рабочий чат клиентского отдела; поступил новый заказ и необходимо получить расчет стоимости доставки от ТК; у пользователя подходит к концу срок подписки и нужно создать для менеджера задачу в CRM на пролонгацию.
Как можно было заметить, во всех приведенных примерах передача данных подразумевает выполнение какой-либо операции в принимающей системе. То есть происходит вызов конкретной функции и передача в нее требуемых параметров. Допустим, для запуска функции создающей запись на прием потребуются — id сотрудника к которому создается запись, дата, время, контактные данные клиента, и конечно же, нужен адрес самой функции.
Мы подошли к составляющим HTTP Запроса, определяющих, что, как и куда будет отправляются при наступлении заданного события. Разберем их подробнее.
URL — адрес выполняемой функции, в которую передаем данные. Так, функция создать новый контакт может иметь адрес http://example.com/create/contact, а функция обновить заказ — http://example.com/update/order.
Заголовки запроса — своего рода визитная карточка запроса, позволяющая принимающему серверу правильно обработать его. Например, в отдельном заголовке, указываются логин и пароль для прохождения авторизации в системе, куда передаем данные. У разных сервисов могут быть свои уникальные заголовки, необходимые для корректной обработки запроса.
Тело запроса — здесь передается информация о самом событии: когда произошло, какие поля заполнены, какие в них значения и т.д. Данные всегда представляют собой пары из «ключа» (имя поля) и «значения» (его содержимое). Чтобы правильно задать ключи, нужно понимать, какую именно структуру объекта с данными ожидает получить вызываемая функция. Объекты могут быть простыми и иметь вложения в виде других объектов и/или массивов. Содержимое объектов обособляется фигурными скобками: «{объект}»; а массивов — квадратными: «[массив]». Для обращения к ключам из простого объекта, достаточно указать их имена. Чтобы обратиться к ключу находящемуся во вложенном объекте, нужно через «.» указать сначала имя дочернего объекта а затем уже имя ключа. С вложенными массивами работает тот же принцип, но для указания нужного элемента массива используются не имена а порядковые номера, которые начинаются с «0». Разберем на примерах:
Независимо от структуры данных, при передаче запроса, «упаковать» их можно по разному. На это влияют метод запроса и один из обязательных заголовков — Content-type.
Метод запроса — наиболее распространенными методами запросов являются GET и POST. Можно провести следующую аналогию: GET — такая почтовая открытка, где вся информация написана на ней же, рядом с адресом, и POST — как обычное письмо, которое всю информацию содержит внутри себя.
Content-type (тип данных) — один из обязательных заголовков запроса. Мы будем работать с двумя вариантами его значения: urlencoded — объединяет все данные в одну строку; JSON — данные передаются в формате объекта.
Предварительный итог: чтобы отправить запрос, нужно знать URL вызываемой функции и вводные данные которые она ожидает получить. Данные записываем в ключи, имена ключей указываем согласно структуре объекта, ожидаемого функцией. Указываем Content-type для передаваемого запроса и метод. Возможны самые разные комбинации и комбинированные варианты методов с типами данных. Всю информацию о требуемых настройках запроса можно получить в документации принимающего сервиса.
Создание подключения
Рассмотрим создание и настройку исходящего вебхука. В качестве примера возьмем ситуацию, когда через форму ВК собираются заявки от клиентов на тест-драйв. Действие может быть любым, важно, что форма рассчитана на какой-то один, конкретный тип обращения.
Подключение ВКонтакте к Albato
Нажимаем в верхнем меню «Подключения» и кликаем по кнопке «Добавить подключение»:
В открывшейся форме выбираем «HTTP Запрос», нажимаем «Добавить подключение»:
Заполнение полей HTTP Запрос
В открывшейся форме заполняем все поля:
Название — указываем любое;
Урл — https://examle.autocrm.ru/api/lms/interest, где examle — домен вашей autoCRM;
Параметры HTTP-запроса (тело запроса) — параметры могут отличаться в зависимости от действия, которое необходимо совершать: например, добавить автомобиль или найти его по VIN, создать новый контакт или запись на сервисное обслуживание (указывается в request_type_id). Полный перечень действий и необходимых для них полей, можно получить у представителей autoCRM;
Заголовки — указываем параметр Authorization;
Content-Type — Json.
Пример заполненных полей:
Создание связки
Во вкладке «Мои связки» нажмите кнопку «Создать связку», выберите «Новая»:
Откуда
Выберите в первом выпадающем списке сервис «ВКонтакте», во втором — событие «Заявка с формы (ответы как отдельные поля)» и в последнем списке укажите необходимое подключение. Указываем в «Дополнительных параметрах подключения» нужную группу и форму:
Режим работы связки
Чтобы получать новые заявки, выбираем «В реальном времени». Подробнее про режим «Миграция данных» можно прочитать в инструкции.
Куда
Выберите в первом выпадающем списке «HTTP Запрос», во втором — событие «Отправить запрос» и в последнем списке укажите необходимое подключение:
Настройка полей
Урл — оставляете пустым, будет использован урл указанный в подключении;
Метод запроса — POST;
Заголовок User-Agent — Mozilla/5.0 (compatible; Albato/1.0; +[https://albato.ru/bot](https://albato.ru/bot));
Authorization (заголовок) — Basic, является результатом кодирования строки «логин:пароль» алгоритмом MIME base64 (например, для логина «admin» и пароля «password» будет равен «YWRtaW46cGFzc3dvcmQ=» https://prnt.sc/110zy6h;
last_name, first_name, phone, email — заполняем соответствующими значениями из блока ВК в выпадающих списках.
dealer_code — это поле так же заполняются на основе данных, поступивших от клиента через форму ВК, но пока оставим его пустыми, вернемся к нему позже;
brand_id, model_id — эти поля заполняем статичными значениями, т.к. подразумевается, что будет настроен фильтр входящих данных, и связка будет запускаться только если заявка пришла конкретно на эти марку и модель автомобиля;
request_type_id — указывается id типа обращения;
source_id — внутренний id источника заявки.
Все внутренние id можно получить непосредственно в autoCRM, описание этого процесса выходит за рамки данной инструкции.
Все задаваемые настройки можно будет изменить в конструкторе связки. Пример заполненных полей:
Дополнительные настройки связки
Чтобы корректно передавать данные в поле dealer_code, необходимо получаемое текстовое значения (название дилера) сопоставить с внутренними id autoCRM. Воспользуемся одним из инструментов Albato. Под первым шагом нажимаем на «+», что означает добавить шаг, и выбираем «Инструмент».
В открывшемся списке выбираем «[Табличная замена](https://blog.albato.ru/changing-data-on-the-fly-in-albato/)», опускаемся вниз и нажимаем «Далее».
Для начала выполним сопоставление значений для поля «dealer_code»:
название — задаем имя переменной которая будет доступна как результат работы нашего инструмента;
значение — выбираем в выпадающем списке из блока «ВКонтакте» поле, в котором приходит название дилерского центра;
добавляем условие.
Создайте такие условия для всех дилерских центров в autoCRM которые планируете использовать. В поле «Иначе» указывается значение, которое будет передано в результат работы инструмента, если ни одна пара не будет найдена.
Зайдите в настройки шага «Отправить webhook»:
В поле «dealer_code», в качестве передаваемой переменной, укажите результат работы инструмента табличная замена:
Теперь настроим, упомянутый выше, фильтр входящих данных. Кликните по иконке воронки на панели первого шага:
Создаем группу условий. Указываем данные из каких полей будут сравниваться с контрольными значением. В условиях используем оператор «равно». Чтобы проверялось выполнение обоих условий, между ними должен быть оператор «И». Нажмите «Сохранить»:
Заключение
Все настройки сделаны. Можно запускать и тестировать связку. При поступлении новой заявки через форму ВК будет отправляться запрос на необходимое действие в autoCRM.
Подключение HTTP Запроса предоставляет, пожалуй, самый гибкий инструментарий для передачи данных. В зависимости от ваших целей, реализация функционала может отличаться. Например, формы в ВК могут быть сформированы не по типу обращения, а для конкретных дилеров в отдельности, тогда поле dealer_cod нужно будет прописать статично; если поля марки и модели автомобиля будут выбираться в выпадающих списках формы, то уже для них потребуется табличная замена, а фильтр запуска связки можно будет настроить по полю типу обращения.
Если клиент выбирает доступные дилерские центры, тип обращения, марку и модель в одной форме ВК, то можно ограничиться и вовсе одной связкой: создать шаги с табличными заменами для всех этих полей, и передавать значения в autoCRM динамически.
Обновлено на: 18/10/2022
Спасибо!