Простая очередь в asterisk

Если в компании существует отдельный колл-центр с операторами, задача которых принимать входящий поток звонков — имеет смысл отказаться от Dial() в пользу Queue(). Это позволит уравновесить количество принимаемых операторами звонков (за счёт стратегии обработки вызовов) и убрать из статистики лишние звонки, которые появляются при использовании Dial().

Сначала зададим настройки очереди в файле queues.conf:

 
[general]
persistentmembers = yes

[queue_callcenter]
music=default
strategy=rrmemory
timeout=10
ringinuse=yes
wrapuptime=10
servicelevel=60
member => SIP/101
member => SIP/102
member => SIP/103
member => SIP/104

Описание полей конфигурации:

persistentmembers = yes — набор операторов, принимающих вызовы, статичен

strategy — стратегия обработки вызова на стороне АТС. Возможные значения:

  • ringall: входящий вызов поступает сразу всем операторам (значение по умолчанию).
  • leastrecent: среди свободных операторов выбирается тот, который дольше всех не принимал вызовы.
  • fewestcalls: среди свободных операторов выбирается тот, который принял наименьшее количество вызовов.
  • random: оператор выбирается случайным образом.
  • rrmemory: циклическое распределение с памятью, запоминается последний участник, ответивший на вызов, далее распределение идет со сдвигом на единицу. Например — 1-2-3-4, 2-3-4-1, 3-4-1-2 и т.д.

timeout — указывается промежуток времени (в секундах), как долго вызов ожидает ответа у оператора. По истечении периода вызов уходит на следующего оператора (в соответствии со стратегией обработки). Не применяется при стратегии ringall, для ringall продолжительность задаётся в диалплане.

ringinuse — указывается, посылать ли вызов оператору со статусом «in use»

wrapuptime — указывается промежуток времени (в секундах), требуемый оператору на пост-обработку вызова. В течение этого промежутка звонки данному оператору поступать не будут.

servicelevel — указывается промежуток времени (в секундах), на основании которого будет считаться уровень обслуживания. Вызовы, которые будут отвечены менее, чем за 60 секунд (в данном примере) — попадут в заявленный sl; вызовы, которые будут отвечены спустя 60 секунд — не попадут.

Теперь добавим в диалплан (в контекст обработки входящих вызовов) добавим созданную нами очередь:

 
exten => s,n,Queue(queue_callcenter,t)

Теперь откроем консоль астериска и перезагрузим настройки очередей и диалплан:

 
$ asterisk -rvv
CLI> queue reload all
CLI> dialplan reload

Все, очередь заработала. Посмотреть статус очереди можно командой:

 
CLI> queue show queue_callcenter
queue_callcenter has 0 calls (max unlimited) in 'rrmemory' strategy (10s holdtime, 100s talktime), W:0, C:696, A:47, SL:90.7% within 60s
 Members: 
 SIP/101 (ringinuse enabled) (Not in use) has taken no calls yet
 SIP/102 (ringinuse enabled) (Not in use) has taken 31 calls (last was 149669 secs ago)
 SIP/103 (ringinuse enabled) (Not in use) has taken no calls yet
 SIP/104 (ringinuse enabled) (Not in use) has taken 143 calls (last was 60268 secs ago)

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *