Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

QUEUE_NO_MEMBERS_AVAIL IP-Телефония и СКУД

Настройка очередей вызовов (Queues) в Asterisk: стратегии ringall, roundrobin, leastrecent

Обновлено: 24.08.2026 · Официальная документация ↗
  • Вызовы зависают в очереди и сбрасываются по таймауту без распределения на свободных операторов.
  • Звонок поступает оператору, который уже разговаривает по другой линии (Call Waiting collision).
  • Неравномерная нагрузка на сотрудников колл-центра (одни принимают в 3 раза больше звонков, чем другие).
  • Вызовы попадают в очередь, когда в ней нет ни одного зарегистрированного оператора (Joinempty violation).

1. Обзор основных стратегий распределения (Strategy)

  • ringall: звонят все доступные операторы одновременно (наибольшая нагрузка на сеть).
  • leastrecent: вызов направляется оператору, который дольше всех не принимал завершенный звонок.
  • fewestcalls: звонит оператор с наименьшим количеством принятых вызовов за смену.
  • rrmemory (Round Robin with Memory): поочередный перебор операторов по кругу с запоминанием последней позиции.
  • linear: строгий обзвон по порядку списка операторов.
  • wrandom: случайный выбор с учетом индивидуального весового коэффициента оператора (penalty).

2. Настройка queues.conf

Файл /etc/asterisk/queues.conf:

[general]
persistentmembers=yes
autofill=yes
monitor-type=MixMonitor
shared_lastcall=yes

; --- Очередь техподдержки ---
[support_queue]
strategy=leastrecent
timeout=15
retry=2
wrapuptime=20
maxlen=50
servicelevel=60
joinempty=no
leavewhenempty=yes
ringinuse=no
announce-frequency=45
announce-holdtime=yes

; Статические операторы (Интерфейс, Приоритет/Штраф)
member => PJSIP/101,0
member => PJSIP/102,0
member => PJSIP/103,1

3. Логика диалплана в extensions.conf

[from-internal]
; Вход в очередь
exten => 700,1,NoOp(Incoming call to Support Queue)
 same => n,Answer()
 same => n,Queue(support_queue,tTkK,,,120)
 same => n,Playback(queue-periodic-announce)
 same => n,Hangup()

; Динамический вход оператора (Login/Logout)
exten => *71,1,NoOp(Dynamic Agent Login)
 same => n,AddQueueMember(support_queue,PJSIP/${CALLERID(num)})
 same => n,Playback(agent-loginok)
 same => n,Hangup()

exten => *72,1,NoOp(Dynamic Agent Logout)
 same => n,RemoveQueueMember(support_queue,PJSIP/${CALLERID(num)})
 same => n,Playback(agent-loggedoff)
 same => n,Hangup()

4. Проверка состояния очереди в CLI

asterisk -rx "queue show support_queue"
💡 Практика специалистов: Всегда включайте shared_lastcall=yes в секции [general] queues.conf, если один и тот же оператор обслуживает несколько разных очередей — это предотвратит поступление звонка из второй очереди во время post-call wrapup из первой.

Частые вопросы (FAQ)

Зачем нужен параметр wrapuptime?

wrapuptime задает постобработочное время (в секундах) после завершения разговора, в течение которого оператору не будут поступать новые вызовы из очереди, позволяя ему внести данные в CRM.

Почему оператору идет второй звонок из очереди во время разговора?

Убедитесь, что в queues.conf выставлен параметр ringinuse=no, а на PJSIP Endpoint абонента включен device state tracking и call_counter=yes.

Что означает штраф (Penalty) у оператора?

Штраф — это целое число. Очередь сначала пытается дозвониться до всех доступных агентов со штрафом 0. Если ни один агент со штрафом 0 не ответил или они заняты, вызов переходит к агентам со штрафом 1 и выше.

Что делает параметр autofill=yes?

Без autofill первый вызов в очереди блокирует распределение последующих вызовов до своего ответа. autofill=yes позволяет второму абоненту в очереди сразу соединиться со вторым свободным оператором параллельно.

Полезные материалы
Рекомендуем