Заметки
Как отправлять несколько сообщений с задержкой в ОЛ
Как отправлять сообщения в открытую линию с задержкой: почему роботы неудобны, когда нужна очередь и агент.
Если нужно отправить несколько сообщений в открытую линию с паузами, не стоит строить это только на роботах. Надёжнее положить сообщения в очередь и разбирать её агентом или отдельным обработчиком.
Задача
Иногда после обращения клиента нужно отправить не одно сообщение, а цепочку: приветствие, уточнение, инструкцию и напоминание.
Паузы в роботах и БП могут сработать не так точно, как ожидается, а несколько параллельных роботов сложно контролировать. Для управляемой отправки лучше сделать очередь.
Очередь сообщений
Очередь хранит chat ID, текст, время отправки и статус обработки.
[
'CHAT_ID' => 789,
'MESSAGE' => 'Спасибо за обращение. Оператор скоро ответит.',
'SEND_AT' => '2026-07-04 17:10:00',
'STATUS' => 'new',
] В таблицу или HL-блок добавляются будущие сообщения. Агент периодически выбирает записи, где время отправки наступило, отправляет сообщение и меняет статус.
Отправка сообщения
Для обычного чата можно использовать im.message.add, а для собственного коннектора — логику исходящего канала.
BX24.callMethod(
'im.message.add',
{
DIALOG_ID: 'chat789',
MESSAGE: 'Напоминание по обращению',
},
function (result) {
console.log(result.error() || result.data());
}
); Если сообщение должно идти от имени бота, смотрите методы чат-ботов. Если это сообщение во внешний канал, коннектор должен отправить его через API внешнего сервиса.
Агент вместо sleep
Не используйте sleep в обработчике запроса, особенно на проде.
sleep держит PHP-процесс и плохо масштабируется. Агент или cron-задача работают устойчивее: запрос быстро завершился, а отправка произошла позже отдельной итерацией.