Кастомизация для переопределения максимального времени ожидания и других параметров очереди
В статье рассматривается механизм переопределения параметров очередей во 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).
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.
[pre-queue-400]
exten => s,1,NoOp(переопределяется установленное в очереди 400 значение максимального времени ожидания — меняется на 120 сек)
same => n,Set(VQ_MAXWAIT=120)
same => n,Goto(ext-queues,400,1)

Также для прохождения вызовов попеременно на каких-либо определенных агентов одной и той же очереди можно использовать 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)

Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
База знаний
IP-АТС
Оборудование
О нас




