> For the complete documentation index, see [llms.txt](https://docs.leadconverter.su/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.leadconverter.su/bots/blok-deistvie/otpravit-cherez-vebkhuk.md).

# Отправить через вебхук

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

Полученный в результате ответ от обработчика может быть помещён в переменную, и использован внутри бота.\
\
Данная возможность предназначена для опытных специалистов, однако она **открывает невероятно широкие возможности для твоих ботов**.

## Параметры вебхука

* URL-адрес обработчика - название говорит само за себя :) На данный адрес будет отправлен запрос.
* Отправить запрос методом - один из шести методов (***GET, POST, JSON POST, PUT, PATCH, DELETE***), которым будет отправлен запрос. Назначения методов мы разберем немного позже.
* Сохранить результат - здесь можно выбрать переменную, в которую будет помещен результат выполнения запроса.
* Заголовки запроса
* Параметры запроса

## Методы запроса

Сейчас будет немного технической информации, но не стоит её пугаться. Ты сталкиваешься с этим каждый день, и даже сейчас с этим работаешь :)

Сервисы и платформы общаются между собой через протокол HTTP. Это один из протоколов передачи информации в сети интернет.

Метод указывает какое конкретное действие нужно сделать с ресурсом.&#x20;

### Самые популярные методы:

Метод "**GET**" - Используется для получения информации. На эту страничку ты попал именно этим методом.&#x20;

Метод "**POST**" - Используется для передачи информации в обработчик. Например, отправка формы с контактными данными.

Метод "**JSON POST**" - То же самое, что и метод **POST**, только передается в формате **JSON**.

### Редко встречающиеся методы:&#x20;

Встречаются редко, но стоит познакомиться с ними :wink:

Методы "**PATCH**" и "**PUT**" - используются для обновления уже созданного ресурса на сервере.

Разница в том, что `PATCH` содержит набор инструкций, описывающих, как ресурс, находящийся в данный момент на исходном сервере, должен быть модифицирован.&#x20;

А в `PUT` содержится новая версия ресурса целиком.

Метод "**DELETE**" - Говорит серверу о необходимости удалить данный ресурс.&#x20;

### Как мне выбрать, какой метод использовать?&#x20;

Это зависит от того, интеграцию с чем нужно сделать. Если это онлайн-платформа, например, Bitrix24 или AmoCRM - метод, которым нужно отправлять данные будет описан в документации к ней.

Если ты хочешь отправлять запрос на свой скрипт - ответ на данный вопрос тебе даст программист твоего проекта.&#x20;

А если программиста нет, и всё это слишком сложно для тебя - напиши нам в техподдержку, мы поможем реализовать твою задачу :)&#x20;

Выбирай способ связи с нами :point\_down:

{% content-ref url="/pages/-MasAPNcg291uNezFqb4" %}
[Как задать вопрос в поддержку?](/kak-zadat-vopros-v-podderzhku.md)
{% endcontent-ref %}

## Заголовки запроса

Здесь всё просто, слева - название заголовка, справа - значение, которое необходимо передать в него :)&#x20;

## Тело запроса

Здесь указываются параметры, которые вам необходимо передать в скрипт-обработчик.

Слева указывается название параметра, справа - его значение.

Так же можно подставлять переменные. Для этого используется такая же конструкция, как при подстановке переменной в блоке [сообщения](/bots/blok-soobshenie.md).\
`({ имя_переменной })`

Так же вы можете использовать [зарезервированные переменные](/peremennye/zarezervirovannye-peremennye-1.md).

### Передача многомерных массивов

Для того, чтобы создать вложенный массив, используй точку в названии ключа там, где необходимо перейти на следующий уровень вложенности.

Это звучит слишком замудрённо, но на самом деле это просто.&#x20;

Давай рассмотрим на примере.

Если ты хочешь создать массив вида

```
[
  "user" => [
    "name" => имя_подписчика,
    "last_name" => фамилия_подписчика,
  ],
  "group" [
    "id" => ид_группы,
    "channel_name" => название_группы
  ]
]
```

используй следующую запись в блоке "Действие":

<div align="left"><img src="https://leadconverter.su/assets/images/dokumentacziya/boty/deystvie/webook-params.png" alt=""></div>

## Сохранение переменной

Если обработчик вернул **не** JSON объект - результат будет помещён в переменную как простой текст.

В случае, если обработчик вернул в ответ - JSON - он будет сохранён в переменную как объект.&#x20;

Объект позволяет в дальнейшем обращаться к вложенным параметрам. Рассмотрим пример.

Ответ сервера:

```
{
  promo: {
    code: "ABC",
    percent: 15,
  }
}
```

Чтобы получить значение вложенного поля code, необходимо указать полный путь к нему начиная от корня.&#x20;

Рассмотрим на примере.&#x20;

Допустим, результат запроса сохранён в переменную "result".

Чтобы получить значение поля "code", мы используем следующую запись:

{ignore}

`({result.promo.code})` - в результате выполнения этой инструкции будет выведена строка "ABC".

{/ignore}

### Typecast в webhooks

Если нужно преобразовать данные при отправке данных, можно использовать typecast&#x20;

**(bool)** - преобразует значение в логическое true/false&#x20;

Пример:

```
(bool) true
```

**(int)** - преобразует значение в числовое

Пример:

```
(int) 123
```

### Что, если не удалось выполнить вебхук?

В случае, если при выполнении запроса произошла ошибка (сервер вернул ошибку 4xx или 5xx), платформа ещё несколько раз постарается отправить запрос.

Промежутки времени, через которые вебхук будет отправлен повторно:

* Первая попытка - 5 секунд
* Вторая попытка - 30 секунд
* Третья попытка -  1 минута
* Четвертая попытка - 30 минут
* Пятая попытка - 2 часа

В случае, если попытки кончились - выполнения сценария приостанавливается.

<figure><img src="/files/EFbUKbwRg7h1FwTf04WC" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Остались вопросы?

В нашей техподдержке вы с легкостью найдёте нужные ответы. Просто выберите удобный способ связи и свяжитесь с нами :relaxed::point\_down:
{% endhint %}

{% content-ref url="/pages/-MasAPNcg291uNezFqb4" %}
[Как задать вопрос в поддержку?](/kak-zadat-vopros-v-podderzhku.md)
{% endcontent-ref %}
