Веб-хуки
Веб-хуки — это простой способ, с помощью которого одно приложение может уведомлять другое о каком-то событии в реальном времени.
Описание работы
Ваш вебхук будет получать запросы с разных IP-адресов.
Предположим, вы создаете бота, который автоматически обрабатывает заказы пользователей, скажем, на сайте интернет-магазина. В этот бот встроена возможность использовать веб-хуки для того, чтобы другие системы узнавали о ключевых событиях. Вот как это работает:
Создание веб-хука: Вы создаете веб-хук для какого-то важного события, например, завершения обработки заказа. В процессе создания вы указываете URL-адрес, на который нужно отправить уведомление, когда произойдет определенное событие.
Происходит событие: В диалоге с Савви пользователь делает заказ, и Савви успешно его обрабатывает. После завершения всех вычислений и операций, Савви понимает, что пришло время уведомить другие системы об этом.
Отправка веб-хука: Сразу после успешного завершения обработки заказа, Савви отправляет HTTP-запрос на указанный URL, содержащий информацию о заказе — его статус, номер, детали и т.д. Этот запрос как раз и называется веб-хуком.
Обработка на стороне получателя: Другая система — например, сервис доставки или CRM — получает этот запрос (веб-хук) и использует его для выполнения дальнейших действий. Допустим, CRM получает уведомление и обновляет данные клиента о его новом заказе, или сервис доставки начинает подготовку к отправке посылки.
Таким образом, использование веб-хуков в Савви позволяет легко и автоматически интегрировать его с другими приложениями и сервисами, устраняя необходимость в постоянных проверках статуса и давая возможность сразу же реагировать на произошедшие события. Это делает взаимодействие между системами более быстрым, точным и удобным.
Теперь пройдемся подробнее по техническим особенностям каждого из этапов.
Создание веб-хука
Настройте вебхук
При выборе откроется форма шага 1:

Название действия - просто название для отображения в списке.
Название шага - название самого шага.

Переменные действий - это переменные, которые необходимо заполнять ботом, и которые далее можно будет выбирать при добавлении шагов / вызове конкретных запросов.
Например, вы используете вызов по API для получения данных по заказу используя телефон клиента и дату рождения. Вы можете задать тут сразу эти переменные и бот поймет, что их нужно собирать у клиента перед вызовом API. При добавлении шагов эти переменные будут заполняться конкретными значениями и их можно подставлять в нужные места.

Константы действия - это конкретные постоянные значения, которые можно задать фиксированно и которые можно вызывать во всех последующих шагах.
Например, вам понадобилось обратиться по API к какому-то сервису. При этом, при вызове этого сервиса используется какое-то конкретный ваш токен, который необходимо передавать на нескольких шагах. Используя константы, можно задать этот токен один раз и потом выбирать его, без необходимости прописывать его каждый раз на каждом шаге отдельно.
Настройка раздела "Условия срабатывания"

Название функции - это название функции, которое будет видеть бот. Данное название указывается на английском без пробелов. Название должно отображать общий смысл действия.
После заполнения названия действия можно нажать на кнопку 🔃 справа от поля. Тогда название сгенерируется автоматически.
Описание функции - более подробное описание смысла действия. По данному описанию Савви будет понимать, когда ее нужно вызывать.
Сообщение об ошибке, передаваемое боту - сообщение, которое будет получать Савви от действия, в случае, если на стороне веб-хука вернется ошибка. Может быть пустым, в этом случае Савви получит текст ошибки от URL-адреса, на который отправляется веб-хук.
Настройки веб-хука
Название, URL и метод
Название - название для отображения в списке шагов.
URL - сюда указывается адрес на стороне куда будет передаваться запрос. Это может быть как IP-адрес, так и доменное имя, например, https://192.168.34.12
или https://test.ru
(тут будет какой-то ваш нужный адрес).
Метод запроса - метод отправляемого запроса (GET, POST и т.д.). Этот метод должна предоставлять конечная сторона. Подробнее о разных методах, можно посмотреть здесь.
Параметры, которые будут передаваться в URL
Параметры, которые будут передаваться в URL - это те параметры, которые обычно в адресе передаются после знака ?.
Например:
https://192.168.34.12/CRM?phone=79112345678&date=09012024
Где, phone и date - это параметры
В форме шага данный пример будет выглядеть так:

Но в данном случае, мы передали фиксированные значения. А как сделать, когда эти величины являются изменяемыми и у каждого клиента / диалога они будут свои? Для этого используются переменные.
Использование переменных (аргументы действия)
Переменные мы указывали на предыдущем шаге, когда добавили их в форме действия, теперь нам осталось их просто выбрать через кнопку +. Для выше описанного примера, когда нам нужно указать изменяемые параметры, мы делаем так:


При этом, несмотря на то, что мы рекомендуем делать подробное описание, боту даже не обязательно описывать дополнительные инструкции о том, какие параметры ему нужно запросить у клиента, он и так это поймет. Поэтому названия переменных лучше выбирать понятные.
Заголовки запроса
В заголовках запроса часто передается информация об авторизации.
Это скорее статические параметры, но иногда могут передаваться и динамические параметры, какие-либо ключ шифрования, которые получены на предыдущем шаге.

Отправка запросом с данными (POST, PUT, DELETE, PATCH)
В случае с отправкой POST, PUT, DELETE и PATCH запросов появляется поле, в котором указывается тело запроса.
У нас реализовано два типа тела - это текст и JSON.
Для того, чтобы при отправке не возникало ошибок, требуется соблюдать определенные правила синтаксиса. Элементы JSON должны быть в кавычках. Переменные так же выбираются нажатием на +. На примере выше рассмотренного примера, тело запроса будет выглядеть так:

Статус коды
Можно указать статус коды, на которые бот будет реагировать. По умолчанию ставится код 200, т.е. код успешного возврата. В случае не успеха, бот получит текст, написанный в поле "Сообщение об ошибке" из настроек действия.
Можно убрать отбор на статус коды - и тогда он будет видеть все статусы и все ошибки, которые ему возвращаются и выдавать их клиенту.
Правила ответа боту

Поскольку, как мы говорили ранее, мы можем передавать последовательность шагов, в том числе в виде веб-хуков за один раз, то есть настройка, которая определяет, а что мы передадим боту в ответ:
Все - передадим все ответы с каждого шага
Только первый - только ответ от первого шага
Только последний - только ответ с последнего шага
По умолчанию, ставится ответ с последнего шага, что кажется логичным. Хотя, конечно, бывают сценарии в которых мы можем передать информацию с первого шага и дальше выполнить ряд служебных действий, ответ от которых мы не передаем клиенту, например, когда мы просто оповещаем сторонние системы о каком-то триггере.
Сообщение об ошибке

Last updated
Was this helpful?