Настройка исходящего HTTP Запроса на примере autoCRM
Общая информация
HTTP Запрос — механизм оповещения о событиях. Технология используется, чтобы передать данные о произошедшем событии из одной системы в другую, например: покупатель оставил комментарий, и уведомление об этом приходит в рабочий чат клиентского отдела; поступил новый заказ и необходимо получить расчет стоимости доставки от ТК; у пользователя подходит к концу срок подписки и нужно создать для менеджера задачу в CRM на пролонгацию.
Как можно было заметить, во всех приведенных примерах передача данных подразумевает выполнение какой-либо операции в принимающей системе. То есть происходит вызов конкретной функции и передача в нее требуемых параметров. Допустим, для запуска функции создающей запись на прием потребуются — id сотрудника к которому создается запись, дата, время, контактные данные клиента, и конечно же, нужен адрес самой функции.
Мы подошли к составляющим HTTP Запроса, определяющих, что, как и куда будет отправляются при наступлении заданного события. Разберем их подробнее.
URL — адрес выполняемой функции, в которую передаем данные. Так, функция создать новый контакт может иметь адрес http://example.com/create/contact, а функция обновить заказ — http://example.com/update/order.
Заголовки запроса — своего рода визитная карточка запроса, позволяющая принимающему серверу правильно обработать его. Например, в отдельном заголовке, указываются логин и пароль для прохождения авторизации в системе, куда передаем данные. У разных сервисов могут быть свои уникальные заголовки, необходимые для корректной обработки запроса.
Тело запроса — здесь передается информация о самом событии: когда произошло, какие поля заполнены, какие в них значения и т.д. Данные всегда представляют собой пары из «ключа» (имя поля) и «значения» (его содержимое). Чтобы правильно задать ключи, нужно понимать, какую именно структуру объекта с данными ожидает получить вызываемая функция. Объекты могут быть простыми и иметь вложения в виде других объектов и/или массивов. Содержимое объектов обособляется фигурными скобками: «{объект}»; а массивов — квадратными: «[массив]». Для обращения к ключам из простого объекта, достаточно указать их имена. Чтобы обратиться к ключу находящемуся во вложенном объекте, нужно через «.» указать сначала имя дочернего объекта а затем уже имя ключа. С вложенными массивами работает тот же принцип, но для указания нужного элемента массива используются не имена а порядковые номера, которые начинаются с «0». Разберем на примерах:
![](https://storage.crisp.chat/users/helpdesk/website/66315d1efb8c0000/bd61bd87-b570-4c9e-8173-ac6903_6209wv.jpeg)
![](https://storage.crisp.chat/users/helpdesk/website/cd2d80884ef42800/4eeb2956-2cc6-4a25-9529-c3c671_amm2dz.jpeg)
![](https://storage.crisp.chat/users/helpdesk/website/edd53c69ff047800/20d38f10-8c70-4399-9167-469eec_1xkq00p.jpeg)
Независимо от структуры данных, при передаче запроса, «упаковать» их можно по разному. На это влияют метод запроса и один из обязательных заголовков — Content-type.
Метод запроса — наиболее распространенными методами запросов являются GET и POST. Можно провести следующую аналогию: GET — такая почтовая открытка, где вся информация написана на ней же, рядом с адресом, и POST — как обычное письмо, которое всю информацию содержит внутри себя.
Content-type (тип данных) — один из обязательных заголовков запроса. Мы будем работать с двумя вариантами его значения: urlencoded — объединяет все данные в одну строку; JSON — данные передаются в формате объекта.
Предварительный итог: чтобы отправить запрос, нужно знать URL вызываемой функции и вводные данные которые она ожидает получить. Данные записываем в ключи, имена ключей указываем согласно структуре объекта, ожидаемого функцией. Указываем Content-type для передаваемого запроса и метод. Возможны самые разные комбинации и комбинированные варианты методов с типами данных. Всю информацию о требуемых настройках запроса можно получить в документации принимающего сервиса.
Создание подключения
Рассмотрим создание и настройку исходящего вебхука. В качестве примера возьмем ситуацию, когда через форму ВК собираются заявки от клиентов на тест-драйв. Действие может быть любым, важно, что форма рассчитана на какой-то один, конкретный тип обращения.
Подключение ВКонтакте к Albato
Нажимаем в верхнем меню «Подключения» и кликаем по кнопке «Добавить подключение»:
![](https://storage.crisp.chat/users/helpdesk/website/2dcd305152bd960/0f4338e7-b0e4-4c4c-b25d-c3f331_1pthv38.jpeg)
В открывшейся форме выбираем «HTTP Запрос», нажимаем «Добавить подключение»:
![](https://storage.crisp.chat/users/helpdesk/website/8fd001f07dff680/d0cf8105-77c0-4e76-8f1a-93d1ed_1nqf2r6.png)
Заполнение полей HTTP Запрос
В открывшейся форме заполняем все поля:
Название — указываем любое;
Урл — https://examle.autocrm.ru/api/lms/interest, где examle — домен вашей autoCRM;
Параметры HTTP-запроса (тело запроса) — параметры могут отличаться в зависимости от действия, которое необходимо совершать: например, добавить автомобиль или найти его по VIN, создать новый контакт или запись на сервисное обслуживание (указывается в request_type_id). Полный перечень действий и необходимых для них полей, можно получить у представителей autoCRM;
Заголовки — указываем параметр Authorization;
Content-Type — Json.
Пример заполненных полей:
![](https://storage.crisp.chat/users/helpdesk/website/6dc1e0e5fd5b1800/61078a18-169a-4be3-9b5e-84c000_1l61phz.png)
Создание связки
Во вкладке «Мои связки» нажмите кнопку «Создать связку», выберите «Новая»:
![](https://storage.crisp.chat/users/helpdesk/website/683fe1ee1efaf800/9afe5c35-49c2-47ed-8656-e88d8a_1fiwsmp.jpeg)
Откуда
Выберите в первом выпадающем списке сервис «ВКонтакте», во втором — событие «Заявка с формы (ответы как отдельные поля)» и в последнем списке укажите необходимое подключение. Указываем в «Дополнительных параметрах подключения» нужную группу и форму:
![](https://storage.crisp.chat/users/helpdesk/website/2908e9427fb8ec00/dd2938db-39d1-4322-9263-598ea6_1qwsctv.jpeg)
Режим работы связки
Чтобы получать новые заявки, выбираем «В реальном времени». Подробнее про режим «Миграция данных» можно прочитать в инструкции.
![](https://storage.crisp.chat/users/helpdesk/website/f6ae52753ca46000/f55cfcfd-a335-424e-94df-13f7ec_lrdwn8.jpeg)
Куда
Выберите в первом выпадающем списке «HTTP Запрос», во втором — событие «Отправить запрос» и в последнем списке укажите необходимое подключение:
![](https://storage.crisp.chat/users/helpdesk/website/7471506f4c01dc00/56d1adbb-2e8a-4e07-8c04-115fbd_rbkwuh.jpeg)
Настройка полей
Урл — оставляете пустым, будет использован урл указанный в подключении;
Метод запроса — 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, описание этого процесса выходит за рамки данной инструкции.
Все задаваемые настройки можно будет изменить в конструкторе связки. Пример заполненных полей:
![](https://storage.crisp.chat/users/helpdesk/website/c1eaa4811fa5c000/ee0e5226-d96c-4393-83e6-c46ebc_zmycfn.jpeg)
Дополнительные настройки связки
Чтобы корректно передавать данные в поле dealer_code, необходимо получаемое текстовое значения (название дилера) сопоставить с внутренними id autoCRM. Воспользуемся одним из инструментов Albato. Под первым шагом нажимаем на «+», что означает добавить шаг, и выбираем «Инструмент».
![](https://storage.crisp.chat/users/helpdesk/website/d52fc2d0a43e7000/989b1dc8-b59b-4860-855d-cbdfbc_pq1660.jpeg)
В открывшемся списке выбираем «[Табличная замена](https://blog.albato.ru/changing-data-on-the-fly-in-albato/)», опускаемся вниз и нажимаем «Далее».
Для начала выполним сопоставление значений для поля «dealer_code»:
название — задаем имя переменной которая будет доступна как результат работы нашего инструмента;
значение — выбираем в выпадающем списке из блока «ВКонтакте» поле, в котором приходит название дилерского центра;
добавляем условие.
![](https://storage.crisp.chat/users/helpdesk/website/80a1693165476000/650225ce-173c-4a58-808f-469f5c_j3cpnu.jpeg)
Создайте такие условия для всех дилерских центров в autoCRM которые планируете использовать. В поле «Иначе» указывается значение, которое будет передано в результат работы инструмента, если ни одна пара не будет найдена.
Зайдите в настройки шага «Отправить webhook»:
![](https://storage.crisp.chat/users/helpdesk/website/6f0269251669ac00/860a2a56-b764-4210-b4ac-d65dc3_1n1a9oo.jpeg)
В поле «dealer_code», в качестве передаваемой переменной, укажите результат работы инструмента табличная замена:
![](https://storage.crisp.chat/users/helpdesk/website/7ca437a372022c00/d2249aa1-e47f-4128-a974-bf3055_arr71u.jpeg)
Теперь настроим, упомянутый выше, фильтр входящих данных. Кликните по иконке воронки на панели первого шага:
![](https://storage.crisp.chat/users/helpdesk/website/ad86338a74933800/122d6ec7-c6ef-4689-bec9-9d817d_1q5okq7.jpeg)
Создаем группу условий. Указываем данные из каких полей будут сравниваться с контрольными значением. В условиях используем оператор «равно». Чтобы проверялось выполнение обоих условий, между ними должен быть оператор «И». Нажмите «Сохранить»:
![](https://storage.crisp.chat/users/helpdesk/website/fbbe3b7f127ae00/ab5d567c-6db4-4c78-a537-f5af9f_2iz7ip.jpeg)
Заключение
Все настройки сделаны. Можно запускать и тестировать связку. При поступлении новой заявки через форму ВК будет отправляться запрос на необходимое действие в autoCRM.
Подключение HTTP Запроса предоставляет, пожалуй, самый гибкий инструментарий для передачи данных. В зависимости от ваших целей, реализация функционала может отличаться. Например, формы в ВК могут быть сформированы не по типу обращения, а для конкретных дилеров в отдельности, тогда поле dealer_cod нужно будет прописать статично; если поля марки и модели автомобиля будут выбираться в выпадающих списках формы, то уже для них потребуется табличная замена, а фильтр запуска связки можно будет настроить по полю типу обращения.
Если клиент выбирает доступные дилерские центры, тип обращения, марку и модель в одной форме ВК, то можно ограничиться и вовсе одной связкой: создать шаги с табличными заменами для всех этих полей, и передавать значения в autoCRM динамически.
Обновлено на: 18/10/2022
Спасибо!