У меня есть вот такой триггер - это is_periodic, который запускается раз в сутки.
let runAt = new Date();
runAt.setSeconds(runAt.getSeconds() + interval_sec)
// Планируем выполнение триггера
let jobParams = {
"trigger_code": "survey_reminder",
//"script_code": "temporary",
"lead_id": findLeadForUser(user_id),
"condition_script_code": "",
"run_at": runAt,
"is_periodic" : true,
"repeat_interval_sec": interval_sec,
"script_request_params": {
"survey_id": survey_id,
"user_id": user_id
}
};
// Создаем задачу для планировщика
let result = bot.scheduleJob(jobParams)
В кондишене проверяю не ответил ли юзер на опрос и если нет ,то высылю ему напоминалку, в противном случае, если ответил - мне надо
Вот условие:
survey_reminder:Напоминание о незавершённом опросе
snippet('Business.Surveys.Reminders')
let surveyId = request.json.survey_id
let userId = request.json.user_id
let result = surveyReminderCondition(surveyId, userId)
if (result) {
// Отправляем скрипт
return true
} else {
// Останавливаем все периодические триггеры
bot.clearTriggerJobsByName("survey_reminder", lead.getAttr("id"))
}
// Ничего не отправляем пользователю
return false
Все работает хокей в том плане что когда юзер дал ответ на опрос, то все - ему не присылается напоминание.
НО! почему процесс висит в Jobs Queue на сервере? Как его остановить?
И почему вот такой код возвращает false ?
/**
* Останавливает напоминания для опроса и пользователя.
* @param {number} survey_id - ID опроса.
* @param {number} user_id - ID пользователя.
* @returns {boolean} Возвращает true, если напоминания успешно остановлены, иначе false.
*/
function stopSurveyReminder(survey_id, user_id) {
// Находим лида по user_id
let leadId = findLeadForUser(user_id)
if (!leadId) {
return false // Если лида не найдено, возвращаем false
}
// Останавливаем триггеры напоминаний для данного лида
let result = bot.clearTriggerJobsByName("survey_reminder", leadId)
debug(result)
return result
}
Как будто не находит триггер. Что я делаю не так или это какой то баг?
Спасибо за помощь!