Asterisk app AddQueueMember
Приложение диалплана Asterisk: Динамическое добавление интерфейса для обработки очереди вызовов.
Описание
AddQueueMember(queuename[[,interface[[,penalty[[,options[[,membername[[,stateinterface]]]]]))
Команда динамически добавляет интерфейс в существующую очередь вызовов, для обработки поступающих в нее вызовов (интерфейс как бы регистрируется в очереди вызовов, так же как агент, с использованием команды AgentCallbackLogin).
Аргументы
- queuename - имя очереди вызовов, в которую необходимо добавить интерфейс.
- interface - Название интерфейса для добавления в очередь, если не указано, используется текущий интерфейс.
- penalty - Целое число большее или равное нулю, доступные участники, обрабатывающие очередь, с меньшим значением пенальти получают вызовы в первую очередь.
- options: (версии 1.2+)
- j - Если заданный интерфейс уже обрабатывает поступающие вызовы данной очереди и существует команда с приоритетом n+101, тогда с нее продолжиться выполнение команд плана набора. Иначе, команда выйдет с кодом ошибки.
- В версии 1.6+ нет значений для поля «options», т.к. параметр «j» был удален, но, если необходимо указать остальные параметры, то этот аргумент должен быть указан как пустой параметр: ,,
- membername - имя для участника обработки очереди, под которым он будет добавлен.
- stateinterface - альтернативный интерфейс, который будет использоваться для определения состояния участника обработки очереди.
Код возврата
При возникновении ошибки возвращает -1.
По завершению выполнения, команда также установит переменную AQMSTATUS в одно из значений:
- ADDED
- MEMBERALREADY
- NOSUCHQUEUE
Пример:
AddQueueMember(sales,PJSIP/2666)
Используя вариант этой команды: AddQueueMember(<queuename>), вы добавите интерфейс, c которого совершается вызов, в список операторов очереди. <queuename> - это имя очереди вызовов, описанной в файле queues.conf
пример 2:
- _10X - расширение, где 10 уникальный код функции, а X идентификатор очереди
- Set(queueN=q${EXTEN:0:1}) - задает переменную с именем очереди, q + X
- AddQueueMember(${queueN},Local/${CALLERID(num)}@from-queue/n) - добавить интерфейс Local/вызывающий абонент в очередь qX.
exten => _10X,1,Noop(agent logged on) same => n,Set(queueN=q${EXTEN:0:1}) same => n,AddQueueMember(${queueN},Local/${CALLERID(num)}@from-queue/n) same => n,PlayBack(ru/agent-loginok)
*CLI> queue show q1 q1 has 0 calls (max 11) in 'random' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s Members: Local/4887@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken no calls yet No Callers
Пример 2: Добавляем виртуальных агентов
exten => _77XXX,1,addqueuemember(q_test,,,,${EXTEN:2}) same => n,gotoif($["${AQMSTATUS}" == "ADDED"]?success:fail) same => n(success),playback(ru/agent-loginok) same => n(success),wait(1) same => n(success),hangup same => n(fail),playback(ru/agent-alreadyon) same => n(fail),wait(1) same => n(fail),hangup exten => _66,1,removequeuemember(q_test,${CHANNEL(channeltype)}/${CALLERID(num)}) same => n,gotoif($["${RQMSTATUS}" == "REMOVED"]?success:fail) same => n(success),playback(ru/agent-loggedoff) same => n(success),wait(1) same => n(success),hangup same => n(fail),playback(ru/agent-incorrect) same => n(fail),wait(1) same => n(fail),hangup
См. также