Задача — сделать так, чтобы каждый новый диалог автоматически уходил тому оператору, у которого сейчас меньше всего открытых обращений, причём считать нужно именно активные диалоги в моменте, а не факт нахождения в сети. Отдельно нужен блок с ожиданием: до того как посетитель отправит сообщение, он должен видеть примерную оценку, сколько придётся подождать ответа, — эта цифра должна пересчитываться по текущей очереди и скорости работы операторов. И третье условие, которое для меня не менее важно, — вся переписка, даже если диалог перекидывали между разными операторами, должна прикрепляться к карточке конкретного клиента в нашей базе, чтобы при повторном обращении был виден полный контекст, а не пустая история.
Рассматриваю варианты как на базе уже используемого чат-сервиса, если у него есть подходящие настройки маршрутизации, так и с доработками силами разработчика. При отклике расскажите, с какими похожими задачами уже сталкивались и какой инструмент предложите.
Кратко, что должно получиться в итоге:
— диалог всегда достаётся наименее загруженному оператору
— посетитель видит время ожидания ещё до отправки сообщения
— история переписки полностью сохраняется в карточке клиента
— корректная работа даже когда все операторы заняты или не на месте