Перейти к основному контенту

Триггеры (by Захаров)

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


Логика запуска триггера описана на примере установки триггера.

Триггеры можно создавать в разделе главного меню Настройки бота подраздел Триггеры. 

image.png

На экранной форме нажать кнопку Новый триггер

image.png

Пример 1

image.png

image.png

Создадим триггер без подписки на событие, для этого заполним следующие параметры:

  • Наименование триггера - текстовое интуитивно понятное название триггера.
  • Код - Дополнительный уникальный идентификатор. Используется для поиска текущего объекта, например, в JavaScript функциях.
  • Список событий, на которые может быть подписан триггер с названием объекта, который будет подписан на данный тип события (например полное название тэга, контекста, атрибута и т.д).:
    • Любое изменение Лида
    • Изменение статуса Лида
    • Изменение (добавление или удаление) Тэга Лида
    • Изменение (добавление или удаление) Контекста Лида
    • Изменение Атрибута Лида
    • Любое изменение в Заказе
  • JavaScript условие запуска Скрипта/Триггера - Условие при котором происходит активация скрипта.image.png

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

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

  • Добавить тэги - Дополнительные теги скрипта.
  • Удалить тэги - Удалить теги оригинального скрипта.
  • Контекст запускаемого скрипта/триггера  - От лица кого будет происходить активация скрипта. (точно ли??)
  • Запускаемый скрипт - Какой скрипт будет вызываться триггером.
  • Запускаемый триггер - значение выбирается из списка созданных триггеров.

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

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

  • Запустить указанный Скрипт/Триггер в - указывается дата и время, в которое будет выполнен запуск триггера/скрипта точно в указанное время (с погрешностью в 1 минуту).
  • Запустить указанный Скрипт/Триггер через (минут) - числовое значение в минутах, через которое будет выполнен запуск триггера/скрипта, спустя указанное количество минут. 

image.png

Параметр Запустить указанный Скрипт/Триггер через (минут) игнорируется, если указано точное время запуска, т.е. если указан параметр Запустить указанный Скрипт/Триггер в.

  • JavaScript условие запуска Скрипта/Триггера - условие, при выполнении которого произойдет запуск триггера.

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

Если поле JS условия пусто, то оно всегда истинно при проверке.

Нажать кнопку Создать.

image.png

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

image.png

На экранной форме в разделе Триггеры будет располагаться список созданных триггеров для данного бота.

image.png

Этапы запуска и установки триггера:

  • Наступление события для запуска триггера или отложенный запуск по расписанию.

  • Проверка JS условия.

  • Запуск связанного Скрипта / Триггера или добавление отложенного запуска в планировщик.

В разделе Триггеры располагается список созданных триггеров для данного бота с доступными операциями:

  • Редактировать триггер
  • Сообщения полученные подписчиками в результате выполнения триггера
  • Подписчики получившие сообщение в результате выполнения триггера
  • Удалить триггер

image.png

JS методы для работы с триггерами

С триггерами можно работать из JS следующими методами объекта bot:

Название метода Метод
Удалить триггеры для лида bot.clearTriggerJobsForLead(?int $leadId): bool
Удалить триггеры для всех лидов персоны

bot.clearTriggerJobsForAllPersonLeads(?int $personId): bool

Получить ID триггера по наименованию

bot.getTriggerIdByName(string $triggerName): ?int

Запустить триггер для лида по ID триггера

bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true): bool

Запустить триггер для лида по наименованию

bot.runTriggerByNameForLead(?string $triggerName, ?int $leadId, ?int $ticketId = null, $addToQueue = true): bool

Запустить триггер для персоны по ID

bot.runTriggerForPerson(?int $triggerId, ?int $personId, ?int $ticketId = null, $addToQueue = true): bool

Запустить триггер для персоны по наименованию

bot.runTriggerByNameForPerson(?string $triggerName, ?int $personId, ?int $ticketId = null, $addToQueue = true): bool

Очистить джобы по id триггера

bot.clearTriggerJobsById(?int $triggerId): bool

Очистить джобы по наименованию триггера

bot.clearTriggerJobsByName(?string $triggerName): bool

Очистить джобы по id триггера и ID заявки

bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId): bool

Очистить джобы по наименованию триггера и ID заявки

bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId): bool

Каждый из методов подробнее расписан ниже.

Удалить триггеры для лида

bot.clearTriggerJobsForLead(?int $leadId)
Описание:

Удаляет все триггеры из очереди для лида.

Атрибуты:
Имя Тип Описание
leadId int ID лида, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsForLead(236178);

Удалить триггеры для всех лидов персоны

bot.clearTriggerJobsForAllPersonLeads(?int $personId)
Описание:

Удаляет все триггеры из очереди для всех лидов персоны.

Атрибуты:
Имя Тип Описание
personId int ID персоны, триггеры которой будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsForAllPersonLeads(36178);

Получить ID триггера по наименованию

bot.getTriggerIdByName(string $triggerName)
Описание:

Возвращает id триггера по указанному наименованию.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера
Возвращает:

int - id триггера в формате числа.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');

Запустить триггер для лида по ID триггера

bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true)
Описание:

Запускает триггер для лида по указанному id триггера.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
Возвращает:

bool - подтверждение запуска триггера.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.runTriggerForLead(TriggerId, 236178, null, true);

Запустить триггер для лида по наименованию

bot.runTriggerByNameForLead(?string $triggerName, ?int $leadId, ?int $ticketId = null, $addToQueue = true)
Описание:

Запускает триггер для лида по указанному имени триггера.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
Возвращает:

bool - подтверждение запуска триггера.

Пример:
bot.runTriggerByNameForLead('Триггер', 236178, null, true);

Запустить триггер для персоны по ID

bot.runTriggerForPerson(?int $triggerId, ?int $personId, ?int $ticketId = null, $addToQueue = true)
Описание:

Запускает триггер для персоны по указанному id триггера.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
Возвращает:

bool - подтверждение запуска триггера.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.runTriggerForPerson(TriggerId, 36178, null, true);

Запустить триггер для персоны по наименованию

bot.runTriggerByNameForPerson(?string $triggerName, ?int $personId, ?int $ticketId = null, $addToQueue = true)
Описание:

Запускает триггер для персоны по указанному имени триггера.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
Возвращает:

bool - подтверждение запуска триггера.

Пример:
bot.runTriggerByNameForPerson('Триггер', 36178, null, true);

Очистить джобы по id триггера

bot.clearTriggerJobsById(?int $triggerId)
Описание:

Выполняется поиск и очистка джоб по id триггера.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера
Возвращает:

bool - подтверждение очистки джоб.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsById(TriggerId);

Очистить джобы по наименованию триггера

bot.clearTriggerJobsByName(?string $triggerName)
Описание:

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

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearTriggerJobsByName('Триггер');

Очистить джобы по id триггера и ID заявки

bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId)
Описание:

Выполняется поиск и очистка джоб по id триггера и ID заявки.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера
ticketId int ID заявки, джобы которой будут очищены
Возвращает:

bool - подтверждение очистки джоб.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsByIdForTicket(TriggerId, 17256);

Очистить джобы по наименованию триггера и ID заявки

bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId)
Описание:

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

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера
ticketId int ID заявки, джобы которой будут очищены
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearTriggerJobsByNameForTicket('Триггер', 17256);