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
см. также
~~socialite~~