Я работал на подобных системах раньше. Мы взяли тактику на то, чтобы распорядиться распространением информации о людях в центре обработки вызовов. Как правило, у нас было ограничение по времени, в течение которого лиду было разрешено находиться в какой-либо одной очереди пользователей, прежде чем он был удален и передан кому-то еще.
Это позволило нам сделать несколько довольно сложных вещей, таких как предоставление предпочтений, основанных на деталях о лидерстве, а также производительности отдельных сотрудников центра обработки вызовов.
У нас было очень большое количество отведений, и наша программа распределения работала раз в минуту. Соглашение об уровне обслуживания было установлено таким образом, чтобы через 2 минуты мы узнали о нем.
Чтобы поддержать это, ваша таблица лидов должна иметь AssignedUserId и, вероятно, метку даты / времени, когда она была назначена. Напишите proc или какой-нибудь код на C #, который захватывает все записи из этой таблицы, которые не назначены. Выполните процедуру назначения, сохранив изменения обратно в таблицу. Эта процедура, вероятно, должна учитывать, сколько лидов они работают в настоящее время, и допустимое количество открытых лидов на человека, чтобы отдавать предпочтение при распределении по кругу.
Когда пользователь обновится, у него будут свои лиды. Вы можете контролировать частоту обновления в пользовательском интерфейсе.