Отложенные действия (ОД)
ОД — Отложенное действие, которое можно запустить после выполнения пользователем любого действия, связанного с ботом.
Назначение
Отложенные действия позволяют выполнить набор реакций через некоторое время после наступления события. Используется для:
- Напоминаний и уведомлений
- Отложенной отправки сообщений
- Автоматических действий через заданный интервал
- Длительных операций (обработка данных, интеграции)
Настройки
| Функция | Описание |
|---|---|
| Название | Техническое название, которое видят только администраторы |
| Режим работы | Отложенные действия могут работать в нескольких режимах |
| Отсрочка | Настройка времени срабатывания ОД |
| Динамическая отсрочка | Выбор режима работы ОД |
| Данные | Сохранение данных из контекста доступного перед запуском ОД |
| Сохранять завершенные | Сохранение результатов выполненных работ |
| Удалить | Удаление отложенного действия |
Передача данных в отложенное действие
При запуске отложенного действия через реакцию StartTask вы можете передать данные в параметре «Данные». Эти данные будут доступны внутри отложенного действия через переменную ${task.data}.
Формат данных
Параметр «Данные» принимает JSON-объект:
{
"user_id": 123456789,
"message": "Напоминание о встрече",
"chat_id": -100123456789
}
Пример передачи данных
Реакция StartTask:
| Параметр | Значение |
|---|---|
| Отложенное действие | send_reminder |
| Данные | {"user_id": ${user.id}, "message": "Не забудьте подтвердить заказ"} |
Внутри отложенного действия send_reminder:
| Переменная | Значение |
|---|---|
${task.data.user_id} |
ID пользователя |
${task.data.message} |
Текст напоминания |
Пример реакции внутри ОД:
SendMessage →
chat_id: ${task.data.user_id}
Текст: ${task.data.message}
Использование переменных в данных
Вы можете использовать переменные и макросы внутри JSON:
{
"user_id": ${user.id},
"amount": ${var.person.balance},
"time": "!{time|value:now; output_format:DD.MM.YYYY hh:mm}"
}
Режим работы
| Режим | Описание |
|---|---|
| Режим по умолчанию | запускает ОД, при попытке повторного запуска ОД ничего не произойдет |
| Режим замены | запускает ОД, при повторном запуске перезапускает работающее ОД |
| Режим добавления | запускает ОД, при повторном запуске создает еще одно ОД, не отменяя ранее запущенные |
Триггер
Главный раздел, здесь необходимо указывать все реакции, которые должно выполнить ОД.
Подробнее о реакциях можно узнать в разделе Реакции.
⚠️ Частые ошибки и их решение
Ошибка 1: Данные не передаются
Причина: В параметре «Данные» указан невалидный JSON.
Решение: Проверьте синтаксис JSON. Убедитесь, что все строки заключены в кавычки, а запятые расставлены правильно.
❌ Неправильно:
{user_id: ${user.id}, message: текст}
✅ Правильно:
{"user_id": ${user.id}, "message": "текст"}
Ошибка 2: Отложенное действие не срабатывает
Причина: Неверно указано время отсрочки.
Решение: Проверьте формат времени в настройках ОД. Используйте макрос !{time} для динамической отсрочки.
Ошибка 3: ОД срабатывает несколько раз
Причина: Неправильно выбран режим работы.
Решение:
- Для однократного выполнения используйте «Режим по умолчанию»
- Для обновления времени используйте «Режим замены»
Ошибка 4: Данные потеряны при перезапуске ОД
Причина: В режиме замены данные обновляются при каждом запуске.
Решение: Убедитесь, что в режиме замены данные передаются корректно при каждом вызове StartTask.
🔗 Связанные разделы
- StartTask — запуск отложенного действия
- StopTask — остановка отложенного действия
- Макрос time — для динамической отсрочки