Создание очередей на примере Asterisk 1.6
Здравствуйте.
Для того, что бы более эффективно распределять звонки в офисе в Asterisk присутствует возможность создания очередей обработки звонка. Особенно эта функция актуальна для рекламных отделов компаний.
Будем считать, что у вас уже установлен и настроен Asterisk версии 1.6 и выше
Для начала расмотрим как описываются очереди (Queues)
Code queues.conf: ...... [queue_template](!) musicclass=default ; play [default] music strategy=rrmemory ; использовать стратегию обзвона Round Robin Memory joinempty=yes ; загонять звонок в очередь если там отсутствуют агенты leavewhenempty=no ; оставлять очередь без агентов ringinuse=no ; звонить на члена очереди когда он занят ? [sales](queue_template) ; Sales queue [support](queue_template) ; Support queue |
В данном примере мы создали шаблон queue_template и на базе шаблона создали 2 очереди: sales и support.
Теперь приступим к написанию диалплана.
Для этого нам нужно описать, как абоненты будут попадать в очередь, а также как логиниться и вылогиниваться из очереди агентам.
Пример 1:
Code extensions.conf ;описываем диалплан для логина в очередь exten => 8101,1,Answer exten => 8101,2,AddQueueMember(sales) ; если агент уже залогинен - переходим на приоритет +101 exten => 8101,3,Playback(agent-loginok) exten => 8101,4,Hangup exten => 8101,103,RemoveQueueMember(sales) exten => 8101,102,Playback(agent-loggedoff) exten => 8101,105,Hangup exten => 8102,1,Answer exten => 8102,2,AddQueueMember(support) exten => 8102,3,Playback(agent-loginok) exten => 8102,4,Hangup exten => 8102,103,RemoveQueueMember(support) exten => 8102,102,Playback(agent-loggedoff) exten => 8102,105,Hangup ;обрабатываем входящие вызовы и запускаем их в очередь обработки exten => 0441112233,1,Answer exten => 0441112233,n,Playback(welcome) exten => 0441112233,n,Queue(sales) ; Вызовы от важных клиентов exten => 0441112234,1,Answer exten => 0441112234,n,Playback(welcome) exten => 0441112234,n,SetVar(QUEUE_PRIO=10) exten => 0441112234,n,Queue(support) ; Вызовы от менее важных клиентов exten => 0441112235,1,Answer exten => 0441112235,n,Playback(welcome) exten => 0441112235,n,SetVar(QUEUE_PRIO=5) exten => 0441112235,n,Queue(support) |
Если очередей намечается много, то диалплан по входу агентов можно вынести в макрос, что сократит код и улучшит читабельность:
Code extensions.conf [macro-queueloginout] exten => s,1,Answer exten => s,2,AddQueueMember(${ARG1}) ; если агент уже залогинен - переходим на приоритет +101 exten => s,3,Playback(agent-loginok) exten => s,4,Hangup exten => s,103,RemoveQueueMember(${ARG1}) exten => s,102,Playback(agent-loggedoff) exten => s,105,Hangup [default] exten => 8101,1,Macro(queueloginout|sales) exten => 8102,1,Macro(queueloginout|support) exten => 8103,1,Macro(queueloginout|market) ;обрабатываем входящие вызовы и запускаем их в очередь обработки exten => 0441112233,1,Answer exten => 0441112233,n,Playback(welcome) exten => 0441112233,n,Queue(sales) ; Вызовы от важных клиентов exten => 0441112234,1,Answer exten => 0441112234,n,Playback(welcome) exten => 0441112234,n,SetVar(QUEUE_PRIO=10) exten => 0441112234,n,Queue(support) ; Вызовы от менее важных клиентов exten => 0441112235,1,Answer exten => 0441112235,n,Playback(welcome) exten => 0441112235,n,SetVar(QUEUE_PRIO=5) exten => 0441112235,n,Queue(support) |