← К заметкам

Заметки

Как ITR-боту отправлять сообщения через заданное время

Чтобы бот написал через пять минут, не нужно держать обработчик события в sleep(300). Сохраните будущую отправку с BOT_ID, DIALOG_ID, временем и условием отмены, а текущий запрос завершите.

Внешний воркер либо агент коробки выбирает наступившие задания. Перед отправкой он проверяет, актуально ли напоминание: клиент мог уже ответить, оператор — закрыть диалог, а процесс — отменить ожидание.

Для классического API ботов сама отправка выглядит так:

BX24.callMethod('imbot.message.add', {
    BOT_ID: 42,
    DIALOG_ID: 'chat789',
    MESSAGE: 'Нужна ли ещё помощь?'
}, function (result) {
    if (result.error()) {
        console.error(result.error());
        return;
    }
    console.log(result.data());
});

Это только отправка из приложения, а не реализация таймера. В серверном воркере нужен REST-клиент с авторизацией приложения. Задание отмечают выполненным после успешного ответа, а два воркера не должны одновременно забирать одну запись. Для ITR-бота дополнительно учитывайте API и состояние сценария самого решения.