function 'QUEUE_MEMBER'

Функция Asterisk QUEUE_MEMBER выдает статистику и статус агентов обслуживающих очередь.

Описание

Предоставляет доступ к счетчикам очереди (только чтение)
и информации о агентах очереди (чтение/запись).

  • <queuename> - требуется для всех операция
  • <interface> - только о конкретном пользователе.

Синтаксис

QUEUE_MEMBER(queuename,option[,interface])

Аргументы

option

  • logged - Возвращает кол-во обслуживающих указанную очередь зарегистрированных агентов.
  • free - Возвращает кол-во свободных агентов, включая агентов не принимающих вызовы, до истечения wrapuptime.
  • ready - В отличии от free, возвращает кол-во свободных агентов, готовых немедленно принять вызов.
  • count - Возвращает общее кол-во агентов очереди, включая неактивных.
  • penalty - Устанавливает или получает пенальти для пользователя(агента) очереди.
  • paused - Получает статус паузы агента.
  • ringinuse - Получает статус параметра ringuse.
пример:

Рассмотрим пример использования функции QUEUE_MEMBER.
Обновим в БД информацию о состоянии агентов очереди,
каждый раз, когда какой-либо агент входит, выходит или устанавливает
или отменяет паузу в обслуживание очереди.

Дано: 4-ре очереди номер q1,q2,q3 и q4 обслуживаются динамическими агентами.
Агенты набирают 3-х значный код операций очереди.

mysql

 CREATE TABLE queuemember_status (queueid varchar(8), logged  varchar(8), free  varchar(8), ready  varchar(8), count  varchar(8));

extconfig.conf

 queuemember_status=odbc,sql3,queuemember_status

dialplan - agent logged off, logged on, pause, unpause

где:
${CALLERID(num)} - номер агента
q${EXTEN:0:1} - id очереди

[from-agent]
exten => _[1234]00,1,Noop(agent logged off)
   same => n,Set(queueN=q${EXTEN:0:1})
   same => n,RemoveQueueMember(${queueN},SIP/${CALLERID(num)})
   same => n,PlayBack(ru/agent-loggedoff)
   same => n,GoSub(sub-renew-queuemember,s,1(${queueN}))

exten => _[1234]01,1,Noop(agent logged on)
   same => n,Set(queueN=q${EXTEN:0:1})
   same => n,AddQueueMember(${queueN},SIP/${CALLERID(num)})
   same => n,PlayBack(ru/agent-loginok)
   same => n,GoSub(sub-renew-queuemember,s,1(${queueN}))

exten => _[1234]02,1,Noop(agent pause)
   same => n,Set(queueN=q${EXTEN:0:1})
   same => n,PauseQueueMember(${queueN},SIP/${CALLERID(num)})
   same => n,PlayBack(ru/agent-loggedoff)
   same => n,GoSub(sub-renew-queuemember,s,1(${queueN}))

exten => _[1234]03,1,Noop(agent unpause)
   same => n,Set(queueN=q${EXTEN:0:1})
   same => n,UnpauseQueueMember(${queueN},SIP/${CALLERID(num)})
   same => n,PlayBack(ru/agent-loginok)
   same => n,GoSub(sub-renew-queuemember,s,1(${queueN}))
   
   
[sub-renew-queuemember]
exten => s,1,Noop(renew queuemember)     
   same => n,set(REALTIME(queuemember_status,queueid,${queueN},logged)=${QUEUE_MEMBER(${queueN},logged)})
   same => n,set(REALTIME(queuemember_status,queueid,${queueN},free)=${QUEUE_MEMBER(${queueN},free)})
   same => n,set(REALTIME(queuemember_status,queueid,${queueN},ready)=${QUEUE_MEMBER(${queueN},ready)})
   same => n,set(REALTIME(queuemember_status,queueid,${queueN},count)=${QUEUE_MEMBER(${queueN},count)})
   same => n,hangup
 

см. также

Asterisk: функции диалплана

~~socialite~~

  • asterisk/func/queue_member.txt
  • Последние изменения: 2016/12/17