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:
  1. _10X - расширение, где 10 уникальный код функции, а X идентификатор очереди
  2. Set(queueN=q${EXTEN:0:1}) - задает переменную с именем очереди, q + X
  3. 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

См. также

Команды диалплана Asterisk

  • asterisk/app/addqueuemember.txt
  • Последние изменения: 2018/12/07