Быстрее распределяйте задачи с помощью мультирезервирования TaskRouter

Автор: | 02.08.2026

Мы создали TaskRouter, чтобы помочь клиентам решить повторяющуюся проблему: сопоставление задач с нужными людьми или процессами, которые могут лучше всего с ними справиться. Разработчики начали использовать TaskRouter для создания многоканальных колл-центров и сложных интеграций с CRM. Сегодня мы рады объявить об улучшении TaskRouter, которое позволяет распределять задачи и выполнять их ещё быстрее.

Мы узнали от клиентов, что некоторые задачи выигрывают от модели распределения «первый откликнувшийся». Это может быть связано с тем, что задача имеет очень короткий срок жизни и требует немедленного выполнения, или потому что задача просрочена (например, TaskRouter переместил её в очередь задач «срочные и просроченные»). В любом случае желаемое поведение — предложить задачу нескольким сотрудникам, чтобы её получил тот, кто откликнется первым.

По умолчанию TaskRouter резервирует одного доступного сотрудника, ждёт, пока он примет или отклонит задачу, а затем переходит к следующему сотруднику в случае отказа. Жизненный цикл задачи выглядит так:

*Задача создана → назначена на рабочий процесс → направлена в очередь задач → сотрудник зарезервирован → резервирование принято → задача назначена сотруднику*

Начиная с сегодняшнего дня новая функция мультирезервирования TaskRouter предлагает задачу группе подходящих сотрудников, позволяя первому принявшему её выполнить работу. Разработчики могут настроить это поведение, изменив новое свойство ресурса TaskQueue под названием MaxReservedWorkers.

Свойство MaxReservedWorkers указывает очереди задач максимальное количество сотрудников, которых можно зарезервировать для одной задачи. По умолчанию оно равно 1, что соответствует классическому поведению TaskRouter. Теперь разработчики могут увеличить это значение до максимума в 50.

Рассмотрим пример, вдохновлённый кратким руководством по TaskRouter, где у нас есть очередь задач и два сотрудника — Алиса и Боб. Посмотрим, что произойдёт, если MaxReservedWorkers установлено на 5, а задача поступает.

Если Боб и Алиса свободны, TaskRouter создаст два резервирования — по одному для каждого сотрудника. Веб-приложение получит два HTTP-запроса на URL-адрес обратного вызова назначения рабочего процесса: один для резервирования Боба, другой — для Алисы. Теперь веб-приложению предстоит сообщить TaskRouter, какой сотрудник примет резервирование. Допустим, это будет Алиса.

Чтобы указать, что Алиса приняла задачу, веб-приложение отправит HTTP POST-запрос к ресурсу Reservation:

Изучив ответ от TaskRouter, мы видим, что резервирование задачи было принято, а сама задача назначена сотруднику Алисе:

Возможно, и Алиса, и Боб хотели бы принять задачу, но Алиса оказалась быстрее. Если Боб попытается принять резервирование, HTTP-запрос завершится ошибкой с кодом 410 Gone. Это происходит потому, что резервирование Боба больше недействительно. Как только Алиса приняла своё резервирование, резервирование Боба стало неактуальным и было удалено.

Мы рады этому улучшению TaskRouter и надеемся, что теперь вы сможете распределять и выполнять задачи быстрее, чем когда-либо. Для получения дополнительной информации о том, как работает эта новая функция, ознакомьтесь с документацией по TaskQueue и Worker.js.