Анастасия Грушко
19.01.2026
297

Кастомизация для переопределения максимального времени ожидания и других параметров очереди

В статье рассматривается механизм переопределения параметров очередей во FreePBX с помощью переменных VQ_. Показано, как динамически изменять настройки очереди во время одного и того же вызова: максимальное время ожидания, музыку удержания, приоритет абонента, параметры failover и другие опции. Приведены практические примеры диалплана Asterisk, включая сценарий циклического перехода между очередями с разным временем ожидания и изменение позиции звонящего в очереди.

Одним из часто использующихся во входящей маршрутизации объектов являются очереди — группы номеров, объединенных одной стратегией. Во FreePBX управление очередями осуществляется с помощью модуля Queues. Подробное описание модуля см. в статье

В веб интерфейсе можно настроить постоянные параметры какой либо очереди.

Если необходимо переопределить установленные в очереди параметры, например, чтобы параметры одной и той же очереди менялись на протяжении одного и того же вызова, необходимо использовать переменные с префиксом VQ_, устанавливая их значение перед входом в очередь. В контексте ext-queues проверяется установлено ли значение переменной с префиксом VQ_. Если есть — значение параметра очереди берется из этой переменной, если нет — берется установленное через модуль Queues значение (в веб интерфейсе для настройки очередей перейти Applications → Queues) . Например, если вызовы должны переходить по кругу между разными очередями, но в первый раз должно быть установлено другое время ожидания в очереди, либо, если до ответа оператором и после ответа и постановки на удержание должна быть разная музыка ожидания, либо, если разным группам звонивших при попадании в одну и ту же очередь необходимо проигрывать разную музыку ожидания.

В примерах использовалась виртуальная машина с ОС CentOS Linux release 7.6.1810; ПО:
Asterisk 13.27.1, FreePBX 13.0.192.19.

Для вывода итогового диалплана, который будет выполнен, необходимо пользоваться
командой Asterisk CLI dialplan show экстеншен@контекст ,так как системный диалплан
может быть переопределен и разнесен по разным файлам. Например, вывести диалплан,
выполняющийся при вызове на «600» из контекста «from-internal» asterisk -rx ‘dialplan show
600@from-internal’.

Переменные, установив значение которых, можно
переопределить настройки очереди

  • VQ_DEST — установленное перед входом в очередь значение этой переменной
    переопределяет fail over destination, установленное у очереди в веб интерфейсе (назначение, куда попадает вызов после выхода из очереди).
  • Если переменная VQ_DEST не задана, берется значение, установленное у очереди в веб интерфейсе.
  • VQ_MAXWAIT — установленное перед входом в очередь значение этой переменной переопределяет максимальное время ожидания (переписывает установленное в очереди).
  • VQ_CIDPP — назначение CID name Prefix — добавления к имени вызывающего абонента определенного имени(напр. названия очереди — «продажи:»).
  • VQ_AINFO – назначение прописанной мелодии вызова (проигрываемой на самой трубке). Используется для того чтобы пользователи могли по звуку звонка, например, различать вызовы на очередь и вызовы, прошедшие напрямую на добавочный.
  • VQ_JOINMSG — назначение Join Announcement — проигрываемого звонящему перед присоединением к очереди сообщения.
  • VQ_RETRY — установленное в этой переменное значение добавляется в queue options (второй параметр приложения Queue)
  • VQ_OPTIONS — переопределяет queue options, установленные в очереди
  • VQ_GOSUB – устанавливает контекст, в который будет осуществлен вход после ответа оператором и возврат назад с помощью приложения Gosub. Gosub запустится на канале вызываемой стороны (участнике очереди). Например, если перед входом в очередь установлено значение переменной VQ_GOSUB=context, то после ответа оператором на канале вызываемой стороны произойдет вход в контекст Gosub(context,s,1) и возврат в исходный.
  • VQ_AGI — задает AGI скрипт, который выполнится после ответа оператором. По умолчанию директория, в которой находятся agi скрипты — /var/lib/asterisk/agi-bin/. Об использовании AGI скриптов см. статьи https://voxlink.ru/kb/book/interfejs-shljuza-asterisk-agi/https://voxlink.ru/kb/asterisk-configuration/ispolzovanie-agi-skriptov-v-dialplane-asterisk/
  • VQ_RULE — задает правила, прописанные в файле queuerules.conf
  • VQ_POSITION – назначает позицию попавшему в очередь
  • VQ_CONFIRMMSG — переопределяет установленное значение Call Confirm Announce (сообщение перед поступлением вызова)
  • VQ_AANNOUNCE — переопределяет Agent Announcement (звуковой файл для оператора)
  • VQ_MOH – переписывает установленные в очереди параметры, устанавливает музыку
  • ожидания.

Пример. Переход вызова по кругу между очередями с
переназначением максимального времени ожидания

Если необходимо, чтобы вызов, например, проходил на очередь и оставался в ней одно время,
а затем попеременно переходил между второй и первой очередью, то есть:
вызов на внешний номер → очередь 1 (на 120 сек) → очередь 2 (на 20 сек) —> очередь 1 (на
20 сек) —> очередь 2 (на 20 сек) .—> очередь 1 (на 20 сек) —> очередь 2 (на 20 сек) и т. д.
В этом случае в веб интерфейсе необходимо установить в очередях время пребывания в
очереди (Max Wait Time) 20 сек. А для того, чтобы в первый раз вызов оставался в перой
очереди не 20, а 120 сек, нужно перед попаданием в очередь (перед выполнением
приложения Queue по диалплану и установкой значения переменной QMAXWAIT в
контексте ext-queues) устанавливать значение переменной VQ_MAXWAIT, переопределяя
установленное в очереди значение максимального времени пребывания (Max Wait Time).

В веб интерфейсе FreePBX для настройки максимальное времени пребывания в очереди (максимальное время ожидания) необходимо перейти:
Applications (приложения) → Queues (очереди) → Timing&Agent Options (параметры времени и операторов).

Для осуществления такого прохождения вызовов настроить маршрутизацию нужно
следующим образом
Inbound route(входящий маршрут) → Custom destination pre-queue-400 (пользовательский
контекст), где устанавливается VQ_MAXWAIT=120 (сек) → Queue (очередь 1) → Queue
(очередь 2)
Для зацикливания вызова между очередями 1 и 2 у очереди 2 в Fail Over Destination
(назначение по неответу, когда истекло установленное максимальное время пребывания в
очереди — max wait time) должна быть очередь 1, у очереди 1 в Fail Over Destination должна
быть очередь 2.

Для тестирования (направления тестовых звонков в нужный контекст по набору фьючер кода), можно использовать модуль Misc Applications. Подробнее в статье
[pre-queue-400]
exten => s,1,NoOp(переопределяется установленное в очереди 400 значение максимального времени ожидания — меняется на 120 сек)
same => n,Set(VQ_MAXWAIT=120)
same => n,Goto(ext-queues,400,1)
Рис.1. Fail over destination (назначение по неответу) в очереди

Также для прохождения вызовов попеременно на каких-либо определенных агентов одной и той же очереди можно использовать queue rules. См. статью «Использование правил очереди для динамического изменения состава вызываемых операторов»

Пример. Изменение позиции вызова, попавшего в очередь

В некоторых случаях, например, если вызовы, пришедшие на другой внешний номер должны оказываться выше в очереди, может быть необходимо изменить позицию звонящего, чтобы повысить приоритет и сделать вызов первым в очереди. Для этого необходимо перед попаданием в очередь (перед выполнением приложения Queue по диалплану и определением значения переменной QPOSITION в контексте ext-queues) установить значение переменной  VQ_POSITION=1. После входа в очередь у звонящего повысится приоритет и он станет первым ожидающим ответа оператора.

[pre-queue-400]
exten => s,1,NoOp(В контексте, позиция звонившего изменяется на первую. Далее вызов будет направлен на очередь 400)
same => n,Set(VQ_POSITION=1)
same => n,Goto(ext-queues,400,1)
Рис.2. Изменение позиции вызова, попавшего в очередь вызова (от 105)

Телефонная книга CallMetrix
Корпоративный телефонный справочник для удобной связи между сотрудниками организации
Скачать описание CallMetrix
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.