# Блок - действие

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

{% hint style="warning" %}
Все действия внутри блока "Действие" выполняются **асинхронно**, а не последовательно.
{% endhint %}

Далее представлен полный список возможных действий.

### Действия с переменными

Это действия, которые выполняются с пользовательскими/глобальными переменными бота.

* Установить переменную
* Формула
* Прибавить
* Вычесть
* Разделить
* Умножить
* Добавить в конец
* Добавить в начало
* Случайное число
* Порядковый номер участника шага
* Удалить переменную

{% content-ref url="peremennye-v-botakh" %}
[peremennye-v-botakh](https://help.senler.ru/senler/kanaly/telegram/chat-boty/peremennye-v-botakh)
{% endcontent-ref %}

### Действия с ответом на сообщение

{% hint style="warning" %}
**Внимание!** Данные действия выполняются только после пункта **Ответ на сообщение**.
{% endhint %}

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FPhNabq3kNSrzljOqr8KI%2Fimage.png?alt=media&#x26;token=f816dc05-fb4c-4799-b10a-b9bdae1b76ee" alt=""><figcaption><p>Ожидание ответа в боте</p></figcaption></figure>

* #### Сохранить ответ в переменную

Ответ пользователя будет сохранен в указанную переменную.

* Сохранить ответ с вложениями

Ответ пользователя с вложениями будет сохранен в указанную переменную. Вложения при этом сохраняются в виде ссылки.

* #### Прибавить ответ к переменной

Если переменная является числовым значением, ответ пользователя будет к ней прибавлен.

* #### Вычесть ответ из переменной

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

* Добавить в конец переменной

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

* Добавить в начало переменной

То же самое, только ответ будет добавлен в начало.

* Добавить в конец переменной с вложениями

Работает также, как и добавление к обычной переменной.

* Добавить в начало переменной с вложениями

Работает также, как и добавление к обычной переменной.

{% hint style="warning" %}
**Внимание!** Бот не получает измененную версию ответа, если пользователь отредактировал ответ.
{% endhint %}

### Действия со статусами набора сообщения

* Установить статус набора текста

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2Ffu37NhaCOxTd0MEjvRgm%2Fimage.png?alt=media&#x26;token=d69797e6-2f5a-48b2-a8a4-5b6372c7c82a" alt=""><figcaption><p>Статус набора текста</p></figcaption></figure>

* Установить статус записи голосового сообщения

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FpTzB3LIJI30w371jl1pn%2Fimage.png?alt=media&#x26;token=e2ba8b42-14db-470f-a0e3-2a0806c8cfd4" alt=""><figcaption><p>Статус записи голосового сообщения</p></figcaption></figure>

{% hint style="info" %}
После установки статуса он отображается в течение 5 секунд.\
После этого происходит ожидание ещё 5 секунд, по завершении которого сценарий переходит к следующему шагу.
{% endhint %}

### Действия с вебхуком

На выбранный адрес будет отправлен вебхук с данными участника бота. В ответ сервер должен вернуть Status 200, иначе сервис попытается еще раз отправить запрос.

При отправке вебхука можно использовать шаблоны. В шаблонах с помощью конструктора можно собрать свой набор данных, передаваемых вебхуком. Пример:

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FUVGV8KsrHnQH0mfLwz7u%2Fimage.png?alt=media&#x26;token=04228603-8c7c-42f1-b8f3-c9e335218d5e" alt=""><figcaption><p>Конструктор шаблона для вебхука</p></figcaption></figure>

Также доступны 2 шаблона по умолчанию. Их изменять нельзя, но можно скопировать и доработать под себя.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2F2IJvsSsuvLK6RnJYfRRs%2Fimage.png?alt=media&#x26;token=886ab7dd-bd19-4197-aebd-542871c9e35d" alt=""><figcaption><p>Шаблоны для вебхуков</p></figcaption></figure>

Отправить вебхук можно двумя типами HTTP-запросов:

* GET
* POST

Для POST-запроса доступны 2 формата:

* POST\_JSON
* POST\_FORM\_DATA

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

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FR4KN7B7JQXzKYBFFqsM6%2Fimage.png?alt=media&#x26;token=d6a4bb55-e479-4ae0-a260-6f2818b1c6ab" alt=""><figcaption><p>Кнопка для отправки тестового запроса</p></figcaption></figure>

Далее можно **обработать ответ** сервера и сохранить его в переменные.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FUM0daB2hy05F8aFq7EKn%2Fimage.png?alt=media&#x26;token=412bc4d9-a436-4dab-b74c-4d637f8aa748" alt=""><figcaption><p>Обработать ответ в переменные</p></figcaption></figure>

Если ниже не нажимать на кнопку **Добавить ответ**, то ответ сервера будет распарсен по правилу, описанному в подсказке на скриншоте.

В ином случае, каждый добавленный ответ можно сохранить в отдельные пользовательские/глобальные переменные. Пример:

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2F2k4jsv7UdRMn3AviKJHg%2Fimage.png?alt=media&#x26;token=2a34adc7-a08c-4b57-9bc4-827b6a0cb2db" alt=""><figcaption><p>Сохранение ответа сервера в переменные</p></figcaption></figure>

Если на сервере подготовить структуру данных для ответа, то в этом окне можно отмечать чекбоксами, что конкретно сохранить в переменные.

После выбора определенных данных в настройках вебхука будет виден соответствующий результат:

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FqJj6TUOXanmHZqk7Qsfu%2Fimage.png?alt=media&#x26;token=cd067d00-cd9c-4e88-8a60-73f79107a20c" alt=""><figcaption><p>Добавленный ответ</p></figcaption></figure>

Это говорит о том, что выбранные данные из ответа сервера будут сохранены в пользовательскую переменную *example*, а сама переменная появится в карточке вашего подписчика.

Еще можно включить опцию **ожидать ответ**.

Она говорит о том, что бот продолжит идти по цепочке только в случае успешного выполнения, но если данную опцию не включать, то цепочка будет идти дальше, даже в случае ошибок во время выполнения вебхука.

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

### Действия с ботами

* Добавить в бота

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

* Удалить из бота

{% hint style="warning" %}
**Внимание!** После удаления пользователя из бота дальнейшие шаги в этом боте выполняться не будут, поэтому такое действие нужно ставить в конце схемы бота.
{% endhint %}

### Действия с сообщениями из бота

* Удалить сообщение

Для удаления сообщения необходимо выбрать бота и шаг. У пользователя будет удалено данное сообщение, если прошло не больше 48 часов.

{% hint style="info" %}
Данная функция не удаляет пересланные сообщения, только оригинал.
{% endhint %}

Если с сообщением были отправлены обычные кнопки или inline, то у пользователей они также удалятся.&#x20;

### Действия с метками

Это действия, которые выполняются с персональными метками участника бота.

* Добавить метку
* Удалить метку

### Действия с группами подписчиков

Это действия, которые выполняются с группами подписчика.

* Добавить в группу
* Удалить из группы

{% hint style="warning" %}
**Внимание!** Чтобы не допустить зацикливания, при добавлении в группу подписчиков не запускаются связанные боты. Для добавления пользователя в бота необходимо создать дополнительное действие.
{% endhint %}

### Очистить данные

Это действия, которые удаляют из карточки подписчика все связанные с ним сущности.

* Удалить из всех групп
* Удалить все метки
* Удалить из всех чат-ботов
* Удалить все пользовательские переменные
* Удалить из базы

{% hint style="warning" %}
**Внимание!** Действие **Удалить из базы** не удаляет ваших подписчиков из базы, но меняет у них статус с активного на неактивный.
{% endhint %}

### Ответить на callback запрос

Данное действие используется совместно с шагом-сообщением, где добавлена кнопка и включена опция **Клавиатура внутри сообщения**.

Пример использования в чат-боте:

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FzvPVLKxmiY08pfNfsPju%2Fimage.png?alt=media&#x26;token=a89fffd3-26e8-4c6a-93a2-3c9ad10aa5bc" alt=""><figcaption><p>Использование действия "Ответить на callback запрос" в схеме чат-бота</p></figcaption></figure>

Вы можете его использовать, если вам нужно:

* Отключить анимацию загрузки кнопки после нажатия
* Отправить пользователю всплывающее уведомление (pop-up)
* Передать параметры по указанной ссылке (только внутри Telegram)

Настройки действия:

{% hint style="warning" %}
При создании шага настройки по умолчанию не заданы — это просто отключит анимацию кнопки.
{% endhint %}

* Ввод сообщения, которое будет отображаться во всплывающем уведомлении или в pop-up'е
* Ввод ссылки, благодаря которой будут переданы параметры в вашего TG-бота (поддерживаются ссылки на вашего бота, начинающиеся с <https://t.me>)
* Включение возможности отправки всплывающего сообщения (или pop-up'а опцией Предупреждение)

Существует 3 наиболее популярных варианта применения данного действия. Рассмотрим каждый из них:

1. **Простое отключение анимации**

*Настройки:*

Нет текста, галочка Предупреждение выключена, нет URL

*Результат:*

Анимация кнопки завершается и выполняется переход на следующий шаг в чат-боте.

*Когда применять?*

Если нужно убрать индикатор загрузки, чтобы пользователь не думал, что бот завис.

*Примечание*: В веб-версии Telegram анимация кнопок не поддерживается.

2. **Уведомление пользователя (pop-up)**

*Настройки:*

Есть текст, отметка Предупреждение включена, нет URL

*Результат:*

Появляется всплывающее окно с сообщением. Бот продолжает работу независимо от действий пользователя.

*Когда применять?*

Для подтверждения действия или информирования (например, «Запрос принят!»).

3. **Передача параметров TG-боту**

*Настройки:*

Есть текст, включено «Предупреждение», указан URL (например, <https://t.me/bot?start=param>).

*Результат:*

Параметры передаются боту через deeplink-ссылку в бота по внутренней ссылке Телеграм.

Внешние ссылки за пределы Телеграма не поддерживаются.

*Когда применять?*

Для выполнения действий с параметрами (например, подписка на группу подписчиков).
