# Триггеры

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

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

Триггеры настраиваются в одноименном разделе в личном кабинете.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2F9MNL0XB3KpIg7wfLA3Yk%2Fimage.png?alt=media&#x26;token=bda6c162-ac01-4838-8ff3-4033060ac60b" alt=""><figcaption></figcaption></figure>

## События

Для работы триггеров поддерживаются следующие события.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FQWsaXpEq535o2VXrAUml%2Fimage.png?alt=media&#x26;token=4e2146af-cbb3-477f-9134-1b531ba383f3" alt=""><figcaption></figcaption></figure>

### **Сообщения**

#### **Новое сообщение**

**Сообщения могут быть как ВХОДЯЩИМИ так и ИСХОДЯЩИМИ**&#x20;

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FbZ286iXZ5UJqHWkCLBgT%2Fimage.png?alt=media&#x26;token=26c7dbda-397e-4752-ae63-2c143239d13f" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**Внимание!** Нажатия на кнопки в чат-ботах так же учитываются триггерами как новые сообщения.
{% endhint %}

**Триггер на входящее сообщение:**

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

#### **Триггер на исходящее сообщение:**&#x20;

Данный триггер сработает в момент, когда администратор сообщества напишет сообщение подписчику от имени сообщества в диалоге с сообществом.&#x20;

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

В перечисленных выше видах триггеров можно настроить любой из нижеперечисленных вариантов:

* Любое сообщение (не рекомендуется использовать с любым другим триггером данной группы)
* Сообщение равно (полностью соответствует указанному слову или фразе без учета регистра)
* Сообщение не равно (любая фраза, кроме указанной)
* Сообщение содержит (содержит указанную фразу)
* Сообщение не содержит (любая фраза, не содержащая указанную)
* Сообщение соответствует регулярному выражению (можно задать определенное регулярное выражение)
* Сообщение - телефон российского формата с 11 цифрами (можно задать с 8, +7 или 7)
* Сообщение - E-mail (сработает только для сообщения с электронной почтой. Если в сообщении будет дополнительный текст, кроме почты, то триггер не сработает)
* Сообщение - Число (соответствует указанному числу)
* Сообщение меньше числа (любое число, которое меньше указанного)
* Сообщение больше числа (любое число, которое больше указанного)
* Сообщение содержит стикер (сработает на любой стикер)
* Сообщение содержит фотографию (любое сообщение с фотографией)
* Сообщение содержит видеозапись (любое сообщение с видео)
* Сообщение содержит аудиозапись (любое сообщение с аудио)
* Сообщение содержит документ (любое сообщение с документом)
* Сообщение содержит голосовое сообщение (любое сообщение с голосовым сообщением)
* Сообщение содержит товар (любое сообщение с товаром, либо можно выбрать конкретный товар. Если не выбран конкретный товар - триггер сработает в том числе и на услугу)
* Сообщение содержит вложения (любое сообщение с любым вложением или несколькими)
* Сообщение не содержит вложения (любое сообщение без вложения)
* Ссылка на диалог с сообществом содержит параметр ref (срабатывает, если пользователь перешёл в диалог по ссылке, в которой указан параметр `ref`)
* Ссылка на диалог с сообществом содержит параметр ref\_source (срабатывает, если пользователь перешёл в диалог по ссылке, в которой указан параметр `ref_source`)

### **Фотографии**

#### **Загрузка фотографии**

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

{% hint style="warning" %}
**Внимание!** Этот триггер не работает для сотрудников сообщества. Если необходимо протестировать его работу, нужно привлечь сторонних пользователей. Такое ограничение на стороне ВКонтакте.
{% endhint %}

#### **Новый комментарий к фотографии**

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

#### **Редактирование комментария к фотографии**

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

#### **Удаление комментария к фотографии**

Данный триггер сработает в момент удаления ранее оставленного комментария к любой или указанной по ссылке фотографии.

#### **Восстановление удалённого комментария к фотографии**

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

{% hint style="info" %}
Группы триггеров **Видеозаписи, Комментарии на стене, Обсуждения, Комментарии к товарам** работают аналогично триггерам из группы Фотографии.
{% endhint %}

{% hint style="success" %}
Триггеры из группы "**Видеозаписи"** также срабатывают на "**VK-клипы"**.\
Клипы ВКонтакте обрабатываются системой как видеозаписи, поэтому **комментарии к VK-клипам** вызывают те же триггеры, что и комментарии к обычным видеозаписям.
{% endhint %}

### **Записи на стене**

**Добавление записи**

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

**Репост записи**

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

**Лайк записи**

Данный триггер сработает в момент, когда пользователь поставит лайк на запись (пост) на стене сообщества.

Можно настроить срабатывание:

* на лайк **любой записи** сообщества;
* на лайк **конкретной записи**, указанной по ссылке (формат: `https://vk.com/wall-XXXXX_YYY`).

### **Заказ**

**Создание заказа**

Данный триггер сработает в момент оформления заказа на товар в сообществе. Для работы данного типа события необходимо включить расширенный раздел "Товары" в настройках сообщества.

### **Пользователи**

**Вступление в сообщество**&#x20;

Данный триггер сработает в момент вступления пользователя в сообщество.

**Выход из сообщества**&#x20;

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

### **Прочее**

**Голос в публичном опросе**

Данный триггер сработает после голосования в любом или указанном по ссылке опросе ([как получить ссылку на опрос?](https://help.senler.ru/senler/help/faq/obshie-voprosy/kak-poluchit-ssylku-na-opros)). В случае определенного опроса нужно задать еще и идентификатор ответа ([как получить идентификатор ответа в опросе?](https://help.senler.ru/senler/help/faq/obshie-voprosy/kak-poluchit-identifikator-otveta-v-oprose)).

{% hint style="warning" %}
**Внимание!** В опросе с выбором нескольких вариантов в триггер отправляется только первый выбранный вариант.
{% endhint %}

**Lead forms - Новая заявка**

Данный триггер работает совместно с приложением ВКонтакте - [Форма сбора заявок](https://vk.com/page-19542789_53869861). Можно привязать его к любой или указанной по ссылке форме. Также есть возможность сохранить ответы пользователя в переменные, которые затем добавятся в его карточке в нашем сервисе.

**Заявка с лендинга**

Данный триггер сработает в момент отправки заявки с лендинга. Помимо настройки самого триггера в лендинге необходимо добавить в любом из блоков кнопку типа Заявка с номером телефона.

### VK Donut

**Пользователь оформил подписку**

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

**Пользователь отменил подписку**

Данный триггер сработает для пользователя, решившего перестать поддерживать автора сообщества.

## Действия

На каждое событие можно добавить одно или несколько следующих действий:

* Добавить в группу подписчиков
* Исключить из группы подписчиков
* Добавить в чат-бота

&#x20;      Можно добавить подписчика как в начало чат-бота, так и на определенный его шаг.

<figure><img src="https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/UaW61vEGiKXaGhM84fpw/image.png" alt=""><figcaption><p>Добавление в бота на определенный шаг</p></figcaption></figure>

* Исключить из чат-бота

## Пример

Для примера разберем добавление в группу подписчиков по ключевому слову "подарок".

Для этого необходимо создать триггер с такими настройками:

1. Тип события - **Новое сообщение**
2. Проверка сообщения - **Сообщение равно** (для точного совпадения)
3. Значение - **подарок** (регистр букв не учитывается)
4. Добавить в группу подписчиков - Выбрать целевую группу

![Добавление в группу подписчиков по ключевому слову "подарок"](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/qYJjvIdE5ur4dyNnm1rH/image.png)

## Ошибки

#### Дублирующие сообщения

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

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

## Настройка

Callback API позволяет получать уведомления о событиях в сообществе: разрешение сообщений, входящие сообщения и другие ([документация ВКонтакте](https://vk.com/dev/callback_api)).

На основе Callback API работают триггеры и кнопки в ботах. Если при их работе возникают неполадки, то необходимо выполнить автоматическую настройку в раздел Настройки - Подключение.

![Автоматическая настройка Callback API](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/VY2wgMPQin0d25cz6roW/image.png)

Возможные ошибки при автоматической настройке:

{% content-ref url="../../help/oshibki/oshibki-vkontakte/error-10-internal-server-error" %}
[error-10-internal-server-error](https://help.senler.ru/senler/help/oshibki/oshibki-vkontakte/error-10-internal-server-error)
{% endcontent-ref %}

{% content-ref url="../../help/oshibki/oshibki-vkontakte/error-2000-servers-number-limit-is-reached" %}
[error-2000-servers-number-limit-is-reached](https://help.senler.ru/senler/help/oshibki/oshibki-vkontakte/error-2000-servers-number-limit-is-reached)
{% endcontent-ref %}

#### Сервер вернул неправильный ответ

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

![Сервер вернул неправильный ответ](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/qQTynb6SA7cMAoGO8Rh8/image.png)

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

## Полезные материалы

{% embed url="<https://vk.com/dev/groups_events>" %}

{% embed url="<https://vk.com/dev/callback_api>" %}
